ansible/dns : switch to grafana alloy
This commit is contained in:
27
ansible/roles/grafana_alloy/templates/alloy.service.j2
Normal file
27
ansible/roles/grafana_alloy/templates/alloy.service.j2
Normal file
@@ -0,0 +1,27 @@
|
||||
[Unit]
|
||||
Description=Grafana Alloy
|
||||
Documentation=https://grafana.com/docs/alloy/latest/
|
||||
Wants=network-online.target
|
||||
After=network-online.target
|
||||
|
||||
[Service]
|
||||
User=alloy
|
||||
Group=alloy
|
||||
Type=simple
|
||||
|
||||
# Commande de démarrage finale et correcte, basée sur la sortie de "alloy run --help"
|
||||
ExecStart=/usr/bin/alloy run /etc/alloy/config.alloy \
|
||||
--storage.path=/var/lib/alloy \
|
||||
--server.http.listen-addr=127.0.0.1:12345
|
||||
|
||||
# Sécurité via systemd
|
||||
ReadWritePaths=/var/lib/alloy
|
||||
ReadOnlyPaths=/etc/alloy
|
||||
|
||||
# Politiques de redémarrage et de limites de fichiers
|
||||
Restart=on-failure
|
||||
RestartSec=5s
|
||||
LimitNOFILE=65536
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
70
ansible/roles/grafana_alloy/templates/config.alloy.j2
Normal file
70
ansible/roles/grafana_alloy/templates/config.alloy.j2
Normal file
@@ -0,0 +1,70 @@
|
||||
// =============================================================================
|
||||
// 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]
|
||||
}
|
||||
Reference in New Issue
Block a user