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.