
Consultar API REST des de Grafana
Si podem consumir les dades que necessitem via REST API (en format JSON), podrem per tant visualitzar-nos a Grafana! El món és marrec amb Grafana! Així que, com sabem, avui dia, gairebé qualsevol app ens permet realitzar consultes mitjançant API, No esperis més i a exprimir-les!
Bo, y antes de nada… deciros que arrancamos tras un veranito de gozo y disfrute =) y trabajo, vagi… Que han sido unos meses de desconexión y esperamos quien sabe si 1 o mejor 2 posts por semana hasta fin de año… El temario más o menos lo tengo, pero mis hijos me chupan la vida :-), vingui, ¡al torró!
En este post haremos algo sencillo, un ejemplo de lo que requeriremos para tenerlo en marcha. Pongamos una app, en este caso particular usaremos Wekan, que es un organizador Kanban y es con el que gestiono entre otras, las Tareas pendientes a realizar (en mi vida, en el treball, con prioridades…). Como es una app que permite vía REST API en formato JSON consultar los datos, pues la intención será hacer un Dashboard en Grafana que me ordene las tareas pendientes, i clar, luego este pool rotatorio irá a la pantalla del helpdesk. Será una consulta directamente, que podremos cachear o no si queremos los valores durante un tiempo, no se almacenará en ninguna BD.
El primer, en Grafana instalaremos el datasource ‘JSON API’ & reiniciamos Grafana:
grafana-cli plugins install marcusolsson-json-datasource
systemctl restart grafana-server
Pongamos este ejemplo sencillo, tras leer la documentación de cada app podremos conocer cómo consultar los datos que necesitemos; el que s' ha dit, Wekan, y que liste las Cards, que en mi caso las uso como Tareas, con un curl lo haríamos así rápido para validar la salida de lo que veremos luego en Grafana:
curl -H "Authorization: Bearer XXXXXXXXXX" -X GET http://192.168.1.115:3001/api/boards/xxxxxx/lists/xxxxxx/cards [{"_id":"MRodsfJo","title":"Tarea 1...","description":"","assignees":[]},{"_id":"dfgmh2","title":"Tarea 2...","description":"","assignees":[]},{"_id":"Rymt8","title":"Tarea 3...","description":"","assignees":[]}....
En aquest cas, requiere autenticación, y va en la cabecera, con su token, y luego le hacemos un GET de la sección que nos interese.
Podremos ya crear el Data Source en Grafana que apunte a la URL raíz de las API y en este caso la autenticación se la mandaremos en una cabecera personalizada. Es que Wekan es un ejemplo algo particular, ya que todo lo que va detrás de los ‘:’ de ‘Authorization’ lo pondremos como ‘value’ en el ‘Header’ (no solo el Token, però en aquest cas, insisto).
Y ya en un Dashboard en Grafana podremos añadir un Panel nuevo, del tipo que necesitemos, en mi caso con uno sencillo en formato tabla me vale, quiero simplemente ver las Tareas Urgentes pendientes. Indicamos el campo que queremos extraer, en este caso en formato JSONPath y en mi caso particular si os fijáis bien en el curl anterior, sería ‘$.*.title’ para obtener los títulos de todas las Tarjetas.
En la pestaña ‘Path’ podremos especificar la ruta de la consulta, en este caso de tipo GET y (en el meu cas) añadiendo el path: ‘/boards/xxxxxxxxxx/lists/xxxxxxxxxx/cards’
Y esto sería un ejemplo de algunas de las Tareas Urgentes que tengo pendiente ahora mismo 🙂
El que s'ha dit, es un mero ejemplo de cómo consumir desde Grafana mediante APIs directamente datos en formato JSON que nos pueda escupir la app remota. Espero que le podáis sacar alguna utilidad, la verdad que tiene 1000 posibilidades y me quedo corto 😉
Que seáis felices, que ha sido un placer escribir estas pocas líneas, pero tengo que ir sacando el óxido, algunos documentos que a lo mejor os resultan interesantes y otros no tanto, pero con intención de que aporten algo. Un besazo!