SLOs für Compose Stacks: Uptime und Latency objektiv messen

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.

Related Articles