global: scrape_interval: 15s # Wie oft Ziele abgefragt werden evaluation_interval: 15s # Wie oft Regeln ausgewertet werden scrape_configs: - job_name: 'prometheus' # Prometheus überwacht sich selbst static_configs: - targets: ['localhost:9090'] - job_name: 'node-exporter' # Docker Swarm Service Discovery für den Node Exporter dockerswarm_sd_configs: - host: unix:///var/run/docker.sock role: tasks port: 9100 # Standard-Port vom Node Exporter relabel_configs: # Nur Tasks im Zustand 'running' verwenden - source_labels: [__meta_dockerswarm_task_desired_state] regex: running action: keep # Nur Tasks des 'node-exporter' Services aus diesem Stack auswählen # Passe den Regex ggf. an, wenn dein Stack anders heißt (hier Annahme: Stack-Name enthält 'monitoring') - source_labels: [__meta_dockerswarm_service_name] regex: ^monitoring_node-exporter$ # Regex an Stack-Namen anpassen! action: keep # Verwende den Hostnamen des Swarm Nodes als Instance Label - source_labels: [__meta_dockerswarm_node_hostname] target_label: instance # Setze die Zieladresse korrekt auf IP:Port - source_labels: [__address__] regex: '(.*):.*' # Extrahiere die IP-Adresse replacement: '${1}:9100' # Setze den korrekten Port (9100) target_label: __address__ - job_name: 'cadvisor' dockerswarm_sd_configs: - host: unix:///var/run/docker.sock role: tasks port: 8080 # Standard-Port von cAdvisor relabel_configs: # Nur Tasks im Zustand 'running' verwenden - source_labels: [__meta_dockerswarm_task_desired_state] regex: running action: keep # Nur Tasks des 'cadvisor' Services aus diesem Stack auswählen # Passe den Regex an deinen Stack-Namen an! - source_labels: [__meta_dockerswarm_service_name] regex: .*(monitoring|mon)_cadvisor.* # Regex an Stack-Namen anpassen! action: keep # Verwende den Hostnamen des Swarm Nodes als Instance Label - source_labels: [__meta_dockerswarm_node_hostname] target_label: instance # WICHTIG: Setze den Metrik-Pfad, da cAdvisor ihn unter /metrics bereitstellt - action: replace target_label: __metrics_path__ replacement: /metrics