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.
This commit is contained in:
darnodo
2025-06-28 20:39:48 +02:00
parent b8df43b209
commit 26d97cbcfb

View File

@@ -1,6 +1,16 @@
// =============================================================================
//
// 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",
}
}
// 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.