Metrics Pipeline: Prometheus + exporters für Container und Host

Eine konsistente Metrics-Pipeline ist entscheidend für die Überwachung von Container-Umgebungen und Host-Systemen. Prometheus in Kombination mit spezifischen Exportern ermöglicht das Erfassen, Aggregieren und Visualisieren von Metriken. In diesem Tutorial zeigen wir praxisnah, wie Container- und Host-Metriken erfasst und in Compose-Stacks integriert werden.

1. Architektur einer Metrics-Pipeline

Eine typische Metrics-Pipeline besteht aus drei zentralen Komponenten:

  • Exporter: Sammeln Metriken aus Anwendungen, Containern oder Hosts
  • Prometheus Server: Scraping, Storage und Alerting
  • Visualisierung/Alerting: Grafana, Alertmanager

Komponentenübersicht

  • Node Exporter für Host-Systemmetriken
  • cAdvisor für Container-Metriken
  • Prometheus Server als zentrale Datenbank
  • Grafana für Dashboards und Alerting

2. Vorbereitung des Docker Compose Stacks

Setzen Sie die Compose-Datei auf Version 3.9 oder höher und definieren Sie Netzwerke und Volumes:

version: "3.9"
networks:
  monitoring:

volumes:
prometheus-data:

3. Prometheus Server Service

Der Prometheus Server wird als eigener Service betrieben:

services:
  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
      - prometheus-data:/prometheus
    ports:
      - "9090:9090"
    networks:
      - monitoring

Wichtige Punkte

  • Readonly-Mount für Konfigurationsdatei
  • Persistenter Volume für Daten
  • Expose Port 9090 nur intern oder via Reverse Proxy

4. Exporter Services für Container

cAdvisor liefert Container-spezifische Metriken:

  cadvisor:
    image: gcr.io/cadvisor/cadvisor:latest
    container_name: cadvisor
    volumes:
      - /:/rootfs:ro
      - /var/run:/var/run:ro
      - /sys:/sys:ro
      - /var/lib/docker/:/var/lib/docker:ro
    ports:
      - "8080:8080"
    networks:
      - monitoring

Hinweise

  • Nur notwendige Host-Pfade mounten
  • Readonly Mounts für Sicherheit
  • Port 8080 für Prometheus-Scraping

5. Exporter Services für Hosts

Node Exporter liefert Host-Metriken wie CPU, RAM, Disk:

  node-exporter:
    image: prom/node-exporter:latest
    container_name: node-exporter
    pid: "host"
    network_mode: host
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    command:
      - '--path.procfs=/host/proc'
      - '--path.sysfs=/host/sys'
      - '--collector.filesystem.ignored-mount-points="^/(sys|proc|dev|host|etc)($|/)"'

Wichtige Hinweise

  • Host PID und Network Mode für vollständige Metrik-Erfassung
  • Readonly-Mounts für Sicherheit
  • Filesystem-Collector anpassen für unnötige Mounts ignorieren

6. Prometheus Konfiguration

Scraping-Ziele in prometheus.yml definieren:

global:
  scrape_interval: 15s

scrape_configs:

  • job_name: 'cadvisor'
    static_configs:

    • targets: ['cadvisor:8080']

  • job_name: 'node'
    static_configs:

    • targets: ['node-exporter:9100']

Tipps

  • Scrape Intervall an Workload anpassen
  • Nur notwendige Services scrapen
  • Labels für Filter und Queries nutzen

7. Netzwerkkonzept

Alle Monitoring-Services laufen im Compose-Netzwerk monitoring. DNS-Namen verwenden, um Scrape-Ziele zu erreichen.

  • Prometheus greift auf cadvisor und node-exporter über DNS zu
  • Externe Ports nur nach Bedarf freigeben
  • Interne Kommunikation über Compose Netzwerk

8. Visualisierung und Alerting

Grafana als Dashboard- und Alerting-Lösung:

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    ports:
      - "3000:3000"
    networks:
      - monitoring
    volumes:
      - grafana-data:/var/lib/grafana
  • Prometheus als Data Source hinzufügen
  • Alerts via Alertmanager konfigurieren
  • Dashboards für Container- und Host-Metriken erstellen

9. Security Best Practices

  • Readonly-Mounts für alle Exporter
  • Nur notwendige Ports exponieren
  • Netzwerk-Isolation durch Compose-Netzwerke
  • RBAC und Auth für Grafana aktivieren
  • Exporter als Non-Root-Container betreiben

10. Betrieb und Wartung

Monitoring-Pipeline regelmäßig überprüfen:

  • Logs von Prometheus, cAdvisor, Node Exporter überwachen
  • Scrape-Targets testen: curl http://cadvisor:8080/metrics
  • Volumes für Persistenz sichern
  • Versionen der Exporter regelmäßig aktualisieren

Mit dieser Compose-basierten Metrics-Pipeline lassen sich Container- und Host-Metriken konsistent erfassen und visualisieren. So können Ressourcenverbrauch, Performance-Engpässe und Ausfallrisiken frühzeitig erkannt werden, während Sicherheits- und Best-Practice-Aspekte berücksichtigt bleiben.

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