# =================================================================== # Prometheus Configuration for Meldestelle # Features: Consul Service Discovery, Spring Boot Actuator support # =================================================================== global: scrape_interval: 15s evaluation_interval: 15s # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: - "alertmanager:9093" rule_files: - "/etc/prometheus/rules/alerts.yaml" scrape_configs: # 1. Prometheus Self-Monitoring - job_name: 'prometheus' static_configs: - targets: [ 'localhost:9090' ] # 2. Consul Self-Monitoring - job_name: 'consul' metrics_path: '/v1/agent/metrics' params: format: [ 'prometheus' ] static_configs: - targets: [ 'consul:8500' ] # 3. Keycloak Metrics (statisches Target) - job_name: 'keycloak' metrics_path: '/metrics' static_configs: - targets: [ 'keycloak:8080' ] # 4. Spring Boot Services via Consul Discovery. # Das ist die Magie: Prometheus fragt Consul nach allen Services. # Wenn ein Service das Tag 'metrics' oder 'spring-boot' hat (oder einfach alle), wird er scraped. - job_name: 'consul-services' consul_sd_configs: - server: 'consul:8500' services: [ ] # Leere Liste = Alle Services relabel_configs: # Nur Services scrapen, die NICHT consul selbst sind (das haben wir oben schon) - source_labels: [ __meta_consul_service ] regex: consul action: drop # Setze den Pfad auf /actuator/prometheus für Spring Boot Apps # Optional: Man kann das auch über Consul Tags steuern - source_labels: [ __meta_consul_service ] target_label: __metrics_path__ replacement: /actuator/prometheus # Übernehme den Service-Namen als 'application' Label - source_labels: [ __meta_consul_service ] target_label: application # Behalte die Instanz (IP: Port) - source_labels: [ __meta_consul_address, __meta_consul_service_port ] separator: ':' target_label: instance # Job 5: Postgres Exporter (Statisch, da kein Consul-Client im Image) - job_name: 'postgres-exporter' static_configs: - targets: [ 'postgres-exporter:9187' ]