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

Dev 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 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 |

Performance

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 |

| 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.