global: # 20s is plenty of resolution for a single-box self-hosted deployment. # The previous 5s tripled (vs the 15s default) the sample volume and # WAL growth for no practical benefit; all alert/recording rules use # [5m] windows and `for:` >= 1m, so 20s evaluation is fine. scrape_interval: 20s evaluation_interval: 20s scrape_configs: - job_name: "journal" metrics_path: "/api/metrics" static_configs: - targets: ["journal:3000"] - job_name: "planner" metrics_path: "/metrics" static_configs: - targets: ["planner:3001"] - job_name: "postgres" static_configs: - targets: ["postgres-exporter:9187"] - job_name: "node" static_configs: - targets: ["node-exporter:9100"] - job_name: "cadvisor" static_configs: - targets: ["cadvisor:8080"] # cAdvisor emits ~100 per-container metric families; our dashboards # and alerts only use CPU, memory, and container_start_time. Drop the # high-cardinality families we never query (per-filesystem, block-IO, # per-task state, memory-failure counters, socket tables). These # dominated the ~12k active series — dropping them is the main # cardinality cut. Add a name back here if you start charting it. metric_relabel_configs: - source_labels: [__name__] regex: 'container_(fs_.*|blkio_.*|tasks_state|memory_failures_total|memory_numa_.*|network_tcp.*|network_udp.*)' action: drop - job_name: "caddy" static_configs: - targets: ["caddy:2019"] # BRouter runs on a separate Hetzner Robot host (ullrich.is), reached # over the vSwitch at 10.0.1.10. cAdvisor there is scoped to trails- # labeled containers only — we don't collect metrics for any of the # operator's other workloads on that shared host. - job_name: "brouter-cadvisor" static_configs: - targets: ["10.0.1.10:8080"] labels: host: "brouter" # Same high-cardinality drop as the local cadvisor job above. metric_relabel_configs: - source_labels: [__name__] regex: 'container_(fs_.*|blkio_.*|tasks_state|memory_failures_total|memory_numa_.*|network_tcp.*|network_udp.*)' action: drop