// metrics - prometheus srv prometheus.remote_write "prom_srv" { endpoint { url = "{{ prometheus.remote_write.endpoint.url }}" } // global labels external_labels = { cluster = sys.env("CLUSTER_NAME"), zone = sys.env("ZONE"), job = "integrations/unix", } } // metrics - scrape config prometheus.scrape "integrations_node_exporter" { scrape_interval = "15s" targets = prometheus.exporter.unix.integrations_node_exporter.targets forward_to = [prometheus.remote_write.prom_srv.receiver] } // metrics - node exporter prometheus.exporter.unix "integrations_node_exporter" { disable_collectors = ["ipvs", "btrfs", "infiniband", "xfs", "zfs"] enable_collectors = ["meminfo"] filesystem { fs_types_exclude = "^(autofs|binfmt_misc|bpf|cgroup2?|configfs|debugfs|devpts|devtmpfs|tmpfs|fusectl|hugetlbfs|iso9660|mqueue|nsfs|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|selinuxfs|squashfs|sysfs|tracefs)$" mount_points_exclude = "^/(dev|proc|run/credentials/.+|sys|var/lib/docker/.+)($|/)" mount_timeout = "5s" } netclass { ignored_devices = "^(veth.*|cali.*|[a-f0-9]{15})$" } netdev { device_exclude = "^(veth.*|cali.*|[a-f0-9]{15})$" } } // ============================================ // LOKI WRITE TARGET // ============================================ loki.write "loki_srv" { endpoint { url = sys.env("loki.endpoint.url") } } // ============================================ // JOURNALD SOURCE // ============================================ // Read journald logs loki.source.journal "journal" { max_age = "24h" relabel_rules = discovery.relabel.journald.rules forward_to = [loki.process.journald.receiver] } // ============================================ // HOST JOURNALD PROCESSING // ============================================ // Add static labels and forward journald logs to Loki loki.process "journal" { stage.static_labels { values = { job = "integrations/journald", host = "{{ inventory_hostname }}", {% if loki.labels is defined and loki.labels %} {% for key, value in loki.labels.items() %} {{ key }} = "{{ value }}", {% endfor %} {% endif %} } } forward_to = [loki.write.loki_srv.receiver] } // ============================================ // HOST JOURNALD RELABELING // ============================================ // Convert journald metadata into Loki labels discovery.relabel "journald" { targets = [] // syslog_identifier rule { source_labels = ["__journal_syslog_identifier"] target_label = "syslog_identifier" } // Systemd unit name rule { source_labels = ["__journal__systemd_unit"] target_label = "systemd_unit" } // Transport type (stdout, syslog, kernel, audit, etc.) rule { source_labels = ["__journal__transport"] target_label = "journal_transport" } // Priority (info, warning, error) rule { source_labels = ["__journal_priority_keyword"] target_label = "level" } }