// ============================================================================= // // 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 { level = "{{ alloy_log_level | default("info") }}" format = "{{ alloy_log_format | default("logfmt") }}" } // 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") }}" } external_labels = { source = "raspberrypi", } } // ============================================================================= // === 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, prometheus.exporter.dnsmasq.dnsmasq_status.targets, ) forward_to = [prometheus.remote_write.to_prometheus.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" } } // É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", } } // 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.