Ir al contenido

Importar

Cinco dashboards, todos en inglés, todos en el formato de exportación compartible de Grafana: el datasource es un marcador ${DS_...} y el bloque __inputs pide a quien importa que elija el suyo.

FicheroPanelesAlmacén
ghchronicle-influxdb.json152InfluxDB 3, consultado con SQL
ghchronicle-prometheus.json152Prometheus
ghchronicle-postgres.json152PostgreSQL o TimescaleDB, desde el destino SQL
ghchronicle-graphite.json152Graphite, desde el destino de Graphite
ghchronicle-elasticsearch.json152Elasticsearch u OpenSearch, desde el destino de Elasticsearch

Las cinco tienen los mismos paneles en el mismo orden. Lo que cambia es cuántos puede responder el almacén que hay detrás de cada una.

Qué puede responder cada almacén, sección a sección Una matriz de las 17 secciones de la dashboard frente a los cinco almacenes, del más capaz al menos. Cada celda da los paneles que ese almacén responde con una consulta sobre los paneles de esa sección, y se rellena en proporción. En total: InfluxDB 150, PostgreSQL 150, Elasticsearch 145, Graphite 144, Prometheus 126, sobre 150. 7 secciones las responden enteras los cinco. Prometheus es el que menos responde, y donde más pierde es en Contributions (6 de 11), Pull requests and issues (10 de 14), Continuous integration (10 de 14), Planning and community (8 de 10). InfluxDB PostgreSQL Elasticsearch Graphite Prometheus Overview 4/4 4/4 4/4 4/4 4/4 Lifetime 5/5 5/5 5/5 5/5 5/5 Audience 6/6 6/6 6/6 6/6 5/6 Stars and forks 5/5 5/5 5/5 5/5 5/5 Contributions 11/11 11/11 10/11 10/11 6/11 Pull requests and issues 14/14 14/14 14/14 14/14 10/14 Continuous integration 14/14 14/14 13/14 13/14 10/14 Code 9/9 9/9 8/9 8/9 8/9 Planning and community 10/10 10/10 10/10 10/10 8/10 Delivery and access 13/13 13/13 13/13 13/13 13/13 Releases 4/4 4/4 3/4 4/4 2/4 Security 14/14 14/14 14/14 13/14 13/14 Cost 6/6 6/6 6/6 6/6 6/6 Activity 9/9 9/9 9/9 8/9 7/9 Inventory 16/16 16/16 15/16 15/16 14/16 Profile and sponsorship 8/8 8/8 8/8 8/8 8/8 The collector itself 2/2 2/2 2/2 2/2 2/2 Total 150/150 150/150 145/150 144/150 126/150 Un panel que un almacén no puede responder se publica como panel de texto con el mismo título, así que las cinco dashboards tienen la misma forma y los mismos 152 paneles. 2 de ellos son prosa en todos los almacenes y quedan fuera de este recuento. respondido por una consulta respondido con un panel de texto
Qué puede responder cada almacén, sección a sección Una matriz de las 17 secciones de la dashboard frente a los cinco almacenes, del más capaz al menos. Cada celda da los paneles que ese almacén responde con una consulta sobre los paneles de esa sección, y se rellena en proporción. En total: InfluxDB 150, PostgreSQL 150, Elasticsearch 145, Graphite 144, Prometheus 126, sobre 150. 7 secciones las responden enteras los cinco. Prometheus es el que menos responde, y donde más pierde es en Contributions (6 de 11), Pull requests and issues (10 de 14), Continuous integration (10 de 14), Planning and community (8 de 10). InfluxDB PostgreSQL Elasticsearch Graphite Prometheus Overview 4/4 4/4 4/4 4/4 4/4 Lifetime 5/5 5/5 5/5 5/5 5/5 Audience 6/6 6/6 6/6 6/6 5/6 Stars and forks 5/5 5/5 5/5 5/5 5/5 Contributions 11/11 11/11 10/11 10/11 6/11 Pull requests and issues 14/14 14/14 14/14 14/14 10/14 Continuous integration 14/14 14/14 13/14 13/14 10/14 Code 9/9 9/9 8/9 8/9 8/9 Planning and community 10/10 10/10 10/10 10/10 8/10 Delivery and access 13/13 13/13 13/13 13/13 13/13 Releases 4/4 4/4 3/4 4/4 2/4 Security 14/14 14/14 14/14 13/14 13/14 Cost 6/6 6/6 6/6 6/6 6/6 Activity 9/9 9/9 9/9 8/9 7/9 Inventory 16/16 16/16 15/16 15/16 14/16 Profile and sponsorship 8/8 8/8 8/8 8/8 8/8 The collector itself 2/2 2/2 2/2 2/2 2/2 Total 150/150 150/150 145/150 144/150 126/150 Un panel que un almacén no puede responder se publica como panel de texto con el mismo título, así que las cinco dashboards tienen la misma forma y los mismos 152 paneles. 2 de ellos son prosa en todos los almacenes y quedan fuera de este recuento. respondido por una consulta respondido con un panel de texto

