Luego de instalar un servidor Grafana, el siguiente paso es agregar el primer Data Source (fuente de datos a graficar). Afortunadamente Grafana incluye un plugin para conectarse a bases de datos Postgres, lo cual permite consultar y visualizar datos de cualquier tabla utilizando sentencias SQL.



Actualmente cuento con una base de datos PostgreSQL donde un script pyVmomi guarda datos de uso de datastores VMware. Esta base de datos cuenta con un usuario y rol para pyVmomi:

postgres=# \du
                                     List of roles
 Role name  |                         Attributes                         |  Member of   
------------+------------------------------------------------------------+--------------
 postgres   | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
 rol_vmware | Cannot login                                               | {}
 usr_vmware |                                                            | {rol_vmware}

Grafana necesita un usuario para acceder a esta base de datos, pero se recomienda que sea un usuario con acceso de sólo lectura (SELECT). Crear un rol a tal fin:

postgres=# CREATE ROLE rol_readonly;
CREATE ROLE
postgres=# \du
                                      List of roles
  Role name   |                         Attributes                         |  Member of
--------------+------------------------------------------------------------+--------------
 postgres     | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
 rol_readonly | Cannot login                                               | {}
 rol_vmware   | Cannot login                                               | {}
 usr_vmware   |                                                            | {rol_vmware}

Luego cerrar el cliente psql y crear el usuario de base de datos para Grafana con la herramienta createuser:

postgres@trac:~$ createuser -h localhost -p 5432 -U postgres -D -E -g rol_readonly -P -R -S usr_grafana Enter password for new role: Enter it again:

De esta forma, el usuario "usr_grafana" pertenece al rol "rol_readonly":

postgres=# \du
                                       List of roles
  Role name   |                         Attributes                         |   Member of    
--------------+------------------------------------------------------------+----------------
 postgres     | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
 rol_readonly | Cannot login                                               | {}
 rol_vmware   | Cannot login                                               | {}
 usr_grafana  |                                                            | {rol_readonly}
 usr_vmware   |                                                            | {rol_vmware}

Esta base de datos se llama "grafana" y cuenta con una tabla "datastore_space" que almacena fecha, nombre, uso, capacidad, espacio disponible y porcentaje de espacio disponible para cada muestra, junto con un ID:

grafana=> select * from datastore_space;
 id |        fecha        |       name       |     used      |   capacity    |     free     | pfree 
----+---------------------+------------------+---------------+---------------+--------------+-------
  8 | 2018-09-13 10:49:02 | ds-develop       | 1362954813440 | 2047894093824 | 684939280384 | 33.45
  9 | 2018-09-13 10:49:02 | ds-backups       | 2266981466112 | 3113582854144 | 846601388032 | 27.19
 10 | 2018-09-13 10:49:02 | ds-temp          | 3414945693696 | 4262486605824 | 847540912128 | 19.88
 11 | 2018-09-13 10:49:02 | ds-production    | 2447663693824 | 3298266447872 | 850602754048 | 25.79
 12 | 2018-09-13 10:49:02 | ds-local-11      |    1018167296 |   67377299456 |  66359132160 | 98.49
 13 | 2018-09-13 10:49:02 | ds-local-12      |    1018167296 |   67377299456 |  66359132160 | 98.49
 14 | 2018-09-13 10:49:02 | ds-local-13      |    4501536768 |   67377299456 |  62875762688 | 93.32
 15 | 2018-09-13 10:50:09 | ds-develop       | 1362954813440 | 2047894093824 | 684939280384 | 33.45
 16 | 2018-09-13 10:50:09 | ds-backups       | 2266981466112 | 3113582854144 | 846601388032 | 27.19
 17 | 2018-09-13 10:50:09 | ds-temp          | 3414945693696 | 4262486605824 | 847540912128 | 19.88
 18 | 2018-09-13 10:50:09 | ds-production    | 2447663693824 | 3298266447872 | 850602754048 | 25.79
 19 | 2018-09-13 10:50:09 | ds-local-11      |    1018167296 |   67377299456 |  66359132160 | 98.49
 20 | 2018-09-13 10:50:09 | ds-local-12      |    1018167296 |   67377299456 |  66359132160 | 98.49
 21 | 2018-09-13 10:50:09 | ds-local-13      |    4501536768 |   67377299456 |  62875762688 | 93.32
 22 | 2018-09-13 10:57:34 | ds-develop       | 1362954813440 | 2047894093824 | 684939280384 | 33.45
 23 | 2018-09-13 10:57:34 | ds-backups       | 2266981466112 | 3113582854144 | 846601388032 | 27.19
 24 | 2018-09-13 10:57:34 | ds-temp          | 3414945693696 | 4262486605824 | 847540912128 | 19.88
 25 | 2018-09-13 10:57:34 | ds-production    | 2447663693824 | 3298266447872 | 850602754048 | 25.79
 26 | 2018-09-13 10:57:34 | ds-local-11      |    1018167296 |   67377299456 |  66359132160 | 98.49
 27 | 2018-09-13 10:57:34 | ds-local-12      |    1018167296 |   67377299456 |  66359132160 | 98.49
 28 | 2018-09-13 10:57:34 | ds-local-13      |    4501536768 |   67377299456 |  62875762688 | 93.32
(21 rows)

Sólo resta otorgar al rol "rol_readonly" permisos para conectarse a la base de datos y SELECT sobre la tabla "datastore_space":

postgres=# \c grafana
grafana=# GRANT CONNECT ON DATABASE grafana TO rol_readonly;
GRANT
grafana=# GRANT SELECT ON datastore_space TO rol_readonly;
GRANT

Con esto ya tenemos todo lo necesario para que Grafana pueda acceder a los datos de la tabla "datastore_space" almacenados en la base de datos PostgreSQL "grafana".

A continuación, acceder al panel de control del servidor Grafana y crear un nuevo Data Source:

Ingresar un nombre y seleccionar el tipo "PostgreSQL". Debajo se deben ingresar los datos de conexión. El nombre de host puede incluir un puerto separado por dos puntos.

En la misma pantalla de configuración, Grafana indica los permisos necesarios para el usuario, los cuales acabamos de configurar. Verificar la conexión desde el botón "Save & Test":

Presionar el botón "Back" para volver:

Cuando es el primer Data Source agregado, se convierte automáticamente en el Data Source por defecto de la instalación de Grafana.

Así finaliza la configuración del Data Source PostgreSQL en Grafana. Desde este momento es posible realizar consultas y crear gráficas sobre estos datos. En el próximo artículo mostraré cómo crear el primer Dashboard para visualizar gráficas de datos desde PostgreSQL.

Referencias


Tal vez pueda interesarte


Compartí este artículo