Configurer le serveur Grafana avec grafana.ini et les variables d'environnement
Sachez où se trouvent les fichiers de configuration, comment les surcharges sont ordonnées et comment garder les paramètres dans Git.
Le comportement du serveur Grafana est contrôlé par un fichier INI et par des variables d’environnement qui le surchargent. Connaître les règles vous permet de conserver toute la configuration dans un dépôt et de ne rien changer à la main. Ce guide couvre l’emplacement des fichiers, le fonctionnement de la priorité, la manière d’injecter des valeurs et des secrets, ainsi que les paramètres que vous modifierez le plus souvent.
Où vit la configuration
defaults.iniest livré avec Grafana et contient toutes les valeurs par défaut (dansconf/pour une installation par archive tarball). Ne le modifiez jamais. C’est la meilleure référence pour savoir quelles options existent.grafana.iniest votre fichier de configuration. Sur les paquets Linux, il se trouve à/etc/grafana/grafana.ini, et l’image Docker officielle lit le même chemin. Pour une installation tarball, utilisezconf/custom.ini. Passez--configpour pointer vers un autre fichier.- Les variables d’environnement commençant par
GF_surchargent les deux.
Priorité, de la plus basse à la plus haute : defaults.ini, puis votre grafana.ini, puis les variables d’environnement GF_* (et les options de ligne de commande). Ne mettez dans votre fichier que les options que vous voulez changer, ce qui garde les diffs petits.
Dans un fichier INI, les lignes commençant par ; sont des commentaires ; pour activer une option, il faut donc retirer le ; initial :
;http_port = 3000 # ignoré
http_port = 3000 # actif
Redémarrez Grafana après avoir modifié le fichier ou l’environnement.
Surcharges par variables d’environnement
Le modèle est GF_<SECTION>_<CLÉ>, avec la section et la clé en majuscules et tout . ou - remplacé par _ :
GF_SECURITY_ADMIN_USER=owner # [security] admin_user
GF_SERVER_ROOT_URL=https://grafana.example.com # [server] root_url
GF_AUTH_GOOGLE_CLIENT_SECRET=newS3cretKey # [auth.google] client_secret
GF_FEATURE_TOGGLES_newNavigation=true # [feature_toggles] newNavigation
GF_DEFAULT_INSTANCE_NAME=my-instance # instance_name de premier niveau, sans section
Les variables d’environnement conviennent naturellement aux conteneurs et à Kubernetes, car le même fichier peut être partagé par tous les environnements tandis que les valeurs propres à chacun (URL, mots de passe) viennent de la plateforme.
Expansion de variables dans le fichier
Les valeurs des options peuvent référencer des variables d’environnement ou des fichiers avec les fournisseurs $__env{} et $__file{}, ou le raccourci ${NAME} :
[paths]
logs = $__env{LOGDIR}/grafana
[security]
admin_password = ${GF_ADMIN_PASSWORD}
secret_key = $__file{/run/secrets/grafana_secret_key}
[database]
password = $__file{/etc/secrets/gf_sql_password}
$__file{} lit le fichier et supprime les espaces en début et en fin, ce qui le rend adapté aux secrets Docker et Kubernetes montés sous forme de fichiers. Grafana Enterprise dispose aussi d’un fournisseur $__vault{}. L’image Docker officielle accepte en plus un suffixe __FILE sur les noms de variables (par exemple GF_SECURITY_ADMIN_PASSWORD__FILE=/run/secrets/admin_password), traité dans le guide sur les secrets.
Une base pratique
Un court grafana.ini pour une installation modeste de type production :
[paths]
provisioning = /etc/grafana/provisioning
[server]
protocol = http
http_port = 3000
domain = grafana.example.com
root_url = https://grafana.example.com/
; ajoutez le sous-chemin à root_url et activez ceci si servi depuis /grafana
; serve_from_sub_path = true
[database]
type = postgres
host = postgres:5432
name = grafana
user = grafana
password = $__file{/run/secrets/grafana_db_password}
[security]
admin_user = admin
admin_password = $__file{/run/secrets/grafana_admin_password}
secret_key = $__file{/run/secrets/grafana_secret_key}
cookie_secure = true
[users]
allow_sign_up = false
[analytics]
reporting_enabled = false
check_for_updates = false
[log]
mode = console
level = info
Points à connaître :
- Base de données. La valeur par défaut est SQLite, qui convient à une instance unique et aux tests. Utilisez PostgreSQL ou MySQL en production, et toujours au-delà d’un réplica Grafana.
root_urldoit correspondre à l’adresse publique, faute de quoi les liens dans les notifications d’alerte et les redirections OAuth seront erronés. Derrière un reverse proxy qui sert Grafana sous un sous-chemin, ajoutez le chemin àroot_urlet définissezserve_from_sub_path = true.admin_passwordn’est appliqué qu’à la première création de la base de données par Grafana. Modifier le paramètre ensuite ne change pas le mot de passe de l’utilisateur admin existant.secret_keychiffre les secrets stockés pour les sources de données. Si vous le changez, les secrets précédemment stockés ne peuvent plus être lus et les sources de données doivent être provisionnées à nouveau. Définissez-le explicitement et ne le faites jamais tourner à la légère.[paths] provisioningest l’endroit où Grafana cherche les dossiers de provisionnement. La valeur par défaut est/etc/grafana/provisioningsur les paquets.
SMTP pour les alertes par e-mail
[smtp]
enabled = true
host = smtp.example.com:587
user = grafana@example.com
password = $__file{/run/secrets/smtp_password}
from_address = grafana@example.com
from_name = Grafana
startTLS_policy = OpportunisticStartTLS
Ou la même chose avec GF_SMTP_ENABLED=true, GF_SMTP_HOST=..., et ainsi de suite. Vérifiez les noms d’options dans defaults.ini pour votre version.
Feature toggles
Les fonctionnalités expérimentales ou optionnelles s’activent dans une section dédiée :
[feature_toggles]
; listez les toggles voulus, tels que documentés pour votre version
newNavigation = true
Préférez le fichier ou l’environnement à l’interface, afin que le paramètre survive à une reconstruction. Les toggles apparaissent et disparaissent d’une version à l’autre : passez-les en revue à chaque mise à niveau.
Valider et inspecter la configuration effective
Après le démarrage de Grafana, vous pouvez comparer ce que vous avez défini avec ce qui est effectivement en vigueur :
curl -s -u admin:$GRAFANA_ADMIN_PASSWORD http://localhost:3000/api/admin/settings | jq '.server'
Ce endpoint d’administration renvoie les paramètres fusionnés, les valeurs des clés sensibles étant masquées. C’est le moyen le plus rapide de confirmer qu’une variable d’environnement a bien pris effet. Si ce n’est pas le cas, vérifiez l’orthographe de la variable (majuscules, tirets bas) et que l’option existe dans defaults.ini.
Gardez tout dans Git
- Commitez
grafana.iniet un.env.exampleavec des valeurs fictives. - Gardez les vrais secrets hors du dépôt : montez-les sous forme de fichiers, injectez-les comme variables d’environnement, ou commitez-les chiffrés (voir le guide sur les secrets).
- Examinez les changements de
defaults.inilors des mises à niveau de Grafana. Les nouvelles versions ajoutent des options et en déprécient parfois d’anciennes.
Guides populaires
-
Opérer Grafana comme du code : vue d'ensemble Ce qui peut vivre dans des fichiers, ce qui nécessite une API, et comment les pièces s'assemblent. -
Provisionner les tableaux de bord depuis des fichiers JSON Chargez les tableaux de bord depuis le disque, associez les dossiers aux répertoires et créez-les sans perdre vos modifications. -
Provisionner les règles d'alerte, les points de contact et les politiques de notification Définissez toute la chaîne d'alerting en YAML pour qu'elle soit relue et versionnée comme du code. -
Déployer Grafana sur Kubernetes avec Helm et des valeurs de provisionnement Exécutez Grafana depuis un chart Helm où sources de données, tableaux de bord et paramètres proviennent tous de fichiers de valeurs. -
Recharger, vérifier et dépanner le provisionnement en ligne de commande Découvrez ce que Grafana a chargé, rechargez sans redémarrer et corrigez les erreurs de provisionnement habituelles.