- Authors

- Name
- Phillip Pham
- @ddppham
TL;DR
- kube-prometheus-stack (Helm-Chart) installiert Prometheus, Grafana, Alertmanager und die Kubernetes-Exporters in einem Befehl.
- ServiceMonitors sind der Kubernetes-native Weg, um Prometheus auf deine Anwendungs-Metriken aufmerksam zu machen — kein manuelles Targets-Konfigurieren mehr.
- Loki ergänzt den Stack um zentrale Log-Sammlung mit Grafana-Integration — Metriken und Logs in einem Dashboard.
- Die vier goldenen Signale (Latency, Traffic, Errors, Saturation) bilden die Basis jedes sinnvollen Dashboards.
Kubernetes Observability Stack: Prometheus, Grafana und Loki in 2 Stunden
Ein Observability Stack ist die Grundlage jedes ernsthaften Kubernetes-Betriebs: Ohne Metriken, Logs und Alerts bist du blind. Dieser Guide zeigt den kompletten Aufbau mit kube-prometheus-stack + Loki — von der Helm-Installation bis zu eigenen ServiceMonitors und Alert-Regeln.
Die 4 goldenen Signale: Was du wirklich überwachen musst
Bevor du Tools installierst, kläre, was du überwachen willst. Die Praxis hat vier universelle Signale etabliert:
| Signal | Frage | Beispiel-Metrik |
|---|---|---|
| Latency | Wie lange dauert es? | HTTP Request Dauer (Histogram) |
| Traffic | Wie viel wird angefragt? | Requests pro Sekunde |
| Errors | Wie viele Fehler passieren? | HTTP 5xx Rate |
| Saturation | Wie voll ist das System? | CPU/Memory-Auslastung |
Schritt 1: kube-prometheus-stack installieren
Der Stack bündelt Prometheus, Grafana, Alertmanager, kube-state-metrics und node-exporter in einem Chart:
# Helm-Repo hinzufügen
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
# Installieren (Namespace: monitoring)
helm install kube-prometheus prometheus-community/kube-prometheus-stack \
--namespace monitoring --create-namespace \
--set grafana.adminPassword="dein-sicheres-passwort"
# Status prüfen
kubectl -n monitoring get pods
Nach wenigen Minuten laufen alle Komponenten:
NAME READY STATUS
alertmanager-kube-prometheus-alertmanager-0 2/2 Running
prometheus-kube-prometheus-prometheus-0 2/2 Running
kube-prometheus-grafana-7f9c8b6d9d-xxxxx 2/2 Running
kube-prometheus-kube-state-metrics-xxxxx 1/1 Running
prometheus-node-exporter-xxxxx 1/1 Running
Schritt 2: Grafana erreichbar machen
kubectl -n monitoring port-forward svc/kube-prometheus-grafana 8080:80
# Browser: http://localhost:8080 (admin / dein-passwort)
Der Stack bringt vorgefertigte Dashboards mit: Kubernetes-Cluster, Nodes, Pods, Kubelet, etc. — alles direkt einsatzbereit.
Schritt 3: Eigene Anwendung mit ServiceMonitor anbinden
Der Kubernetes-native Weg, Prometheus auf deine App-Metriken aufmerksam zu machen. Voraussetzung: Deine Anwendung exponiert Metriken im Prometheus-Format (z.B. über eine /metrics-Route).
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: my-app
namespace: production
spec:
selector:
matchLabels:
app: my-app
endpoints:
- port: metrics # Port-Name im Service
path: /metrics
interval: 30s
apiVersion: v1
kind: Service
metadata:
name: my-app
labels:
app: my-app
spec:
selector:
app: my-app
ports:
- name: metrics
port: 9090
targetPort: 9090
kubectl apply -f service-monitor.yaml -f service.yaml
Prometheus entdeckt den ServiceMonitor automatisch (das Chart hat prometheus-operator integriert). Nach ~1 Minute erscheinen die Metriken unter http://localhost:9090 im Prometheus-UI.
Schritt 4: Alerts definieren
Alertmanager benachrichtigt dich per Mail, Slack oder Webhook. Eigene Regeln:
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
name: app-alerts
namespace: monitoring
spec:
groups:
- name: my-app.rules
rules:
- alert: HighErrorRate
expr: |
sum(rate(http_requests_total{code=~"5.."}[5m]))
/ sum(rate(http_requests_total[5m])) > 0.05
for: 10m
labels:
severity: warning
annotations:
summary: "Hohe Fehlerrate ({{ $value | humanizePercentage }})"
- alert: PodRestartLoop
expr: increase(kube_pod_container_status_restarts_total[15m]) > 5
for: 5m
labels:
severity: critical
annotations:
summary: "Pod {{ $labels.pod }} startet im Loop"
Schritt 5: Loki für zentrale Logs
Loki sammelt Logs zentral und integriert sie direkt in Grafana:
helm repo add grafana https://grafana.github.io/helm-charts
helm upgrade --install loki grafana/loki-stack \
--namespace monitoring \
--set grafana.enabled=false \
--set promtail.enabled=true
Danach in Grafana die Loki-Datenquelle hinzufügen: http://loki:3100. Logs aus allen Pods sind dann im Explore-Tab durchsuchbar:
{namespace="production"} |= "ERROR" |= "payment"
Best Practices für den Produktivbetrieb
- Retention bewusst setzen:
--set prometheus.prometheusSpec.retention=15d— mehr kostet Storage. - Ressourcen-Limits: Prometheus und Loki brauchen Limits, sonst fressen sie den Cluster.
- Alerting-Kanäle definieren: Slack/Teams für Warnungen, E-Mail für kritische Alerts.
- Dashboards versionieren: Grafana-Dashboards als JSON im Repo ablegen (Config-as-Code).
- Backup der Konfiguration: PrometheusRules und Dashboards sind Code — in Git sichern.
Häufige Fehler und Lösungen
Fehler 1: ServiceMonitor wird nicht gefunden
Symptom: Metriken tauchen nicht auf. Lösung: kubectl get servicemonitor -n production und kubectl describe servicemonitor my-app prüfen. Label-Selector muss exakt zum Service passen. Oder: Prometheus-Scope prüfen — kubectl get prometheus -n monitoring -o yaml | grep serviceMonitorSelector.
Fehler 2: Grafana-Dashboards zeigen keine Daten
Symptom: Leere Panels. Lösung: Datenquelle prüfen (http://prometheus-operated:9090). Dann kubectl port-forward svc/prometheus-operated 9090:9090 und Metriken direkt testen.
Fehler 3: Loki braucht zu viel Speicher
Symptom: OOMKilled bei Loki. Lösung: --set loki.persistence.enabled=true und Limits setzen. Für kleine Cluster reicht der Single-Binary-Modus.
FAQ
Was ist der Unterschied zwischen Monitoring und Observability?
Monitoring zeigt vordefinierte Metriken (Ist die CPU hoch?). Observability erlaubt beliebige Fragen an Metriken, Logs und Traces (Warum ist die CPU hoch? Welcher Request hängt?). Ein guter Stack braucht beides.
Prometheus oder Grafana Cloud?
Für die meisten KMUs ist selbst-gehostet mit kube-prometheus-stack günstiger und DSGVO-einfacher (Daten bleiben im eigenen Cluster). Grafana Cloud lohnt sich ab großer Skalierung oder wenn du keine Infrastruktur betreiben willst.
Brauche ich wirklich Jaeger/Tracing?
Distributed Tracing (Jaeger, Tempo) lohnt sich erst ab Microservice-Architekturen mit mehreren Diensten. Starte mit Prometheus + Grafana + Loki — das deckt 80% der Fälle ab.
Ist der Stack DSGVO-konform?
Ja, wenn du: Logs auf personenbezogene Daten prüfst (ggf. Anonymisierung), Zugriff auf Grafana per SSO/RBAC beschränkst und die Retention begrenzt. Keine Daten verlassen deinen Cluster.
Nächste Schritte
Ein kompletter Observability Stack steht in 2 Stunden. Danach: Kubernetes Security Monitoring mit Falco, Kubernetes Chaos Engineering für Stabilitätstests und der Kubernetes Monitoring-Artikel zu Grafana für die Netzwerk-Perspektive.
📖 Verwandte Artikel
Weitere interessante Beiträge zu ähnlichen Themen
Agentic AI auf Kubernetes: Was in der Praxis zählt
Agentic AI auf Kubernetes: Warum K8s das Substrat bleibt, welche Schichten (Inference bis Agents) zählen und wo Sandbox, Scheduling und Kosten knifflig werden.
AI auf Kubernetes starten: Plattform statt Roh-Cluster
AI auf Kubernetes starten: Warum K8s flexibel genug ist — und warum ohne Plattform-Schicht (Scheduling, Serving, APIs) Training und Inference scheitern.
GPU in Kubernetes: CDI, Sharing und DRA
GPUs unter Kubernetes verstehen: CDI statt NVIDIA-Docker, Time-Slicing vs. MPS vs. MIG und DRA als flexible Alternative zu den Device-Plugins.
Kubernetes AI at Scale: DRA, LLMD und Inference
Kubernetes wird Accelerator Native: DRA, LLMD, Disaggregated Serving und Inference Gateway für produktive GenAI-Workloads — was Plattform-Teams jetzt brauchen.
KubeVirt: Multi-Tenant-GPU-Clouds auf Kubernetes
KubeVirt als Tenancy-Layer für GPU-Clouds auf Kubernetes: VMs und Container auf einem Control Plane, DRA für Passthrough/vGPU/MIG sowie NUMA für Performance.
Llama Stack: Enterprise-KI-Plattform auf Kubernetes
Llama Stack standardisiert Inference, RAG, Agents und Guardrails wie Kubernetes Container: eine API, austauschbare Provider — von Laptop bis Rechenzentrum.
LLM-D: Verteilte Inference auf Kubernetes
LLM-D verteilt Inference über Kubernetes: Prefill/Decode trennen, KV-Cache nutzen, intelligent routen — niedrigere Latenz und bessere GPU-Kosten.
Open-Source-AI-Stack auf Kubernetes
Open-Source-AI-Stack auf Kubernetes: Ray, PyTorch und vLLM als unabhängige Architektur — Schichten, Rollen und wann Self-Hosting sich lohnt.