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 kibanaKonfiguration
# /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 kibanaErster Zugriff
URL: http://server:5601
Bei Elasticsearch 8.x mit Security:
- Enrollment Token verwenden oder
- Manuell konfigurierenGrundlegende 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. SaveDiscover
Log-Suche
1. Kibana → Discover
2. Data View auswählen
3. Zeitraum wählen
4. Suchanfrage eingebenKQL (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:200Feldauswahl
1. Linke Sidebar: Verfügbare Felder
2. Feld anklicken → Add
3. Spaltenreihenfolge per Drag & DropSuche speichern
1. Save (oben rechts)
2. Name eingeben
3. Optional: Als Dashboard-LinkVisualisierungen
Visualisierung erstellen
1. Kibana → Visualize Library
2. Create visualization
3. Typ auswählen
4. Konfigurieren
5. SaveVisualisierungstypen
| 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. SaveAggregationen
| 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. SavePanel hinzufügen
- Create visualization: Neue Visualisierung
- Add from library: Bestehende Visualisierung
- Add controls: Filter-ElementeControls
Controls → Add control:
- Options list: Dropdown-Filter
- Range slider: Bereichs-Filter
- Time slider: Zeit-NavigationDashboard-Filter
1. Add filter (oben)
2. Feld auswählen
3. Operator wählen (is, is not, exists, ...)
4. Wert eingeben
5. SaveTime Range
1. Time Picker (oben rechts)
2. Quick select: Last 15 minutes, Today, etc.
3. Oder: Absolut/Relativ konfigurierenPraktische 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 HostWeb-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 ProcessesDev Tools Console
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 spaceVerwendung
- 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_viewerAlerts
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 konfigurierenBeispiel: Error Alert
Rule type: Elasticsearch query
Index: logs-*
Query: level: "ERROR"
Threshold: >= 10 in 5 minutes
Actions:
- Email
- Slack
- WebhookConnectors
Stack Management → Connectors
Typen:
- Email
- Slack
- PagerDuty
- Webhook
- ServiceNowReporting
PDF/PNG Export
Dashboard → Share → PDF/PNG Reports
Optionen:
- Optimize for printing
- Include time filterCSV Export
Dashboard → Panel → More → Download CSVScheduled Reports
Dashboard → Share → PDF Reports → Generate
→ Oder als Watcher in ElasticsearchCanvas
Präsentationen erstellen
1. Kibana → Canvas
2. Create workpad
3. Elements hinzufügen
4. Styling anpassenElemente
- Charts (mit ES-Daten)
- Text
- Bilder
- Shapes
- MarkdownMachine Learning
Anomaly Detection
1. Machine Learning → Anomaly Detection
2. Create job
3. Data View und Feld wählen
4. Job konfigurieren
5. StartJob-Typen
| Typ | Verwendung | |-----|------------| | Single metric | Ein Wert analysieren | | Multi metric | Mehrere Werte | | Population | Ungewöhnliche Entities | | Categorization | Log-Kategorisierung |
Performance
Dashboard-Optimierung
- Zeitraum einschränken
- Weniger Panels pro Dashboard
- Data Table: Pagination verwenden
- Aggregationen statt Rohdaten
- Sampling bei großen DatenmengenIndex-Optimierung
- Geeignete Mappings
- Index Lifecycle Management
- Passende Shard-Größe
- Replicas nur bei BedarfTroubleshooting
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 ViewLogs
# Kibana Logs
journalctl -u kibana -f
# Detailliertes Logging
# /etc/kibana/kibana.yml
logging.root.level: debugZusammenfassung
| 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 |
| Port | Dienst | |------|--------| | 5601 | Kibana 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.