
Generando informes con Grafana y programar su envio
En este post veremos algo muy interesante, si disponemos de unos Dashboards de Grafana chulisimos, donde con unas gráficas personalizadas vemos en todo momento la situación de nuestra plataforma, no? Imaginaros que a esto, le añadimos la posibilidad de generar un informe del Dashboard que nos interese en PDF, y programamos su envío por correo electrónico para ver el resumen de ayer, de la semana pasada…
Al grano, venga! Empezamos con una utilidad que ha desarrrollado Izak Marais y tenemos en el GitHub (de Microsoft ya, quien lo entiende…), bien, tenemos un servicio que mediante pdflatex generará un archivo PDF del Dashboard que nos interese, y luego ya con sendemail enviaremos el mail totalmente personalizado y con los informes que nos de la gana!
Requistos,
Lo primero, en nuestra máquina de Grafana, en mi caso es un Centos 7.3 al que le instalaremos los siguientes requisitos:
[sourcecode]yum install texlive-pdftex texlive-latex-bin texlive-texconfig* texlive-latex* texlive-metafont* texlive-cmap* texlive-ec texlive-fncychap* texlive-pdftex-def texlive-fancyhdr* texlive-titlesec* texlive-multirow texlive-framed* texlive-wrapfig* texlive-parskip* texlive-caption texlive-ifluatex* texlive-collection-fontsrecommended texlive-collection-latexrecommended texinfo-tex[/sourcecode]
Nos descargamos Go y lo instalamos:
[sourcecode]wget https://dl.google.com/go/go1.10.2.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.10.2.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin[/sourcecode]
Y ya por fin nos descargamos el Reporter que nos permitirá lo dicho, generar un PDF con los Dashboards de Grafana:
[sourcecode]go get github.com/IzakMarais/reporter/…
go install -v github.com/IzakMarais/reporter/cmd/grafana-reporter[/sourcecode]
Acabamos ya abriendo el puerto en el firewall y recargando la configuración:
[sourcecode]firewall-cmd –zone=public –permanent –add-port=8686/tcp
firewall-cmd –reload[/sourcecode]
Podremos probar a ejecutarlo directamente para validar que todo funciona bien, o usar ‘–help’ para ver algún parámetro interesante, como es el de conectar a un Grafana remoto, etc… ejecutamos:
[sourcecode]/root/go/bin/grafana-reporter[/sourcecode]
Ojo! Antes de seguir, los Dashboards tienen que estar creados en Grafana v5 y no heredados de v4, ok? Si tenemos algún dashboard viejo, tan sencillo será hacer un “Guardar Como…” y lo tendremos convertido en version 5.
Generando un informe manualmente,
Ahora mismo ya podríamos probar a generar un informe, tenemos un par de opciones, una que sería crear un botón de Informe en el propio Dashboard para que cuando alguien quiera, se descargue un PDF de lo que está viendo. Sería tan fácil como en Grafana:
Dentro del Dashboard que nos interese > Pulsamos en la tuerca o “Settings” > “Link” > “Add Dashboard Link” e indicamos los siguientes datos
- Type: Link, dejamos marcado ese tipo.
- Url: http://DIRECCION_IP_GRAFANA:8686/api/v5/report/{dashboardUID}
- Title: Informe PDF
- Tooltip: Genera un PDF de este Dashboard
- Icon: doc, para que sea un icono de un documento.
- Time range: Lo marcamos para permitir poner periodos de tiempo.
- Variable values: Lo marcamos para jugar con las fechas.
- Open in new tab: Lo marcamos si queremos que el PDF lo genere en una nueva pestaña.
Y nada, veríamos un botón que al pulsar pues nos generará el informe en PDF!
Como podemos intuir, la URL para generar el PDF sería algo como (obviamente podremos jugar con los margenes de las fechas o periodos del PDF):
[sourcecode]http://DIRECCIÓN_IP_GRAFANA:8686/api/v5/report/ID-DASHBOARD?from=now-24h&to=now[/sourcecode]
Generando informes programados,
Venga a lo interesante! Lo primero, deberemos hacer que el grafana-reporter inicie con la máquina, lo más rápido, para que arranque al iniciar, mismamente en añadimos en Cron con ‘crontab -e’ lo siguiente:
[sourcecode]@reboot /root/go/bin/grafana-reporter[/sourcecode]
Si queremos enviarlos por mail de forma automática, instalaremos sendemail:
[sourcecode]yum install sendemail[/sourcecode]
Crearemos un script donde pongamos las URLs de los Reports que nos interesa generar y nos los descargamos con wget, y finalmente los enviamos por email, yo le llamaré de ejemplo ‘grafana_report_diario.sh’:
[sourcecode]# Dashboard Servidores VMware
wget -O diario_VMware.pdf http://DIRECCION_IP_GRAFANA:8686/api/v5/report/NRkUakSik?from=now-24h&to=now
# Dashboard Servidores Citrix
wget -O diario_Citrix.pdf http://DIRECCION_IP_GRAFANA:8686/api/v5/report/YpIJqYkik?from=now-24h&to=now
sleep 40s
/usr/bin/sendemail -f de***@bu*****.com-t pa**@bu*****.com -s mail.bujarra.com -m "Estimados señores,\nSe les adjuntan los informes con los consumos de su datacenter.\nQue tengan muy buen dia!" -u "Grafana – Informe Diario" -xu us*****@bu*****.com -xp XXXXXXXX -o tls=auto -a diario_VMware.pdf diario_Citrix.pdf[/sourcecode]
Este script ‘grafana_report_diario.sh’ se ejecutará por ejemplo todos los días a las 0h y como vemos sacará datos frescos y los mandará por mail a nuestros jefes, clientes, departamento de IT…
Resultado,
Este sería un ejemplo del PDF que vais a recibir, claro que cada uno tendrá sus Dashboard personalizados, pues que os sirva de ejemplo!
No me digáis que no!!! Impresionante!!!
Espero que os haya resultado interesante y podáis aportar siempre algo novedoso y positivo en vuestros trabajos!!