1. Qu'est-ce que Git Sync ? #
Le principe et ce qu'il change.
Le principe #
Disponible dans : ✓ OSS ✓ Enterprise ✓ Cloud Expérimental en Grafana 12, disponible en version stable à partir de Grafana 13
Git Sync relie Grafana à un dépôt Git (GitHub) : les dashboards et dossiers d'un dossier Grafana, ou de toute l'instance, sont stockés sous forme de fichiers JSON dans une branche et un chemin du dépôt. Les deux côtés restent synchronisés : une modification enregistrée dans Grafana devient un commit (ou une pull request), et un commit poussé dans le dépôt met à jour Grafana.
C'est la brique « observability as code » intégrée à l'interface : les équipes continuent de construire leurs dashboards visuellement, mais l'historique, la revue et le retour arrière passent par Git.
Git Sync ou provisioning par fichiers ? #
| Critère | Provisioning par fichiers | Git Sync |
|---|---|---|
| Sens | Fichiers → Grafana (lecture seule dans l'interface) | Grafana ⇄ Git (deux sens) |
| Modifier un dashboard | Éditer le JSON puis redéployer | Dans l'interface, puis commit ou pull request |
| Revue | Dans votre chaîne CI/CD | Pull request ouverte depuis Grafana |
| Infrastructure | Accès au système de fichiers du serveur | Un dépôt GitHub et un jeton |
| Grafana Cloud | Non (pas d'accès aux fichiers) | Oui |
À savoir : le provisioning classique (leçon précédente) reste la bonne solution pour des sources de données ou des dashboards imposés et non modifiables ; Git Sync convient aux dashboards que les équipes font évoluer.
2. Mise en place #
Prérequis, jeton et connexion du dépôt.
Prérequis #
- Grafana 12 (fonction expérimentale) ou Grafana 13 et plus ; sur Grafana Cloud, la fonction est proposée dans la pile.
- En Grafana 12 auto-hébergé : activer les feature toggles
provisioningetkubernetesDashboards. - Un dépôt GitHub dédié (ou un dossier dédié dans un dépôt) et le rôle administrateur dans Grafana.
- Pour la synchronisation immédiate, une URL publique de Grafana joignable par les webhooks GitHub ; sinon Grafana interroge le dépôt à intervalle régulier.
# grafana.ini (Grafana 12 auto-hébergé)
[feature_toggles]
provisioning = true
kubernetesDashboards = truedocker run -d --name grafana -p 3000:3000 \
-e GF_FEATURE_TOGGLES_ENABLE=provisioning,kubernetesDashboards \
grafana/grafana:latestLe jeton GitHub #
Créez un fine-grained personal access token limité au dépôt, avec les permissions : Contents (lecture et écriture), Metadata (lecture), Pull requests (lecture et écriture) et Webhooks (lecture et écriture). Donnez-lui une date d'expiration et notez-la : à son expiration, la synchronisation s'arrête.
Erreur courante : utiliser un jeton classique sur tous vos dépôts. Limitez toujours le jeton au seul dépôt synchronisé.
Connecter le dépôt #
- Ouvrez Administration › Provisioning (selon la version : Administration › General › Provisioning) puis Configure Git Sync.
- Collez le jeton, l'URL du dépôt, la branche (par exemple
main) et le chemin des fichiers (par défautgrafana/). - Choisissez la cible : un dossier Grafana (recommandé pour commencer) ou toute l'instance.
- Choisissez si les dashboards existants doivent être exportés vers le dépôt lors de la première synchronisation.
- Réglez la synchronisation : webhook (immédiat) et/ou intervalle d'interrogation, puis enregistrez.
3. Travailler au quotidien #
Enregistrer, relire, revenir en arrière.
Enregistrer un dashboard #
Un dashboard synchronisé porte l'étiquette Provisioned. À l'enregistrement, Grafana propose d'écrire directement sur la branche configurée ou de créer une nouvelle branche et d'ouvrir une pull request. Avec une pull request, le dashboard n'est mis à jour dans Grafana qu'une fois la branche fusionnée.
grafana/
├── equipe-web/
│ ├── apercu-service.json
│ └── latence-api.json
└── infra/
└── noeuds-kubernetes.jsonChaque dossier du dépôt correspond à un dossier Grafana ; chaque fichier JSON est un dashboard.
Modifier depuis Git #
Un commit sur la branche (édition du JSON, renommage, suppression) est appliqué à Grafana au prochain webhook ou à la prochaine interrogation. Supprimer un fichier supprime le dashboard. Pour revenir en arrière, il suffit d'annuler le commit (git revert).
git pull
# corriger un seuil dans le JSON
git commit -am "latence-api : seuil d'alerte à 300 ms"
git push
# revenir à la version précédente
git revert HEAD && git push4. Limites et bonnes pratiques #
Éviter les mauvaises surprises.
Limites #
- Les ressources synchronisées sont les dashboards et les dossiers ; alertes, sources de données et utilisateurs relèvent d'autres outils (provisioning, Terraform, API).
- GitHub est le fournisseur pris en charge ; vérifiez la prise en charge de GitHub Enterprise et des autres forges dans la documentation de votre version.
- En Grafana 12, la fonction est expérimentale : sans support et susceptible de changer.
- Un dashboard synchronisé ne doit pas être aussi géré par le provisioning par fichiers ou par Terraform.
Bonnes pratiques #
- Commencer par un dossier pilote plutôt que toute l'instance.
- Protéger la branche principale et imposer la pull request pour les dossiers critiques.
- Ajouter une vérification en CI (JSON valide, pas d'UID en double).
- Utiliser un compte de service ou un jeton dédié, avec rotation planifiée.
- Documenter dans le README du dépôt quel dossier Grafana correspond à quel dossier Git.
Bonne pratique : gardez des UID de dashboard stables : ils servent de clé entre Grafana et le dépôt, et les liens entre dashboards en dépendent.
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
Grafana Provisioning : Automatisez la gestion de vos tableaux de bord et sources de données
Découvrez comment utiliser le provisioning de Grafana pour gérer vos configurations (dashboards, ...
Bonnes pratiques Grafana : dashboards, provisioning, performances et sécurité
Bonnes pratiques Grafana : conception de dashboards lisibles, variables, dashboards as code, prov...
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...
Bannière d'annonce dans Grafana : informer tous les utilisateurs
Affichez un message en haut de toutes les pages Grafana : activation, champ Message en Markdown e...
Prometheus : visualiser ses métriques (UI, Grafana et dashboards)
Visualiser les données Prometheus : interface web, graphes PromQL, connexion à Grafana, dashboard...
Monitors, SLO, dashboards et Datadog as code
Créer des monitors efficaces (métriques, logs, APM, composites, anomalies), des SLO, des dashboar...
Corrélations dans Grafana : passer d'une source de données à une autre
Créez des liens entre sources de données dans Explore : corrélations de type requête ou externe, ...
La stack LGTM (Loki, Grafana, Tempo, Mimir) : architecture et mise en place
Comprendre la stack LGTM de Grafana Labs : Loki pour les logs, Grafana pour la visualisation, Tem...
Application Observability dans Grafana Cloud
Superviser ses services avec les données OpenTelemetry : RED, cartes de services, traces et logs ...