Dashboards como código: Foundation SDK, Git Sync y la CLI gcx
Genera dashboards a partir de código tipado y sincronízalos con un repositorio de Git desde el propio Grafana.
Escribir JSON de dashboards a mano no escala, y exportarlo desde la interfaz deja a la interfaz como la fuente real. Las herramientas de observability-as-code de Grafana abordan ambos problemas: el Foundation SDK genera dashboards a partir de código tipado, Git Sync hace que Grafana lea y escriba dashboards en un repositorio de Git, y la CLI gcx sube y descarga recursos desde la terminal. Varias de estas funciones son recientes, y algunas APIs están marcadas como alpha, así que consulta la documentación de tu versión.
Genera dashboards con el Foundation SDK
El Foundation SDK proporciona builders para dashboards, paneles y consultas en Go, TypeScript, Python, PHP y Java. Describes un dashboard en un lenguaje tipado, y llamar a build() produce el JSON del dashboard. Como es código, obtienes comprobaciones en tiempo de compilación, reutilización (una función que construye una fila estándar de servicio) y revisión de código normal.
Instálalo para tu lenguaje, por ejemplo:
# Go
go get github.com/grafana/grafana-foundation-sdk/go@latest
# TypeScript
npm install @grafana/grafana-foundation-sdk
Los paquetes de Python, PHP y Java aparecen en la documentación del SDK. Está dirigido a Grafana 10 y posteriores.
Un flujo de trabajo típico:
- Escribe un pequeño programa que defina los dashboards y escriba el JSON de cada uno en
dashboards/<nombre>.json. - Ejecútalo en CI.
- Haz commit del JSON generado, o publícalo como artefacto de build.
- Entrega el JSON con el mecanismo que ya uses: una carpeta de proveedor, un ConfigMap, un recurso
GrafanaDashboard, Terraform o Git Sync.
# esquema de un job de CI
steps:
- run: npm ci
- run: npx tsx dashboards/generate.ts --out dashboards/generated
- run: git diff --exit-code dashboards/generated # falla si los archivos generados están desactualizados
La comprobación git diff --exit-code asegura que nadie edite el JSON generado a mano y que el código y la salida se mantengan sincronizados.
Git Sync
Git Sync permite a Grafana guardar dashboards como JSON en un repositorio de Git. Los cambios fluyen en ambos sentidos: una edición en la interfaz de Grafana se convierte en un commit o un pull request, y un cambio fusionado en el repositorio aparece en Grafana. Grafana consulta el repositorio cada 60 segundos por defecto, y un webhook hace que las actualizaciones lleguen casi de inmediato. Git Sync está disponible de forma general en Grafana 13 en todas las ediciones. Soporta GitHub (con autenticación de App), GitHub Enterprise, GitLab, Bitbucket y Git plano mediante un tipo de repositorio “Pure Git”.
Puedes configurarlo enteramente como código con un recurso Repository. Crea repository.yaml:
apiVersion: provisioning.grafana.app/v0alpha1
kind: Repository
metadata:
name: my-repo
spec:
title: My Repository
type: github
github:
url: https://github.com/<org>/<repo>
branch: main
path: grafana/
sync:
enabled: true
intervalSeconds: 60
target: folder
workflows:
- write
- branch
secure:
token:
create: '<git-personal-access-token>'
Notas sobre los campos:
typees uno degithub,githubEnterprise,gitlab,bitbucketogit, y cada uno tiene su propio bloque. Bitbucket y Git plano también necesitan untokenUser.pathes la carpeta del repositorio de la que Grafana es dueño.workflowscontrola qué hacen los guardados de la interfaz:writehace commit directamente en la rama, ybranchabre un pull request.sync.targetesfolder(el predeterminado) ofolderless.secure.tokenlleva la credencial, de modo que se guarda como secreto y no en la especificación. En lugar de un token puedes usar una conexión de GitHub App u OAuth app conspec.connection.name; esas necesitan unconnection.yamlaparte.- La versión de la API es
v0alpha1, así que los nombres de los campos pueden cambiar entre versiones.
Aplícalo con gcx (siguiente sección), o desde la interfaz de Grafana si lo prefieres.
En lo que Git Sync destaca: dejar que quienes crean desde la interfaz y quienes priorizan Git compartan una única fuente de verdad, con revisión por pull request en cada cambio. Lee la página de limitaciones de uso antes de adoptarlo en una instancia grande, ya que provisionar grandes cantidades de dashboards tiene consideraciones de rendimiento.
La CLI gcx
gcx es la línea de comandos de Grafana para trabajar con recursos y, en Grafana Cloud, con otros productos. Funciona con Grafana Cloud y con Grafana de código abierto o Enterprise 12 y posteriores, y reemplaza a la antigua herramienta grafanactl (migrar consiste sobre todo en renombrar el comando, y grafanactl resources serve pasa a ser gcx dev serve). Instálala desde el repositorio del proyecto y configura un contexto con la URL y el token de tu Grafana, como describe su documentación.
Comandos comunes:
# sube los archivos de recursos locales a Grafana
gcx resources push --path ./resources
# lista lo que existe, o inspecciona un recurso
gcx resources get repositories
gcx resources get repository/my-repo -o yaml
# edita o elimina
gcx resources edit repository/my-repo
gcx resources delete repository/my-repo
# previsualiza dashboards en vivo mientras desarrollas
gcx dev serve
Úsala en CI para subir definiciones de recursos desde el repositorio, o en local mientras construyes dashboards con el SDK.
Cómo elegir entre los enfoques
| Situación | Recurre a |
|---|---|
| Muchos dashboards similares, o bloques reutilizables | Foundation SDK, entregado por cualquier mecanismo |
| Los autores trabajan en la interfaz pero quieres Git como registro | Git Sync |
| GitOps en Kubernetes, un objeto por dashboard | Grafana Operator |
| Automatización de toda la plataforma, incluidos equipos y permisos | Terraform |
| Un Grafana, archivos JSON estáticos | Carpeta de proveedor simple |
Se combinan bien: genera JSON con el SDK, haz commit en un repositorio y deja que Git Sync o una carpeta de proveedor lo entregue.
Verifica
gcx resources get repositories
curl -s -u admin:$GRAFANA_ADMIN_PASSWORD \
"http://localhost:3000/api/search?type=dash-db" | jq '.[] | {title, folderTitle}'
Para problemas de sincronización de repositorios, comprueba el estado del repositorio en Grafana (en Administration, luego Provisioning) y el log del servidor de Grafana. Los problemas típicos son un token caducado, una rama o ruta incorrectas y un webhook que no puede llegar a Grafana.
Guías populares
-
Opera Grafana como código: la visión de conjunto Qué puede vivir en archivos, qué necesita una API y cómo encajan las piezas. -
Configura el servidor de Grafana con grafana.ini y variables de entorno Sabe dónde viven los archivos de configuración, cómo se ordenan las sobrescrituras y cómo mantener los ajustes en Git. -
Provisiona dashboards desde archivos JSON Carga dashboards desde disco, asigna carpetas a partir de directorios y crea dashboards sin perder cambios. -
Provisiona reglas de alertas, contact points y políticas de notificación Define todo el pipeline de alertas en YAML para que se revise y versione como código. -
Despliega Grafana en Kubernetes con Helm y valores de provisioning Ejecuta Grafana desde un chart de Helm donde los data sources, dashboards y ajustes provienen de archivos de valores. -
Recarga, verifica y soluciona problemas de provisioning desde la línea de comandos Averigua qué cargó Grafana, recarga sin reiniciar y arregla los errores de provisioning más habituales.