Desplegar un servidor con Grafana en docker. Realizamos un dashboard de ejemplo con acceso a una base de datos MySQL, mostrando una gráfica de la facturación por cliente.

Grafana

Grafana es un software libre​ que permite la visualización y el formato de datos métricos. Permite crear cuadros de mando y gráficos a partir de múltiples fuentes, incluidas bases de datos como MySQL, Oracle, PostgreSQL, Microsoft SQL Server, MongoDB y otros muchos orígenes de datos de propósito específico como Splunk, Snowflake, Wavefront, Salesforce, Jira, Cloudflare, Azure, Google Cloud, Elasticsearch, Prometheus, Graphite, AWS, etc.

Grafana es multiplataforma y también se puede implementar con Docker (como explicaremos en este tutorial). Está escrito en lenguaje Go y tiene un API HTTP completo.

Grafana permite personalizar cuadros de mando y, también, permite compartirlos mediante un enlace o una instantánea estática del mismo. Y permite definir alertas.

Desplegar servidor Grafana con Docker

Desde un equipo con Docker Desktop, ejecutaremos el siguiente comando (descargará y desplegará el contenedor y la imagen con Grafana):

Lo desplegará con acceso desde el puerto 3000.

Si queremos que los datos almacenados en Grafana sean persistentes, detendremos y eliminaremos el contenedor anterior con:

Y desplegaremos el contenedor con este otro comando, que creará un volumen para hacer persistentes los datos:

Acceso a Grafana y crear primer dashboard con datos de MySQL

Si abrimos un navegador web y accedemos a la IP del equipo anfitrión del Docker, con el puerto 3000, accederemos a la consola de gestión de Grafana:

http://192.168.1.10:3000/

Nos solicitará usuario y contraseña, introduciremos el usuario «admin» y la contraseña «admin»:

En el primer inicio, nos solicitará cambiar la contraseña del usuario admin.

Pulsaremos en el menú «Dashboards»:

Pulsaremos en «New» – «New dashboard»:

Pulsaremos en «Add visualization»:

Pulsaremos en «Configure a new data source»:

En este caso, elegiremos MySQL:

Introduciremos los datos de conexión con el servidor MySQL/MariaDB (IP o nombre de red, puerto, catálogo/base de datos, usuario, contraseña, etc.):

Y pulsaremos en «Save & test»:

Si los datos de conexión son correctos y el servidor de MySQL/MariaDB está disponible, Grafana mostrará un mensaje indicando que la conexión se ha efectuado correctamente:

Elegiremos el origen de datos creado anteriormente para el dashboard:

Desde el asistente para crear un dashboard podremos añadir una tabla y sus campos eligiéndolos de los desplegables o bien usar una consulta SQL.

En este caso, usaremos una consulta SQL para mostrar el importe total facturado por cliente, pulsando en «Code»:

Introduciremos la consulta SQL, en este caso:

La consulta SQL anterior mostrará los 15 clientes a los que más se ha facturado, mostrando el importe total facturado a cada uno.

Una vez introducida la consulta SQL, pulsaremos en «Overrides» en el panel derecho y en «Add field override»:

Elegiremos «Fields with name»:

En el desplegable nos mostrará los dos campos generados por la consulta SQL, elegiremos «ImporteTotal»:

Repetiremos la operación para el campo «Cliente», quedando:

Pulsaremos en el desplegable de selección de tipo de gráfico:

Elegiremos «Bar chart»:

Para el eje X, elegiremos el campo «Cliente»:

El campo ImporteTotal quedará en el eje Y.

En «Standard options», en «Unit», elegiremos «Currency / Euro (€)»:

Con esto ya tendremos nuestra primera gráfica en Grafana:

Podremos tunear el dashboard asignándole un nombre, y también la gráfica. Grafana incluye multitud de personalizaciones (colores, etiquetas, visualizaciones, etc.). Guardaremos el dashboard pulsando en «Save dashboard»:

En «Home» – «Dashboard» lo tendremos disponible:

Pulsando en los tres puntos verticales de la parte superior derecha, podremos copiar un enlace para compartirlo con otros usuarios (tanto desde dentro de la red como desde fuera si configuramos nuestro router/cortafuegos apropiadamente):

Pulsaremos en «Copy link»:

Y podremos visualizarlo con los datos actualizados en tiempo real desde cualquier otro equipo de la red o de Internet. Para acceder, nos solicitará usuario y contraseña de Grafana. Además, Grana incluye un modo kiosko, de forma que el dashboard aparecerá completo sin otros elementos (como menús):