Cómo monitorear PostgreSQL con InfluxDB v2

En este artículo, te muestro cómo monitorear Postgres con InfluxDB v2 Beta.

El fin de semana estuve trabajando en un template de InfluxDB v2 para monitorear PostgreSQL, el mismo ya está en el Github de InfluxData, listo para empezar a usar.

influxdata/community-templates
A collection of InfluxDB Templates provided by the Influx community - influxdata/community-templates

Arrancamos

Como ya había mencionado en otros artículos, es muy práctico importar Templates a InfluxDB v2. Para este caso tampoco varia mucho, tan solo debemos, antes, especificar algunos datos, como ser, la organización y el token de autenticación:

$ export INFLUX_ORG=<tuorganización>
$ export INFLUX_TOKEN=<tutoken>

Una vez especificado, vamos al servidor y ejecutamos lo siguiente: Si estamos ejecutando InfluxDB en Docker, vamos a correr la importación de esta manera.

docker exec -it <id-contenedor> influx pkg -u https://raw.githubusercontent.com/influxdata/community-templates/master/postgresql/postgres.yml -o $INFLUX_ORG -t $INFLUX_TOKEN

Si, NO, estás ejecutando InfluxDB en Docker, lo ejecutas así, desde el servidor:

influx pkg -u https://raw.githubusercontent.com/influxdata/community-templates/master/postgresql/postgres.yml -o $INFLUX_ORG -t $INFLUX_TOKEN

En un caso u otro, el resultado debería ser más o menos similar a esto:

LABELS    +add | -remove | unchanged
+-----+----------------------------+------------------+---------------+---------+-------------+
| +/- |        PACKAGE NAME        |        ID        | RESOURCE NAME |  COLOR  | DESCRIPTION |
+-----+----------------------------+------------------+---------------+---------+-------------+
|     | flamboyant-dubinsky-332001 | 05d639e9629a9000 | postgres      | #F95F53 |             |
+-----+----------------------------+------------------+---------------+---------+-------------+
|                                                                        TOTAL  |      1      |
+-----+----------------------------+------------------+---------------+---------+-------------+

BUCKETS    +add | -remove | unchanged
+-----+-------------------------+------------------+---------------+------------------+-------------+
| +/- |      PACKAGE NAME       |        ID        | RESOURCE NAME | RETENTION PERIOD | DESCRIPTION |
+-----+-------------------------+------------------+---------------+------------------+-------------+
|     | vivid-heisenberg-732003 | 05d639b5fdf32000 | postgres      | 0s               |             |
+-----+-------------------------+------------------+---------------+------------------+-------------+
|                                                                         TOTAL       |      1      |
+-----+-------------------------+------------------+---------------+------------------+-------------+

DASHBOARDS    +add | -remove | unchanged
+-----+--------------------------+----+---------------+-------------+------------+
| +/- |       PACKAGE NAME       | ID | RESOURCE NAME | DESCRIPTION | NUM CHARTS |
+-----+--------------------------+----+---------------+-------------+------------+
| +   | jovial-montalcini-f32001 |    | Postgres      |             | 17         |
+-----+--------------------------+----+---------------+-------------+------------+
|                                                          TOTAL    |     1      |
+-----+--------------------------+----+---------------+-------------+------------+

TELEGRAF CONFIGURATIONS    +add | -remove | unchanged
+-----+-----------------+----+-----------------+-------------+
| +/- |  PACKAGE NAME   | ID |  RESOURCE NAME  | DESCRIPTION |
+-----+-----------------+----+-----------------+-------------+
| +   | postgres-config |    | postgres-config |             |
+-----+-----------------+----+-----------------+-------------+
|                                   TOTAL      |      1      |
+-----+-----------------+----+-----------------+-------------+

LABEL ASSOCIATIONS    +add | -remove | unchanged
+-----+---------------+--------------------------+---------------+------------------+----------------------------+------------+------------------+
| +/- | RESOURCE TYPE |  RESOURCE PACKAGE NAME   | RESOURCE NAME |   RESOURCE ID    |     LABEL PACKAGE NAME     | LABEL NAME |     LABEL ID     |
+-----+---------------+--------------------------+---------------+------------------+----------------------------+------------+------------------+
|     | buckets       | vivid-heisenberg-732003  | postgres      | 05d639b5fdf32000 | flamboyant-dubinsky-332001 | postgres   | 05d639e9629a9000 |
+-----+---------------+--------------------------+---------------+------------------+----------------------------+------------+------------------+
+-----+---------------+--------------------------+---------------+------------------+----------------------------+------------+------------------+
| +   | dashboards    | jovial-montalcini-f32001 | Postgres      |                  | flamboyant-dubinsky-332001 | postgres   | 05d639e9629a9000 |
+-----+---------------+--------------------------+---------------+------------------+----------------------------+------------+------------------+
|                                                                                                                    TOTAL    |        2         |
+-----+---------------+--------------------------+---------------+------------------+----------------------------+------------+------------------+

Comencemos a monitorear

Los pasos anteriores a comenzar a monitorear nuestra base de datos, debemos exportar como variable de entorno, como en el caso anterior, nuestra organización, el token y en esta instancia el bucket y el connection string de la conexión al PostgreSQL:

$ export INFLUX_ORG=<tuorganización>
$ export INFLUX_TOKEN=<tu-token>
$ export INFLUX_BUCKET=postgres
$ export PSQL_STRING_CONNECTION=postgres://postgres:mysecretpassword@localhost:5432

Después de eso, vamos al InfluxDB a la parte de Telegraf y veremos la configuración de Postgress que recién acabamos de importar:

Y hacemos un clic en "Setup Instructions" Veremos algo como esto:

Copiamos a partir de "telegraf --config" y lo corremos en el servidor donde tenemos nuestro PostgreSQL.

Si todo sale como se espera, después de un rato, debemos comenzar a ver información en el dashboard llamado "postgres" en nuestro InfluxDB.

Para ir cerrando

Como verás, es muy sencillo monitorear PostgreSQL con InfluxDB. Este template, que incluye un Bucket, Dashboard, Configuración de Telegraf y Labels, lo podés encontrar en el siguiente enlace:

influxdata/community-templates
A collection of InfluxDB Templates provided by the Influx community - influxdata/community-templates

Si tenés dudas o consultas, por favor, no dudes en dejarlas en los comentarios.