Files
iac-homelab/ansible/roles/grafana_alloy/templates/config.alloy.j2
darnodo 26d97cbcfb 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.
2025-06-28 20:39:48 +02:00

88 lines
2.9 KiB
Django/Jinja

// =============================================================================
//
// 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.