1. ¿Qué es Git Sync? #
El principio y lo que cambia.
El principio #
Disponible en: ✓ OSS ✓ Enterprise ✓ Cloud Experimental en Grafana 12, disponible en versión estable a partir de Grafana 13
Git Sync conecta Grafana con un repositorio Git (GitHub): los dashboards y carpetas de una carpeta de Grafana, o de toda la instancia, se almacenan como archivos JSON en una rama y una ruta del repositorio. Ambos lados permanecen sincronizados: un cambio guardado en Grafana se convierte en un commit (o en una pull request), y un commit enviado al repositorio actualiza Grafana.
Es la pieza de « observability as code » integrada en la interfaz: los equipos siguen construyendo sus dashboards visualmente, pero el historial, la revisión y la vuelta atrás pasan por Git.
¿Git Sync o provisioning por archivos? #
| Criterio | Provisioning por archivos | Git Sync |
|---|---|---|
| Sentido | Archivos → Grafana (solo lectura en la interfaz) | Grafana ⇄ Git (en ambos sentidos) |
| Modificar un dashboard | Editar el JSON y volver a desplegar | En la interfaz, y después commit o pull request |
| Revisión | En tu cadena CI/CD | Pull request abierta desde Grafana |
| Infraestructura | Acceso al sistema de archivos del servidor | Un repositorio de GitHub y un token |
| Grafana Cloud | No (sin acceso a los archivos) | Sí |
A tener en cuenta: el provisioning clásico (lección anterior) sigue siendo la solución adecuada para orígenes de datos o dashboards impuestos y no modificables; Git Sync conviene a los dashboards que los equipos hacen evolucionar.
2. Puesta en marcha #
Requisitos, token y conexión del repositorio.
Requisitos #
- Grafana 12 (función experimental) o Grafana 13 y posteriores; en Grafana Cloud, la función se ofrece en el stack.
- En Grafana 12 autoalojado: activar los feature toggles
provisioningykubernetesDashboards. - Un repositorio de GitHub dedicado (o una carpeta dedicada en un repositorio) y el rol de administrador en Grafana.
- Para la sincronización inmediata, una URL pública de Grafana accesible por los webhooks de GitHub; si no, Grafana consulta el repositorio a intervalos regulares.
# 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:latestEl token de GitHub #
Crea un fine-grained personal access token limitado al repositorio, con los permisos: Contents (lectura y escritura), Metadata (lectura), Pull requests (lectura y escritura) y Webhooks (lectura y escritura). Dale una fecha de caducidad y apúntala: cuando caduque, la sincronización se detiene.
Error común: usar un token clásico sobre todos tus repositorios. Limita siempre el token al único repositorio sincronizado.
Conectar el repositorio #
- Abre Administration › Provisioning (según la versión: Administration › General › Provisioning) y después Configure Git Sync.
- Pega el token, la URL del repositorio, la rama (por ejemplo
main) y la ruta de los archivos (por defectografana/). - Elige el destino: una carpeta de Grafana (recomendado para empezar) o toda la instancia.
- Elige si los dashboards existentes deben exportarse al repositorio en la primera sincronización.
- Configura la sincronización: webhook (inmediata) y/o intervalo de consulta, y guarda.
3. Trabajar en el día a día #
Guardar, revisar, volver atrás.
Guardar un dashboard #
Un dashboard sincronizado lleva la etiqueta Provisioned. Al guardar, Grafana propone escribir directamente en la rama configurada o crear una nueva rama y abrir una pull request. Con una pull request, el dashboard solo se actualiza en Grafana una vez fusionada la rama.
grafana/
├── equipe-web/
│ ├── apercu-service.json
│ └── latence-api.json
└── infra/
└── noeuds-kubernetes.jsonCada carpeta del repositorio corresponde a una carpeta de Grafana; cada archivo JSON es un dashboard.
Modificar desde Git #
Un commit en la rama (edición del JSON, cambio de nombre, eliminación) se aplica a Grafana en el siguiente webhook o en la siguiente consulta. Eliminar un archivo elimina el dashboard. Para volver atrás, basta con revertir el 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. Límites y buenas prácticas #
Evitar sorpresas desagradables.
Límites #
- Los recursos sincronizados son los dashboards y las carpetas; alertas, orígenes de datos y usuarios dependen de otras herramientas (provisioning, Terraform, API).
- GitHub es el proveedor compatible; comprueba la compatibilidad con GitHub Enterprise y otras forjas en la documentación de tu versión.
- En Grafana 12, la función es experimental: sin soporte y sujeta a cambios.
- Un dashboard sincronizado no debe gestionarse también mediante provisioning por archivos ni mediante Terraform.
Buenas prácticas #
- Empezar por una carpeta piloto en lugar de toda la instancia.
- Proteger la rama principal e imponer la pull request para las carpetas críticas.
- Añadir una comprobación en CI (JSON válido, sin UID duplicados).
- Usar una cuenta de servicio o un token dedicado, con rotación planificada.
- Documentar en el README del repositorio qué carpeta de Grafana corresponde a qué carpeta de Git.
Buena práctica: mantén estables los UID de los dashboards: sirven de clave entre Grafana y el repositorio, y los enlaces entre dashboards dependen de ellos.
Mi seguimiento
Inicia sesión para seguir tu progreso y tomar notas. Iniciar sesión
💬 Debates recientes del curso
- Grafana : une variable « service » qui dépend de la variable « environnement »✓ resuelto · 1 respuesta(s)
Hacer una pregunta sobre esta lección →Ver todos los debates del curso
Glossaire de la formation
Observabilidad
La capacidad de conocer el estado interno de un sistema a partir de los datos que emite.Estos datos se clasifican en 3 pilares: logs (registros)métric...
Grafana
Plataforma de código abierto para la visualización de datos y el análisis de métricas interactivas.
Prometheus
Sistema de monitorización y alertas de código abierto, particularmente adaptado para la recopilación de métricas en entornos dinámicos (como Kubernete...
APM (Application Performance Monitoring)
Monitorización del rendimiento de aplicaciones para identificar, diagnosticar y resolver problemas complejos relacionados con el rendimiento y la disp...
k6
Herramienta de código abierto para pruebas de carga (load testing) diseñada para ingeniería de rendimiento, que permite evaluar la fiabilidad y escala...
Trazas distribuidas
Técnica (proveniente del pilar de Trazas) que permite seguir el recorrido completo de una solicitud a través de múltiples microservicios para identifi...
Métricas
Medidas numéricas recopiladas a intervalos regulares (ej: CPU, RAM, tiempo de respuesta) utilizadas para evaluar el estado de salud general de un sist...
Alerting (Alertas)
Proceso que consiste en notificar a los equipos (vía email, Slack, Teams) cuando se detecta un evento específico, un umbral superado o una anomalía.
Código HTTP (HTTP Code)
Códigos de estado HTTP estandarizados que indican el resultado del procesamiento de una solicitud.1xx (Información): 100 Continue, 101 Switching Proto...
Access Log (Registro de acceso)
Archivo de registro que guarda las solicitudes procesadas por un servidor web (Apache, Nginx, Lighttpd, etc.). Permite rastrear la actividad del servi...
Client IP (IP del Cliente)
La dirección IP del usuario que realiza la solicitud hacia el servidor web. Cuando un usuario pasa por un Load Balancer o un proxy (ej: Cloudflare), l...
Timestamp (Marca de tiempo)
La fecha y la hora exactas en las que el servidor recibió la solicitud.Configuración: %t en Apache, $time_local o $time_iso8601 en Nginx.
Request (Solicitud)
La línea de solicitud inicial del cliente. Generalmente incluye el método HTTP (ej: GET), la URL solicitada y la versión del protocolo HTTP.Configurac...
Status Code (Código de estado)
El código de estado HTTP final devuelto por el servidor al cliente (ej: 200 para un éxito, 404 para recurso no encontrado).Configuración: %>s en Apach...
Size (Tamaño)
El volumen de datos devuelto al cliente, medido en bytes (generalmente sin los encabezados HTTP).Configuración: %b u %O en Apache, $body_bytes_sent en...
Referrer (Referente)
La URL de la página web desde la que el cliente hizo clic o siguió un enlace para acceder al recurso actual.Configuración: %{Referer}i en Apache, $htt...
User-Agent
La información de identificación proporcionada por el cliente sobre su navegador, su sistema operativo y su dispositivo. Su estructura estándar a menu...
Response Time (Tiempo de respuesta)
El tiempo total que tarda el servidor en procesar la solicitud y devolver la respuesta al cliente.Configuración: %D (microsegundos) o %T (segundos) en...
Artículos recomendados
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...
Banner de anuncio en Grafana: informar a todos los usuarios
Muestra un mensaje en la parte superior de todas las páginas de Grafana: activación, campo Messag...
Correlaciones en Grafana: pasar de un origen de datos a otro
Crea enlaces entre orígenes de datos en Explore: correlaciones de tipo consulta o externa, variab...
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...
Prometheus : visualiser ses métriques (UI, Grafana et dashboards)
Visualiser les données Prometheus : interface web, graphes PromQL, connexion à Grafana, dashboard...
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 ...
Frontend Observability dans Grafana Cloud
Le RUM de Grafana Cloud : Web Vitals, erreurs JavaScript et sessions, collectés par Faro.