From 26d97cbcfb230761c6b163a249cc7cf1721bb813 Mon Sep 17 00:00:00 2001 From: darnodo Date: Sat, 28 Jun 2025 20:39:48 +0200 Subject: [PATCH] Improve Grafana Alloy template for metrics and logs handling Clarify pipelines for Prometheus metrics and Loki logs with better structure and comments. Fix label for logs from "job" to "unit" and correct forwarding to Loki destination. Remove duplicate endpoint block. --- .../grafana_alloy/templates/config.alloy.j2 | 61 +++++++++++++++---- 1 file changed, 49 insertions(+), 12 deletions(-) diff --git a/ansible/roles/grafana_alloy/templates/config.alloy.j2 b/ansible/roles/grafana_alloy/templates/config.alloy.j2 index 864296b..b13fb31 100644 --- a/ansible/roles/grafana_alloy/templates/config.alloy.j2 +++ b/ansible/roles/grafana_alloy/templates/config.alloy.j2 @@ -1,6 +1,16 @@ // ============================================================================= -// Template Grafana Alloy pour Ansible -// Monitoring complet : Métriques Système + Statut Dnsmasq + Logs Système +// +// Template Grafana Alloy pour Ansible +// Monitoring complet : Métriques Système + Statut Dnsmasq + Logs Système +// +// v3 : Délimitation claire des pipelines Métriques et Logs. +// Inclut la correction pour le label "unit". +// +// ============================================================================= + + +// ============================================================================= +// === CONFIGURATION GLOBALE ET DESTINATIONS =================================== // ============================================================================= logging { @@ -8,13 +18,14 @@ logging { format = "{{ alloy_log_format | default("logfmt") }}" } -// --- Destinations --- +// Destination pour les métriques Prometheus prometheus.remote_write "to_prometheus" { endpoint { url = "{{ alloy_prometheus_url | default("http://vision.lab.home.arnodo.fr:9090/api/v1/write") }}" } } +// Destination pour les logs Loki loki.write "to_loki" { endpoint { url = "{{ alloy_loki_url | default("http://vision.lab.home.arnodo.fr:3100/loki/api/v1/push") }}" @@ -24,10 +35,16 @@ loki.write "to_loki" { } } -// --- Pipeline des métriques --- + +// ============================================================================= +// === PIPELINE DES MÉTRIQUES (PROMETHEUS) ===================================== +// ============================================================================= + +// Étape 1 : Collecte des métriques locales prometheus.exporter.unix "system" {} prometheus.exporter.dnsmasq "dnsmasq_status" {} +// Étape 2 : Scrape des métriques et envoi vers Prometheus prometheus.scrape "local_metrics" { targets = concat( prometheus.exporter.unix.system.targets, @@ -36,15 +53,35 @@ prometheus.scrape "local_metrics" { forward_to = [prometheus.remote_write.to_prometheus.receiver] } -// --- Pipeline des logs --- -loki.source.journal "system_logs" { - forward_to = [loki.relabel.add_job_label.receiver] + +// ============================================================================= +// === PIPELINE DES LOGS (LOKI) ================================================ +// ============================================================================= + +// Étape 1 : Définition des règles de transformation pour les logs +loki.relabel "journal_rules" { + forward_to = [] // Ce bloc ne fait que définir des règles + + rule { + source_labels = ["__journal__systemd_unit"] + target_label = "unit" + } } -loki.relabel "add_job_label" { - rule { - target_label = "job" - replacement = "journal" +// Étape 2 : Lecture des logs du journal systemd, transformation et envoi +loki.source.journal "read_journal" { + // CORRECTION 1 : Envoi vers la bonne destination "to_loki" + forward_to = [loki.write.to_loki.receiver] + + // Applique les règles définies ci-dessus + relabel_rules = loki.relabel.journal_rules.rules + + // CORRECTION 2 : Ajout des labels statiques (y compris "job") + labels = { + component = "loki.source.journal", + job = "journal", } - forward_to = [loki.write.to_loki.receiver] } + +// CORRECTION 3 : Le bloc loki.write "endpoint" en double a été supprimé. +// Les logs sont maintenant envoyés au bloc "to_loki" défini en haut du fichier.