Service Level Objectives (SLOs) sind essenziell, um die Zuverlässigkeit von Anwendungen messbar zu machen. Für Docker Compose Stacks bieten SLOs die Möglichkeit, Uptime, Latenzen und Fehlerraten objektiv zu überwachen, ohne dass ein orchestratorisches Framework notwendig ist. In diesem Artikel zeigen wir, wie SLOs für Compose Stacks definiert, gemessen und in Dashboards visualisiert werden können.
1. Grundlagen von SLOs
SLOs beschreiben quantitative Ziele für die Performance und Verfügbarkeit eines Services. Sie sind Teil des Service Level Agreements (SLA) und dienen als Basis für Monitoring, Alerting und Kapazitätsplanung.
Beispiele für SLO-Kriterien
- Uptime: Prozentsatz der Zeit, in der ein Service verfügbar ist, z. B. 99,9%
- Latency: Maximale Antwortzeit, z. B. 95% aller Anfragen < 200 ms
- Error Rate: Anteil fehlgeschlagener Anfragen, z. B. < 0,1%
2. Monitoring Setup für Compose Stacks
Die Grundlage für SLO-Messungen sind verlässliche Metriken. Prometheus eignet sich hervorragend, um Container- und Host-Metriken zu sammeln. Exporter wie cAdvisor oder node_exporter liefern detaillierte Informationen über Containerressourcen und Netzwerkperformance.
services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
ports:
- "9090:9090"
networks:
- monitoring
Konfigurationshinweise
- Mount der Konfigurationsdatei readonly
- Prometheus im eigenen Netzwerk isolieren
- Targets für alle Compose-Services definieren
3. Metriken für Uptime und Availability
Uptime wird typischerweise über Healthchecks oder HTTP-Statuscodes gemessen. Jeder Service sollte mindestens einen Endpunkt haben, der regelmäßig von Prometheus abgefragt wird.
- job_name: 'service_a'
static_configs:
- targets: ['service_a:8080']
Healthchecks in Compose
services:
service_a:
image: myservice:latest
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
interval: 30s
retries: 3
- Healthcheck Status = UP → 1, DOWN → 0
- Prometheus kann Uptime über
up{job="service_a"}tracken
4. Latenzmessung
Latenzen werden über Histogramme oder Summary-Metriken erfasst. OpenTelemetry oder clientseitige Instrumentierung können die Antwortzeiten direkt als Metrik an Prometheus senden.
http_request_duration_seconds_bucket{le="0.1"} 42
http_request_duration_seconds_bucket{le="0.2"} 87
http_request_duration_seconds_bucket{le="0.5"} 134
http_request_duration_seconds_sum 12.3
http_request_duration_seconds_count 134
Analyse in Prometheus
- 95-Perzentil:
histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket[5m])) by (le)) - Warnungen, wenn Schwellen überschritten werden
5. Alerting auf Basis von SLOs
Mit Prometheus Alertmanager können Alerts definiert werden, die ausgelöst werden, wenn SLOs verletzt werden. Typische Regeln:
groups:
- name: slo_alerts
rules:
- alert: HighErrorRate
expr: rate(http_requests_total{status=~"5.."}[5m]) > 0.001
for: 5m
labels:
severity: critical
annotations:
summary: "Hohe Fehlerquote bei Service A"
- alert: HighLatency
expr: histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket[5m])) by (le)) > 0.2
for: 5m
labels:
severity: warning
Tipps
- Alerts nach Service gruppieren
- Leitende Schwellenwerte definieren (Warnung vs. Kritisch)
- Slack/Email/Webhook Integration für Benachrichtigungen
6. RPO/RTO Integration
Für Stateful Services können SLOs auch die Wiederherstellungszeit (RTO) und Datenverlust (RPO) beinhalten. Backup-Prozesse und Snapshot-Tests sollten gemessen werden.
backup_duration_seconds{service="db"} 123
backup_success_total{service="db"} 1
- RTO: Zeit bis Service wieder verfügbar
- RPO: Maximale Datenmenge, die im Ausfall verloren gehen darf
- Messbar über Prometheus-Metriken
7. Visualisierung und Reporting
Grafana bietet Dashboards, die SLOs, Uptime und Latenzen übersichtlich darstellen. Wichtige Widgets:
- SingleStat Panels für Uptime%
- Time-Series Panels für Latenzen
- Heatmaps für Fehlerverteilung
Beispiel Dashboard Panel
SELECT
100 * avg(up{job="service_a"}) AS "Uptime %",
histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket[5m])) by (le)) AS "Latency 95th Percentile"
FROM prometheus
WHERE $__timeFilter(time)
8. Best Practices
- Jeden Service healthchecken und Metrics exportieren
- SLOs regelmäßig überprüfen und anpassen
- Sampling bei hoher Last reduzieren, um Overhead zu vermeiden
- Backup- und Restore-Prozesse in die Messungen einbeziehen
- Alerts testen, um Falschalarme zu vermeiden
Mit diesem Setup lassen sich Uptime, Latenzen und Fehlerquoten für Compose Stacks objektiv messen. SLOs helfen dabei, Service-Qualität zu bewerten, Engpässe frühzeitig zu erkennen und kontinuierlich Verbesserungen umzusetzen. Compose in Kombination mit Prometheus und Grafana bietet eine schlanke Lösung, die auch ohne Orchestrator auskommt.
Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3
Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.
Meine Leistungen umfassen:
-
Professionelle Konfiguration von Routern und Switches
-
Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen
-
Erstellung von Topologien und Simulationen in Cisco Packet Tracer
-
Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG
-
Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible
-
Erstellung von Skripten für wiederkehrende Netzwerkaufgaben
-
Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege
-
Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting
Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.











