Kibana ist die Visualisierungsplattform des Elastic Stack. Sie ermöglicht die Erstellung von Dashboards, die Analyse von Logs und die Exploration von Elasticsearch-Daten.
Installation
Debian/Ubuntu
# Repository (falls nicht vorhanden)
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | gpg --dearmor -o /usr/share/keyrings/elasticsearch.gpg
echo "deb [signed-by=/usr/share/keyrings/elasticsearch.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | tee /etc/apt/sources.list.d/elastic-8.x.list
# Installieren
apt update
apt install kibana
Konfiguration
# /etc/kibana/kibana.yml
server.port: 5601
server.host: "0.0.0.0"
server.name: "kibana-server"
elasticsearch.hosts: ["https://localhost:9200"]
elasticsearch.username: "kibana_system"
elasticsearch.password: "password"
elasticsearch.ssl.verificationMode: certificate
elasticsearch.ssl.certificateAuthorities: ["/etc/kibana/certs/ca.crt"]
Service starten
systemctl enable --now kibana
# Status
systemctl status kibana
Erster Zugriff
URL: http://server:5601
Bei Elasticsearch 8.x mit Security:
- Enrollment Token verwenden oder
- Manuell konfigurieren
Grundlegende Navigation
Bereiche
| Bereich | Funktion |
|---|
| Discover | Log-Exploration |
| Dashboard | Visualisierungen |
| Visualize | Charts erstellen |
| Dev Tools | API-Konsole |
| Stack Management | Administration |
Data Views (Index Patterns)
1. Stack Management → Data Views
2. Create data view
3. Name: logs-*
4. Timestamp field: @timestamp
5. Save
Discover
Log-Suche
1. Kibana → Discover
2. Data View auswählen
3. Zeitraum wählen
4. Suchanfrage eingeben
KQL (Kibana Query Language)
# Exakte Suche
status: 200
# Wildcard
message: *error*
# Bereich
response_time >= 500
# Kombination
status: 500 and method: POST
# Oder
status: 404 or status: 500
# Negation
not status: 200
# Verschachtelt
host.name: webserver and (status: 500 or status: 503)
Lucene-Syntax
# Phrase
message: "connection refused"
# Wildcard
path: /api/*
# Fuzzy
message: errro~
# Range
bytes: [1000 TO 5000]
# Boolean
status:500 AND method:POST
status:404 OR status:500
NOT status:200
Feldauswahl
1. Linke Sidebar: Verfügbare Felder
2. Feld anklicken → Add
3. Spaltenreihenfolge per Drag & Drop
Suche speichern
1. Save (oben rechts)
2. Name eingeben
3. Optional: Als Dashboard-Link
Visualisierungen
Visualisierung erstellen
1. Kibana → Visualize Library
2. Create visualization
3. Typ auswählen
4. Konfigurieren
5. Save
Visualisierungstypen
| Typ | Verwendung |
|---|
| Lens | Drag & Drop (empfohlen) |
| Area | Zeitreihen |
| Bar | Kategorien vergleichen |
| Line | Trends |
| Pie | Anteile |
| Metric | Einzelwerte |
| Data Table | Tabellarisch |
| Gauge | Messwerte |
| Map | Geodaten |
Lens (Drag & Drop)
1. Create visualization → Lens
2. Data View wählen
3. Felder per Drag & Drop
4. Visualisierungstyp wählen
5. Konfigurieren
6. Save
Aggregationen
| Aggregation | Beschreibung |
|---|
| Count | Anzahl Dokumente |
| Sum | Summe eines Feldes |
| Average | Durchschnitt |
| Min/Max | Minimum/Maximum |
| Percentiles | Perzentile |
| Unique Count | Eindeutige Werte |
| Top Values | Häufigste Werte |
Dashboards
Dashboard erstellen
1. Kibana → Dashboards
2. Create dashboard
3. Create visualization oder Add from library
4. Anordnen und Größe anpassen
5. Save
Panel hinzufügen
- Create visualization: Neue Visualisierung
- Add from library: Bestehende Visualisierung
- Add controls: Filter-Elemente
Controls
Controls → Add control:
- Options list: Dropdown-Filter
- Range slider: Bereichs-Filter
- Time slider: Zeit-Navigation
Dashboard-Filter
1. Add filter (oben)
2. Feld auswählen
3. Operator wählen (is, is not, exists, ...)
4. Wert eingeben
5. Save
Time Range
1. Time Picker (oben rechts)
2. Quick select: Last 15 minutes, Today, etc.
3. Oder: Absolut/Relativ konfigurieren
Praktische Dashboards
Log-Overview
Panels:
1. Metric: Total Log Count
2. Line Chart: Logs over Time
3. Pie Chart: Log Levels
4. Data Table: Top Errors
5. Bar Chart: Logs by Host
Web-Traffic Dashboard
Panels:
1. Metric: Total Requests
2. Metric: Error Rate
3. Line Chart: Requests/min
4. Pie Chart: Status Codes
5. Bar Chart: Top URLs
6. Map: Request Locations
7. Data Table: Slow Requests (>1s)
System Health
Panels:
1. Gauge: CPU Usage
2. Gauge: Memory Usage
3. Area Chart: CPU over Time
4. Area Chart: Memory over Time
5. Bar Chart: Disk Usage by Mount
6. Data Table: Top Processes
API-Anfragen
# Index-Info
GET _cat/indices?v
# Suche
GET logs-*/_search
{
"query": {
"match": {
"message": "error"
}
}
}
# Aggregation
GET logs-*/_search
{
"size": 0,
"aggs": {
"status_codes": {
"terms": { "field": "status" }
}
}
}
Mehrere Requests
# Trennlinie zwischen Requests
GET _cluster/health
GET _cat/nodes?v
POST logs/_doc
{
"message": "Test"
}
Spaces
Space erstellen
1. Stack Management → Spaces
2. Create space
3. Name und Beschreibung
4. Features auswählen
5. Create space
Verwendung
- Mandantentrennung
- Team-Isolation
- Projekt-Trennung
- Umgebungen (Dev, Prod)
Rollen und Berechtigungen
Rolle erstellen
Stack Management → Roles → Create role
Name: log_viewer
Cluster privileges: monitor
Index privileges:
- Indices: logs-*
- Privileges: read, view_index_metadata
Kibana privileges:
- Space: Default
- Features: Discover, Dashboard (Read)
Benutzer erstellen
Stack Management → Users → Create user
Username: analyst
Password: ***
Roles: log_viewer
Alerts
Rule erstellen
1. Stack Management → Rules
2. Create rule
3. Rule type auswählen:
- Elasticsearch query
- Log threshold
- Index threshold
4. Conditions definieren
5. Actions konfigurieren
Beispiel: Error Alert
Rule type: Elasticsearch query
Index: logs-*
Query: level: "ERROR"
Threshold: >= 10 in 5 minutes
Actions:
- Email
- Slack
- Webhook
Connectors
Stack Management → Connectors
Typen:
- Email
- Slack
- PagerDuty
- Webhook
- ServiceNow
Reporting
PDF/PNG Export
Dashboard → Share → PDF/PNG Reports
Optionen:
- Optimize for printing
- Include time filter
CSV Export
Dashboard → Panel → More → Download CSV
Scheduled Reports
Dashboard → Share → PDF Reports → Generate
→ Oder als Watcher in Elasticsearch
Canvas
Präsentationen erstellen
1. Kibana → Canvas
2. Create workpad
3. Elements hinzufügen
4. Styling anpassen
Elemente
- Charts (mit ES-Daten)
- Text
- Bilder
- Shapes
- Markdown
Machine Learning
Anomaly Detection
1. Machine Learning → Anomaly Detection
2. Create job
3. Data View und Feld wählen
4. Job konfigurieren
5. Start
Job-Typen
| Typ | Verwendung |
|---|
| Single metric | Ein Wert analysieren |
| Multi metric | Mehrere Werte |
| Population | Ungewöhnliche Entities |
| Categorization | Log-Kategorisierung |
Dashboard-Optimierung
- Zeitraum einschränken
- Weniger Panels pro Dashboard
- Data Table: Pagination verwenden
- Aggregationen statt Rohdaten
- Sampling bei großen Datenmengen
Index-Optimierung
- Geeignete Mappings
- Index Lifecycle Management
- Passende Shard-Größe
- Replicas nur bei Bedarf
Troubleshooting
Häufige Probleme
# Keine Daten sichtbar
- Zeitraum prüfen
- Data View korrekt?
- Index existiert?
# Langsame Dashboards
- Zeitraum reduzieren
- Weniger Panels
- Aggregationen optimieren
# Felder fehlen
- Refresh field list in Data View
Logs
# Kibana Logs
journalctl -u kibana -f
# Detailliertes Logging
# /etc/kibana/kibana.yml
logging.root.level: debug
Zusammenfassung
| Bereich | Funktion |
|---|
| Discover | Log-Exploration |
| Dashboard | Visualisierungen |
| Visualize | Charts erstellen |
| Dev Tools | API-Konsole |
| Canvas | Präsentationen |
| ML | Anomaly Detection |
| Query-Typ | Syntax |
|---|
| KQL | status: 500 and host: web* |
| Lucene | status:500 AND host:web* |
Fazit
Kibana ist ein mächtiges Tool für Log-Analyse und Datenvisualisierung. Die Kombination aus Discover für Exploration und Dashboards für Monitoring deckt die meisten Anwendungsfälle ab. Lens vereinfacht die Erstellung von Visualisierungen erheblich. Für fortgeschrittene Anwendungsfälle bieten Machine Learning und Canvas zusätzliche Möglichkeiten. Die Integration in den Elastic Stack macht Kibana zur natürlichen Wahl für Elasticsearch-basierte Lösungen.