1. Introduction au Provisioning Grafana #
Comprendre le concept et les avantages de la gestion de configuration 'as Code' pour Grafana.
Le principe du Provisioning #
Disponible dans : ✓ OSS ✓ Enterprise ✓ Cloud Fichiers de provisioning en auto-hébergé ; dans Grafana Cloud, préférez l’API ou Terraform
Le provisioning Grafana est une fonctionnalité qui permet de gérer la configuration de votre instance Grafana (sources de données, tableaux de bord, notificateurs, etc.) via des fichiers de configuration externes, généralement au format YAML. Au lieu de créer et de modifier ces éléments manuellement via l'interface utilisateur de Grafana, vous définissez leur état souhaité dans des fichiers qui sont ensuite lus et appliqués par Grafana au démarrage ou à intervalles réguliers.
Cela transforme la gestion de votre Grafana en une approche Infrastructure as Code (IaC), où l'état de votre plateforme est décrit dans des fichiers versionnés, auditables et reproductibles.
Pourquoi l'utiliser ? Les avantages clés #
- Automatisation et CI/CD : Intégrez la création et la mise à jour de vos configurations Grafana directement dans vos pipelines de livraison continue (CI/CD).
- Reproductibilité : Assurez-vous que tous vos environnements Grafana (développement, test, production) sont configurés de manière identique et cohérente.
- Versionnement : Suivez les modifications de vos configurations dans un système de contrôle de version (Git), permettant un audit facile et un retour arrière si nécessaire.
- Collaboration : Facilitez la collaboration entre les équipes en permettant aux développeurs et aux opérateurs de contribuer aux configurations Grafana via du code.
- Réduction des erreurs : Minimisez les erreurs manuelles et les dérives de configuration (configuration drift) en automatisant le processus.
2. Provisioning des Sources de Données (Data Sources) #
Automatisez la déclaration et la configuration de vos sources de données externes.
Utilité et structure du fichier de configuration #
Le provisioning des sources de données est essentiel pour garantir que votre instance Grafana puisse se connecter aux systèmes de monitoring (Prometheus, Elasticsearch, InfluxDB, etc.) dès son démarrage, sans intervention manuelle. Le fichier de configuration des sources de données est généralement placé dans le répertoire /etc/grafana/provisioning/datasources (ou un chemin similaire selon votre installation).
Chaque source de données est définie par un type, un nom, une URL, et des options spécifiques (authentification, version, etc.).
Exemples de configuration YAML #
Exemple de fichier pour provisionner des sources de données :
# /etc/grafana/provisioning/datasources/datasources.yaml
apiVersion: 1
datasources:
- name: Prometheus
type: prometheus
uid: prometheus_ds
access: proxy
url: http://prometheus:9090
isDefault: true
editable: false
- name: Elasticsearch
type: elasticsearch
uid: elasticsearch_ds
access: proxy
url: https://elasticsearch:9200
editable: false
basicAuth: true
basicAuthUser: grafana_user
secureJsonData:
basicAuthPassword: ${ES_PASSWORD} # variable d'environnement, jamais en clair
jsonData:
index: "logs-*"
timeField: "@timestamp"
maxConcurrentShardRequests: 5editable: false empêche les modifications par l'interface, et secureJsonData, alimenté par une variable d'environnement, garde les secrets hors du fichier.
À savoir : Le champversiond'une source de données est un numéro de révision de la configuration (un entier), pas la version d'Elasticsearch. L'ancien réglage numériqueesVersion: 70est déprécié : les versions récentes de Grafana détectent la version d'Elasticsearch, il n'est donc plus nécessaire de la déclarer.
3. Provisioning des Tableaux de Bord (Dashboards) #
Gérez vos visualisations et tableaux de bord de manière automatisée et versionnée.
Utilité et structure du fichier de configuration #
Le provisioning des tableaux de bord déploie automatiquement vos visualisations et les maintient à jour. Un fichier de providers placé dans /etc/grafana/provisioning/dashboards indique à Grafana où lire les fichiers JSON des dashboards et dans quel dossier les ranger.
Le provisioning par fichiers ne charge que des fichiers JSON locaux : il ne sait pas importer un dashboard de Grafana.com par son identifiant. Cette fonction est offerte par le chart Helm de Grafana (clé dashboards avec gnetId), qui télécharge le JSON avant le démarrage, ou par l'API d'import.
Exemples de configuration YAML #
Exemple de fichier de providers :
# /etc/grafana/provisioning/dashboards/dashboards.yaml
apiVersion: 1
providers:
- name: applications
orgId: 1
folder: Mes applications
type: file
disableDeletion: true # un dashboard supprimé du disque n'est pas supprimé de Grafana
updateIntervalSeconds: 30 # relecture des fichiers
allowUiUpdates: false # modifications dans l'interface interdites (elles seraient écrasées)
options:
path: /var/lib/grafana/dashboards/applications
foldersFromFilesStructure: false
- name: infrastructure
orgId: 1
folder: Infrastructure
type: file
updateIntervalSeconds: 60
allowUiUpdates: false
options:
path: /var/lib/grafana/dashboards/infrastructureLes fichiers JSON des dashboards s'exportent depuis Grafana (Export > Export as JSON) et se déposent dans les répertoires indiqués par options.path.
Erreur Courante : La clé racine estproviders:, et les réglagesupdateIntervalSecondsetallowUiUpdatesse placent au niveau du provider, pas dansoptions. L'ancien réglageeditabledes providers est remplacé parallowUiUpdates.
4. Provisioning de l'alerting (points de contact et politiques) #
Déclarer points de contact, politiques de notification et règles d'alerte de Grafana Alerting.
Utilité et structure #
Depuis Grafana Alerting (alerting unifié), le dossier provisioning/notifiers et ses notifiers appartiennent à l'ancien alerting, retiré des versions récentes. On provisionne désormais des fichiers dans /etc/grafana/provisioning/alerting : contact points, notification policies, règles d'alerte, templates et mute timings.
Bonne Pratique : Le plus simple pour obtenir un fichier correct : configurer l'élément dans l'interface, puis utiliser Export (format YAML de provisioning) depuis la page des points de contact, des politiques ou des règles.
Exemples de configuration YAML #
Exemple : un point de contact Slack et la politique racine.
# /etc/grafana/provisioning/alerting/notifications.yaml
apiVersion: 1
contactPoints:
- orgId: 1
name: equipe-ops
receivers:
- uid: slack-ops
type: slack
settings:
url: ${SLACK_WEBHOOK_URL}
recipient: "#alertes"
policies:
- orgId: 1
receiver: equipe-ops
group_by: [grafana_folder, alertname]
group_wait: 30s
group_interval: 5m
repeat_interval: 4hComme pour les sources de données, l'URL du webhook vient d'une variable d'environnement ou d'un secret, jamais du fichier versionné.
5. Autres types de Provisioning et Bonnes Pratiques #
Élargir le champ d'application du provisioning et adopter les meilleures pratiques.
Plugins, utilisateurs et équipes #
- Plugins : on les installe (variable
GF_INSTALL_PLUGINS, CLI, chart Helm) ; les applications de plugins se provisionnent dansprovisioning/plugins. - Utilisateurs et équipes : Grafana ne permet pas de les provisionner par fichiers YAML. On les gère par l'API HTTP, par le fournisseur Terraform
grafana/grafana(grafana_user,grafana_team), ou mieux par la synchronisation d'un annuaire (LDAP, OAuth, SAML, SCIM).
resource "grafana_team" "ops" {
name = "Ops"
members = ["alice@example.com", "bob@example.com"]
}Bonnes pratiques pour un Provisioning efficace #
- Versionnez tout : Stockez tous vos fichiers de provisioning dans un dépôt Git.
- Utilisez des secrets : Ne mettez jamais d'informations sensibles (mots de passe, clés API) directement dans les fichiers de configuration. Utilisez des variables d'environnement, des secrets Kubernetes, ou un coffre-fort de secrets (Vault).
- Intégrez au CI/CD : Automatisez le déploiement de vos configurations Grafana à chaque changement de code ou de déploiement d'application.
- Testez vos configurations : Validez vos fichiers YAML avant de les déployer en production.
- Documentation : Documentez clairement la structure de vos fichiers de provisioning et les conventions de nommage utilisées.
Mon suivi
Connectez-vous pour suivre votre progression et prendre des notes. Se connecter
💬 Discussions récentes de la formation
- Grafana : une variable « service » qui dépend de la variable « environnement »✓ résolu · 1 réponse(s)
Poser une question sur cette leçon →Voir toutes les discussions de la formation
Glossaire de la formation
Observabilité
La capacité à connaître l'état interne d'un système à partir des données qu'il émet.Ces données sont classées en 3 piliers : logsmétriquestracesprofil...
Grafana
Plateforme open source de visualisation de données et d'analyse de métriques interactives.
Prometheus
Système open source de surveillance et d'alerte, particulièrement adapté pour la collecte de métriques dans des environnements dynamiques (comme Kuber...
APM (Application Performance Monitoring)
Surveillance des performances applicatives pour identifier, diagnostiquer et résoudre les problèmes complexes liés aux performances et à la disponibil...
k6
Outil open source de test de charge (load testing) conçu pour l'ingénierie de performance, permettant d'évaluer la fiabilité et la scalabilité des sys...
Traces distribuées
Technique (issue du pilier des Traces) permettant de suivre le cheminement complet d'une requête à travers de multiples micro-services pour identifier...
Métriques
Mesures numériques collectées à intervalles réguliers (ex: CPU, RAM, temps de réponse) utilisées pour évaluer l'état de santé global d'un système au f...
Alerting
Processus consistant à notifier les équipes (via email, Slack, Teams) lorsqu'un événement spécifique, un dépassement de seuil ou une anomalie est déte...
HTTP Code
Codes de statut HTTP standardisés indiquant le résultat du traitement d'une requête.1xx (Information) : 100 Continue, 101 Switching Protocols.2xx (Suc...
Access Log
Fichier de journalisation enregistrant les requêtes traitées par un serveur web (Apache, Nginx, Lighttpd, etc.). Il permet de tracer l'activité du ser...
Client IP
L'adresse IP de l'utilisateur effectuant la requête vers le serveur web. Lorsqu'un utilisateur passe par un Load Balancer ou un proxy (ex: Cloudflare)...
Timestamp
La date et l'heure exactes auxquelles la requête a été reçue par le serveur.Configuration : %t dans Apache, $time_local ou $time_iso8601 dans Nginx.
Request
La ligne de requête initiale du client. Elle comprend généralement la méthode HTTP (ex: GET), l'URL demandée et la version du protocole HTTP.Configura...
Status Code
Le code de statut HTTP final renvoyé par le serveur au client (ex : 200 pour un succès, 404 pour ressource non trouvée).Configuration : %>s dans Apach...
Size
Le volume des données renvoyées au client, mesuré en octets (généralement sans les en-têtes HTTP).Configuration : %b ou %O dans Apache, $body_bytes_se...
Referrer
L'URL de la page web depuis laquelle le client a cliqué ou suivi un lien pour accéder à la ressource actuelle.Configuration : %{Referer}i dans Apache,...
User-Agent
Les informations d'identification fournies par le client concernant son navigateur, son système d'exploitation et son appareil. Sa structure standard ...
Response Time
La durée totale prise par le serveur pour traiter la requête et renvoyer la réponse au client.Configuration : %D (microsecondes) ou %T (secondes) dans...
Grafana Loki
Système de journalisation (logs) multi-tenant, hautement disponible et inspiré de Prometheus. Il est conçu pour être très économe en ressources en n'i...
Articles recommandés
Bonnes pratiques Grafana : dashboards, provisioning, performances et sécurité
Bonnes pratiques Grafana : conception de dashboards lisibles, variables, dashboards as code, prov...
Visualiser et automatiser Zabbix : dashboards, Grafana et API
Construire des dashboards et cartes dans Zabbix, utiliser le plugin Zabbix de Grafana, et automat...
Les Data Sources dans Grafana : Connectez et unifiez vos données
Apprenez à étendre les capacités de Grafana via les Data Sources. Découvrez les plugins essentiel...
Cross-dashboard variables Grafana : partager des variables entre dashboards
Créez une fois vos variables Grafana et réutilisez-les partout : portée globale ou par dossier, a...
Maîtriser les Variables dans Grafana : Dynamisez vos Tableaux de Bord
Apprenez à utiliser les variables pour créer des tableaux de bord interactifs et réutilisables. D...
Tableaux de bord Grafana avec la source de données Zabbix
Afficher Zabbix dans Grafana : installer le plugin, créer un utilisateur et un jeton d'API, confi...
Grafana Alerting et gestion des astreintes
Créer des alertes dans Grafana (règles, points de contact, politiques de notification), les provi...
Créer des tableaux de bord dans Zabbix : dashboards, widgets et pages
Construire des dashboards Zabbix utiles : pages, widgets (Graph, Problems, Top hosts, Honeycomb, ...
Prometheus : visualiser ses métriques (UI, Grafana et dashboards)
Visualiser les données Prometheus : interface web, graphes PromQL, connexion à Grafana, dashboard...