Tutorial 2.2: Elasticsearch – Kibana Installation und Einrichtung
Dauer: 15 Minuten
Schwierigkeit: Anfänger
Voraussetzungen: Tutorial 2.1 abgeschlossen (Elasticsearch läuft)
Was du am Ende dieses Tutorials erreicht hast
✅ Kibana Container läuft
✅ Kibana ist mit Elasticsearch verbunden
✅ Du kannst auf http://localhost:5601 zugreifen
✅ Du kannst Dev Tools öffnen und nutzen
Voraussetzungs-Check
Bevor wir starten, prüfe:
bash
docker ps
```
**Du MUSST elasticsearch sehen:**
```
CONTAINER ID IMAGE STATUS PORTS NAMES
... elasticsearch:8.11.0 Up X minutes 0.0.0.0:9200->9200/tcp elasticsearch
Wenn nicht:
bash
docker start elasticsearch
<em># Warte 30 Sekunden, dann weiter</em>
Schritt 1: Kibana Container starten
Der Befehl
Mac/Linux:
bash
docker run -d \
--name kibana \
--net elastic \
-p 5601:5601 \
-e "ELASTICSEARCH_HOSTS=http://elasticsearch:9200" \
docker.elastic.co/kibana/kibana:8.11.0
Windows PowerShell:
powershell
docker run -d --name kibana --net elastic -p 5601:5601 -e "ELASTICSEARCH_HOSTS=http://elasticsearch:9200" docker.elastic.co/kibana/kibana:8.11.0
```
<em>### Parameter erklärt</em>
| Parameter | Was macht das? |
|-----------|----------------|
| `--name kibana` | Container heißt "kibana" |
| `--net elastic` | Im selben Netzwerk wie Elasticsearch |
| `-p 5601:5601` | Port 5601 für Web-Interface |
| `ELASTICSEARCH_HOSTS` | Wo findet Kibana Elasticsearch? |
<em>### Was passiert?</em>
1. Docker lädt Kibana herunter (ca. 800 MB)
2. Dauert 3-7 Minuten beim ersten Mal
3. Download-Fortschritt wird angezeigt
**Während des Downloads:**
```
Unable to find image 'docker.elastic.co/kibana/kibana:8.11.0' locally
8.11.0: Pulling from kibana/kibana
a2abf6c4d29d: Pull complete
...
Status: Downloaded newer image for docker.elastic.co/kibana/kibana:8.11.0
```
**Am Ende:** Lange Container-ID
```
a7f8e9d0c1b2a3f4e5d6c7b8a9f0e1d2c3b4a5f6e7d8c9b0a1f2e3d4c5b6a7f8
Schritt 2: Warten bis Kibana bereit ist
Kibana braucht 1-3 Minuten zum Starten (länger als Elasticsearch).
Container läuft?
bash
docker ps
```
**Jetzt solltest du BEIDE Container sehen:**
```
CONTAINER ID IMAGE STATUS PORTS NAMES
a7f8e9d0c1b2 kibana:8.11.0 Up 2 minutes 0.0.0.0:5601->5601/tcp kibana
f8a3d7e2c1b9 elasticsearch:8.11.0 Up 5 minutes 0.0.0.0:9200->9200/tcp elasticsearch
Logs anschauen
bash
docker logs -f kibana
```
**Am Anfang siehst du viele Zeilen:**
```
{"log.level":"info","message":"Kibana is starting..."}
{"log.level":"info","message":"Connecting to Elasticsearch..."}
{"log.level":"info","message":"Running migrations..."}
...
```
**Warte auf diese entscheidende Zeile:**
```
{"log.level":"info","message":"http server running at http://0.0.0.0:5601"}
```
**Wenn du das siehst → Kibana ist bereit!**
Drücke `Ctrl+C` (Kibana läuft weiter im Hintergrund).
---
<em>## Schritt 3: Kibana im Browser öffnen</em>
<em>### URL öffnen</em>
```
http://localhost:5601
```
**Beim ersten Aufruf:**
- Kann 20-30 Sekunden laden
- Zeigt "Kibana is loading" oder Ladebalken
- **Sei geduldig!**
---
<em>### Was du sehen solltest</em>
**Willkommensseite:**
```
┌─────────────────────────────────────────┐
│ │
│ 🔍 Welcome to Kibana │
│ │
│ [Explore on my own] [Add data] │
│ │
└─────────────────────────────────────────┘
```
**Klicke auf "Explore on my own"**
---
<em>## Schritt 4: Dev Tools öffnen</em>
Dev Tools ist **der wichtigste Bereich** für uns! Hier führen wir alle API-Befehle aus.
<em>### Methode 1: Über das Menü</em>
1. **Klicke auf das ☰ Hamburger-Menü** (oben links, drei horizontale Linien)
2. Scrolle nach unten zu **"Management"**
3. Klicke auf **"Dev Tools"**
<em>### Methode 2: Direkt-URL</em>
```
http://localhost:5601/app/dev_tools<em>#/console</em>
```
---
<em>## Schritt 5: Dev Tools Console verstehen</em>
<em>### Layout</em>
Die Dev Tools Console ist in 2 Bereiche geteilt:
```
┌─────────────────────┬──────────────────────┐
│ │ │
│ EDITOR │ RESPONSE │
│ (Links) │ (Rechts) │
│ │ │
│ Hier schreibst │ Hier siehst du │
│ du deine │ die Antworten │
│ Anfragen │ │
│ │ │
└─────────────────────┴──────────────────────┘
```
<em>### Standard-Beispiel</em>
Im Editor (links) sollte stehen:
```
GET _search
{
"query": {
"match_all": {}
}
}
```
---
<em>## Schritt 6: Erste Anfrage ausführen</em>
<em>### Test-Anfrage</em>
**Lösche** den vorhandenen Code und schreibe:
```
GET /
So führst du es aus:
- Option 1: Klicke auf den grünen ▶️ Play-Button (rechts neben der Zeile)
- Option 2: Drücke
Ctrl+Enter(Windows/Linux) oderCmd+Enter(Mac)
Erwartete Antwort
Rechts sollte erscheinen:
json
{
"name": "f8a3d7e2c1b9",
"cluster_name": "docker-cluster",
"cluster_uuid": "Xy7R3zN4...",
"version": {
"number": "8.11.0",
"build_flavor": "default",
"build_type": "docker",
...
},
"tagline": "You Know, for Search"
}
```
**"You Know, for Search" → Verbindung funktioniert!**
---
## Schritt 7: Cluster Health prüfen
### Anfrage
Schreibe (oder kopiere) in den Editor:
```
GET /_cluster/health
Drücke Ctrl+Enter oder klicke Play ▶️
Antwort
json
{
"cluster_name": "docker-cluster",
"status": "yellow", ← WICHTIG
"timed_out": false,
"number_of_nodes": 1,
"number_of_data_nodes": 1,
...
}
```
**Status "yellow" ist OK!**
- Wir haben nur 1 Node
- Replica Shards können nicht zugewiesen werden
- Für Entwicklung perfekt normal
---
## Schritt 8: Dev Tools Features testen
### Feature 1: Auto-Complete
1. Tippe `GET /_cat/`
2. Drücke `Ctrl+Space` (oder warte kurz)
3. **Liste erscheint** mit verfügbaren Endpunkten:
- `/_cat/indices`
- `/_cat/nodes`
- `/_cat/health`
- usw.
**Wähle mit Pfeiltasten oder Maus aus!**
---
### Feature 2: Multi-Request
Du kannst mehrere Anfragen untereinander schreiben:
```
# Request 1
GET /
# Request 2
GET /_cluster/health
# Request 3
GET /_cat/indices?v
```
**Cursor auf gewünschte Anfrage → `Ctrl+Enter`**
Nur diese wird ausgeführt!
**Alle nacheinander ausführen:**
`Ctrl+Shift+Enter` (Windows/Linux) oder `Cmd+Shift+Enter` (Mac)
---
### Feature 3: Kommentare
Du kannst Kommentare schreiben:
```
# Das ist ein Kommentar
GET /_cluster/health
# Cluster-Statistiken abrufen
GET /_cluster/stats
Zeilen mit # werden ignoriert.
Feature 4: History
Oben rechts: Klicke auf das 🕐 Uhr-Symbol
Zeigt: Deine letzten Anfragen
Klick auf eine: Wird in Editor geladen
Feature 5: Als cURL kopieren
Oben rechts: Klicke auf 🔧 Schraubenschlüssel-Symbol
Wähle: „Copy as cURL“
Bekommst:
bash
curl -XGET "http://localhost:9200/_cluster/health" -H 'Content-Type: application/json'
```
Kannst du im Terminal ausführen!
---
<em>## Schritt 9: Indizes anzeigen</em>
<em>### Anfrage</em>
```
GET /_cat/indices?v
```
Parameter `?v` = verbose (mit Spaltenüberschriften)
<em>### Antwort (noch keine Indizes)</em>
```
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
Liste ist leer → Normal! Wir haben noch keine Indizes erstellt.
Das kommt in Tutorial 2.3!
Erfolgskriterien
Überprüfe:
docker pszeigt elasticsearch UND kibana (beide „Up“)http://localhost:5601öffnet Kibana- Dev Tools Console ist erreichbar
GET /zeigt „You Know, for Search“GET /_cluster/healthzeigt „yellow“- Auto-Complete funktioniert (Ctrl+Space)
Alle Punkte ✅? Perfekt!
Troubleshooting
Problem: Kibana lädt endlos
Im Browser: „Kibana is loading…“
Lösung 1: Warten (kann 2-3 Minuten dauern)
Lösung 2: Logs prüfen
bash
docker logs kibana | tail -20
Suche nach Fehlern (rot markiert oder „ERROR“).
Lösung 3: Kibana neu starten
bash
docker restart kibana
<em># Warte 2 Minuten</em>
Problem: „Unable to connect to Elasticsearch“
In Kibana: Fehlermeldung
Ursache: Kibana findet Elasticsearch nicht
Lösung 1: Beide im selben Netzwerk?
bash
docker network inspect elastic
Sollte BEIDE Container zeigen.
Lösung 2: Elasticsearch läuft?
bash
docker ps | grep elasticsearch
<em># Sollte "Up" sein</em>
<em># Teste Elasticsearch direkt</em>
curl http://localhost:9200
Lösung 3: Kibana mit richtiger Config neu starten
bash
docker stop kibana
docker rm kibana
docker run -d --name kibana --net elastic -p 5601:5601 -e "ELASTICSEARCH_HOSTS=http://elasticsearch:9200" docker.elastic.co/kibana/kibana:8.11.0
```
---
<em>### Problem: Port 5601 bereits belegt</em>
```
Error: port is already allocated
Lösung: Anderen Port nutzen
bash
docker run -d --name kibana --net elastic -p 5602:5601 ...
<em># Dann: http://localhost:5602</em>
```
---
<em>### Problem: Dev Tools nicht gefunden</em>
**Im Menü:** Kein "Dev Tools" sichtbar
**Lösung:** Scrolle weiter nach unten im Menü!
Dev Tools ist unter "Management" → ganz unten
**Alternative:** Direkt-URL
```
http://localhost:5601/app/dev_tools<em>#/console</em>
```
---
<em>## Dev Tools Shortcuts (Spickzettel)</em>
| Aktion | Windows/Linux | Mac |
|--------|---------------|-----|
| Request ausführen | `Ctrl+Enter` | `Cmd+Enter` |
| Alle Requests ausführen | `Ctrl+Shift+Enter` | `Cmd+Shift+Enter` |
| Auto-Complete | `Ctrl+Space` | `Cmd+Space` |
| Zeile löschen | `Ctrl+D` | `Cmd+D` |
| Request formatieren | `Ctrl+I` | `Cmd+I` |
| Suchen | `Ctrl+F` | `Cmd+F` |
---
<em>## Zusammenfassung</em>
**Was du geschafft hast:**
✅ Kibana Container gestartet
✅ Mit Elasticsearch verbunden
✅ Dev Tools Console geöffnet
✅ Erste API-Anfragen ausgeführt
✅ Dev Tools Features kennengelernt
**Wichtige URLs:**
```
Elasticsearch: http://localhost:9200
Kibana: http://localhost:5601
Dev Tools: http://localhost:5601/app/dev_tools<em>#/console</em>
Wichtige Docker-Befehle:
bash
docker ps <em># Container anzeigen</em>
docker logs kibana <em># Kibana Logs</em>
docker restart kibana <em># Kibana neu starten</em>
docker stop kibana <em># Kibana stoppen</em>
docker start kibana <em># Kibana wieder starten</em>
```
**Wichtige API-Befehle:**
```
GET / <em># Elasticsearch Info</em>
GET /_cluster/health <em># Cluster-Status</em>
GET /_cat/indices?v <em># Alle Indizes</em>

Author: Andreas Lang
Andreas Lang konzentriert sich seit zwei Jahrzehnten auf die Webentwicklung und Webdesign mit dem Schwerpunkt PHP, Laravel und Javascript und betreut seine Kunden mit Herz und Seele in allen Bereichen von Entwicklung, Design, Suchmaschinenoptimierung, IT-Recht, IT-Sicherheit etc.

