RousselTMLEARNING

Artículo · Grafana: del descubrimiento a la experiencia

Git Sync: versionar los dashboards en GitHub

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.

Grafana guarda en el repositorio mediante commit o pull request; el repositorio actualiza Grafana.
El repositorio se convierte en la fuente de verdad de los dashboards sincronizados.

¿Git Sync o provisioning por archivos? #

CriterioProvisioning por archivosGit Sync
SentidoArchivos → Grafana (solo lectura en la interfaz)Grafana ⇄ Git (en ambos sentidos)
Modificar un dashboardEditar el JSON y volver a desplegarEn la interfaz, y después commit o pull request
RevisiónEn tu cadena CI/CDPull request abierta desde Grafana
InfraestructuraAcceso al sistema de archivos del servidorUn repositorio de GitHub y un token
Grafana CloudNo (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 provisioning y kubernetesDashboards.
  • 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 = true
docker run -d --name grafana -p 3000:3000 \
  -e GF_FEATURE_TOGGLES_ENABLE=provisioning,kubernetesDashboards \
  grafana/grafana:latest

El 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 #

  1. Abre Administration › Provisioning (según la versión: Administration › General › Provisioning) y después Configure Git Sync.
  2. Pega el token, la URL del repositorio, la rama (por ejemplo main) y la ruta de los archivos (por defecto grafana/).
  3. Elige el destino: una carpeta de Grafana (recomendado para empezar) o toda la instancia.
  4. Elige si los dashboards existentes deben exportarse al repositorio en la primera sincronización.
  5. Configura la sincronización: webhook (inmediata) y/o intervalo de consulta, y guarda.
Requisitos, token de GitHub, Provisioning, repositorio, destino y sincronización.
La pestaña Events de la conexión muestra después cada sincronización y sus errores.

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.json

Cada 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 push

4. 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.

📄 Git Sync en Grafana: versionar los dashboards en GitHub →

Mi seguimiento

  • ⏱ Duración estimada : ≈ 9 min

Inicia sesión para seguir tu progreso y tomar notas. Iniciar sesión

💬 Debates recientes del curso

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.

Apoyar

♥ APOYAR

Apoya RousselTM Learning

Los cursos, artículos, prácticas y certificados siguen siendo gratuitos y sin publicidad intrusiva. Una contribución libre, por el importe que elijas, financia el alojamiento, los entornos de prácticas y nuevos contenidos.

Contribuir con PayPal Importe libre · tarjeta o cuenta PayPalMás información
QR code PayPal
O escanea este código QR con tu teléfono

¡Gracias, cada contribución cuenta!