El dashboard de InfluxDB sobre noventa días de la base de datos de demostración: el selector de repositorio y el rango arriba, el Overview con el distintivo de ghchronicle y cuatro grupos de tarjetas que dicen 5 repositorios con 350 estrellas y 51 forks, 37,5 mil visitas con 21,1 mil visitantes únicos y 19,6 mil clones, 117 seguidores y 58 seguidos con 4 patrocinadores y 2 patrocinados, y 3,22 mil contribuciones en 7,78 años, después la cabecera plegada de Lifetime y la sección Audience con visitas, visitantes únicos y clones por día, los referrers principales, las rutas más visitadas y la amplificación de clones

La cuenta de esa captura es la inventada que usan todas las capturas de esta documentación, acme y cinco repositorios, descrita junto a lo que muestran los paneles. Todas las secciones salvo el Overview se envían plegadas, por eso Lifetime es ahí una cabecera.

  1. En Grafana, ve a Dashboards, luego New, luego Import.

  2. Sube el ghchronicle-<almacén>.json del almacén que estés usando.

  3. Elige el datasource que pide Grafana.

    El datasource de InfluxDB 3 para la base de datos en la que escribe el destino, en modo SQL.

Nombra la entrada que declara el fichero:

Ventana de terminal
curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d "{\"dashboard\": $(cat ghchronicle-influxdb.json), \"inputs\": [
{\"name\":\"DS_INFLUXDB\",\"type\":\"datasource\",\"pluginId\":\"influxdb\",\"value\":\"<uid>\"}],
\"overwrite\": true}" \
"$GRAFANA/api/dashboards/import"

Las entradas son DS_INFLUXDB (influxdb), DS_PROMETHEUS (prometheus), DS_POSTGRES (grafana-postgresql-datasource), DS_GRAPHITE (graphite) y DS_ELASTICSEARCH (elasticsearch).

Cada fichero lleva un uid fijo (ghchronicle-<almacén>). Eso es deliberado para una importación desde el repositorio, donde un uid estable significa una URL estable y una reimportación actualiza en el sitio en vez de duplicar. Importar dos de estos en un mismo Grafana no da problemas, porque los uid difieren por almacén y no pueden chocar.

cmd/internal/dashboards tiene una lista ordenada de secciones y paneles, y cada panel lleva un conjunto de consultas por almacén. El generador elige un conjunto y emite el JSON, así que todos los ficheros tienen los mismos paneles en los mismos sitios con los mismos títulos, y se niega a escribir ficheros cuyas disposiciones se hayan separado.

Ventana de terminal
go run ./cmd/gen_dashboards # escribe los cinco ficheros
go run ./cmd/gen_dashboards -check # no escribe nada, falla si están caducos

Edita cmd/internal/dashboards/sections_*.go, no el JSON. panels.go tiene los constructores de panel que usa, query.go los ayudantes de consulta de cada almacén, y stores.go solo elige un conjunto de consultas y un datasource.

Los ficheros ya tienen la forma que exige el directorio: __inputs declara el datasource que quien importa debe elegir, __requires nombra la versión de Grafana y el plugin, y no hay clave id, que el directorio asigna al publicar.

Conserva nombres de listado distintos, porque cinco dashboards con el mismo título son indistinguibles en los resultados de búsqueda: “ghchronicle for InfluxDB”, “ghchronicle for Prometheus”, “ghchronicle for PostgreSQL and TimescaleDB”, “ghchronicle for Graphite”, “ghchronicle for Elasticsearch and OpenSearch”.

Publicar de nuevo contra el mismo listado añade una revisión en vez de reemplazarlo, así que una regeneración que cambie paneles es una revisión nueva de los mismos cinco listados, no cinco listados nuevos.

Eso es lo que necesita saber quien lee. El paso a paso, con los nombres de los listados, qué debe mostrar cada captura y qué hacer cuando rechazan una revisión, es tarea de quien mantiene el proyecto y vive en dashboards/PUBLISHING.md dentro del repositorio.