// Managed by Ansible (roles/alloy). Do not edit by hand. // host label = inventory hostname: {{ inventory_hostname }} // ===================================================================== // LOGS // ===================================================================== loki.source.journal "system" { forward_to = [loki.process.journal_labels.receiver] relabel_rules = discovery.relabel.journal.rules labels = { job = "systemd", host = "{{ inventory_hostname }}", } } discovery.relabel "journal" { targets = [] rule { source_labels = ["__journal__systemd_unit"] target_label = "unit" } } loki.process "journal_labels" { forward_to = [loki.write.default.receiver] stage.static_labels { values = { env = "host", app = "system", } } } discovery.docker "containers" { host = "unix:///var/run/docker.sock" } discovery.relabel "docker" { targets = discovery.docker.containers.targets rule { source_labels = ["__meta_docker_container_name"] regex = "/(.*)" target_label = "container" } rule { source_labels = ["__meta_docker_container_label_com_docker_compose_project"] target_label = "compose_project" } rule { source_labels = ["__meta_docker_container_label_com_docker_compose_service"] target_label = "compose_service" } } loki.source.docker "containers" { host = "unix:///var/run/docker.sock" targets = discovery.relabel.docker.output forward_to = [loki.process.docker_labels.receiver] labels = { job = "docker", host = "{{ inventory_hostname }}", } } loki.process "docker_labels" { forward_to = [loki.write.default.receiver] stage.regex { source = "compose_project" expression = "^(?P[a-z0-9_]+)_(?Pbeta|prod)$" } stage.labels { values = { app = "", env = "", } } {% raw %} stage.template { source = "env" template = `{{ if .env }}{{ .env }}{{ else }}infra{{ end }}` } stage.template { source = "app" template = `{{ if .app }}{{ .app }}{{ else }}{{ .compose_project }}{{ end }}` } {% endraw %} stage.labels { values = { app = "", env = "", } } } loki.write "default" { endpoint { url = "{{ alloy_loki_push_url }}" } } // ===================================================================== // METRICS — host (CPU / RAM / disk / load / network) // ===================================================================== prometheus.exporter.unix "node" { procfs_path = "/host/proc" sysfs_path = "/host/sys" rootfs_path = "/host/root" } prometheus.scrape "node" { targets = prometheus.exporter.unix.node.targets forward_to = [prometheus.relabel.add_host.receiver] scrape_interval = "15s" job_name = "node" } // ===================================================================== // METRICS — Docker containers (cAdvisor) // ===================================================================== prometheus.exporter.cadvisor "docker" { docker_host = "unix:///var/run/docker.sock" docker_only = true storage_duration = "5m" store_container_labels = false allowlisted_container_labels = [ "com.docker.compose.project", "com.docker.compose.service", ] } prometheus.scrape "cadvisor" { targets = prometheus.exporter.cadvisor.docker.targets forward_to = [prometheus.relabel.cadvisor_labels.receiver] scrape_interval = "15s" job_name = "cadvisor" } prometheus.relabel "cadvisor_labels" { forward_to = [prometheus.remote_write.default.receiver] rule { target_label = "host" replacement = "{{ inventory_hostname }}" } rule { source_labels = ["container_label_com_docker_compose_project"] target_label = "compose_project" } rule { source_labels = ["compose_project"] regex = "^([a-z0-9_]+)_(beta|prod)$" target_label = "app" replacement = "${1}" } rule { source_labels = ["compose_project"] regex = "^([a-z0-9_]+)_(beta|prod)$" target_label = "env" replacement = "${2}" } rule { source_labels = ["env"] regex = "^$" target_label = "env" replacement = "infra" } rule { source_labels = ["app"] regex = "^$" target_label = "app" replacement = "infra" } } prometheus.relabel "add_host" { forward_to = [prometheus.remote_write.default.receiver] rule { target_label = "host" replacement = "{{ inventory_hostname }}" } } prometheus.remote_write "default" { endpoint { url = "{{ alloy_prometheus_remote_write_url }}" } }