// ============================================================================= // Template Grafana Alloy final pour le monitoring complet du Raspberry Pi // Envoie les métriques à Prometheus et les logs à Loki. // ============================================================================= logging { level = "{{ alloy_log_level | default("info") }}" format = "{{ alloy_log_format | default("logfmt") }}" } // ----------------------------------------------------------------------------- // Section 1 : Définition des destinations sur le serveur de monitoring // ----------------------------------------------------------------------------- // Destination pour les métriques prometheus.remote_write "to_prometheus" { endpoint { // URL de votre serveur Prometheus url = "{{ alloy_prometheus_url | default("http://vision.lab.home.arnodo.fr:9090/api/v1/write") }}" } } // Destination pour les logs loki.write "to_loki" { endpoint { // URL de votre serveur Loki url = "{{ alloy_loki_url | default("http://vision.lab.home.arnodo.fr:3100/loki/api/v1/push") }}" } // On ajoute un label à tous les logs pour savoir d'où ils viennent external_labels = { source = "raspberrypi", } } // ----------------------------------------------------------------------------- // Section 2 : Collecte des données sur le Raspberry Pi // ----------------------------------------------------------------------------- // --- Collecte des métriques --- // Active le module interne pour les métriques système (CPU, RAM, etc.) prometheus.exporter.unix "system" {} // Active le module interne pour vérifier le statut de Dnsmasq prometheus.exporter.dnsmasq "dnsmasq_status" {} // Scrape les métriques des deux modules ci-dessus et les envoie à 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] } // --- Collecte des logs --- // Lit les logs du journal systemd (la méthode la plus propre et complète) loki.source.journal "system_logs" { // Ajoute un label "job" aux logs pour les identifier dans Grafana relabel_rules { rule { target_label = "job" action = "replace" replacement = "journal" } } forward_to = [loki.write.to_loki.receiver] }