Publié le : 10/05/2026 à 10:00

Maîtrisez la syntaxe déclarative de Grafana Alloy (langage River), apprenez à manipuler les blocs de configuration, les variables, et découvrez comment gérer les secrets de manière sécurisée.

1. Les blocs de configuration

Attributs, blocs et expressions en langage River.

Comprendre la syntaxe

La configuration d'Alloy s'écrit dans un fichier (généralement config.river) utilisant une syntaxe déclarative fortement inspirée de Terraform. Un composant est défini par un nom et un identifiant. À l'intérieur du bloc, vous définissez des attributs (ex: url = "http://...") et potentiellement des sous-blocs. Les composants exportent des valeurs qui peuvent être référencées par d'autres composants, créant ainsi le pipeline.

2. Variables et Fonctions

Utiliser la logique pour dynamiser les configurations.

Rendre la configuration dynamique

Le langage River permet d'utiliser des expressions pour rendre votre configuration dynamique. Vous pouvez faire appel à des fonctions intégrées (comme env("VAR_NAME") pour lire des variables d'environnement, ou des fonctions de manipulation de chaînes) et définir des blocs de configuration locaux (local.file) pour réutiliser des valeurs, évitant ainsi la répétition et facilitant la maintenance.

3. Gestion des Secrets

Intégrer des variables d'environnement et des fichiers de coffre-fort.

Sécuriser les accès

Il est crucial de ne pas stocker de mots de passe ou de tokens en clair dans vos fichiers de configuration. Alloy propose plusieurs méthodes pour gérer les secrets : l'utilisation de la fonction env(), la lecture depuis des fichiers sécurisés sur le disque, ou encore l'intégration avec des solutions de gestion de secrets tierces via des composants spécifiques. Les valeurs marquées comme secrètes ne sont jamais affichées en clair dans les logs ou l'UI.


Bonne Pratique : Utilisez le composant local.file pour lire des secrets montés dynamiquement (comme des secrets Kubernetes ou Vault) afin qu'Alloy réagisse automatiquement si le fichier secret change sans relance du processus.
Erreur Courante : Coder les API tokens en dur dans le fichier de configuration. Cela expose le secret dans votre dépôt Git et en clair dans l'interface UI (sur le port 12345) d'Alloy.
local.file "mimir_api_key" {
  filename  = "/etc/alloy/secrets/mimir_token.txt"
  is_secret = true
}

prometheus.remote_write "cloud" {
  endpoint {
    url = "https://mimir-url/api/v1/push"
    basic_auth {
      username = "admin"
      password = local.file.mimir_api_key.content
    }
  }
}

4. Observabilité d'Alloy

Surveiller la santé de ses propres pipelines via l'interface UI native.

L'interface utilisateur locale

Alloy intègre un serveur HTTP (sur le port 12345 par défaut) qui expose une interface graphique très utile. Cette UI permet de visualiser le graphe (DAG) de vos composants, de vérifier leur état (Healthy/Unhealthy), et d'inspecter les arguments évalués et les exports de chaque composant en temps réel. C'est l'outil indispensable pour le débogage de vos configurations.

Lien copié dans le presse-papiers !