Zabbix-PostgreSQL Monitoreo de sesiones.
Hace unos dias arranque con un pequeño script para el monitoreo de las sesiones en un motor de base de datos PostgreSQL (PostgreSQL Sessions Monitor). Ahora toca explicar como integrarlo directamente con un servidor de monitoreo Zabbix.
Para esta tarea se utilizo el mismo script pgmon, solo que modificamos la lina donde seteamos el OUTPUTFORMAT, para que por defecto no devuelva los resultados formateados para pantalla:
if [ "$OUTPUTFORMAT" == "" ]; then OUTPUTFORMAT=0 fi
En la linea 15, reemplazamos OUTPUTFORMAT=1 por OUTPUTFORMAT=0
La configuración puede varias segun la distribución linux utilizada. Lo primero que debermos hacer es crear un link a pgmon en alguna ubicacion contenida dentro de la variable de entorno PATH. En gentoo, el lugar ideal para estas aplicaciones de “terceros” es /opt/bin
mkdir /opt/bin ln -s /root/utils/scripts/monitoreo/pgmon /opt/bin/pgmon
El agente zabbix corre como el usuario del sistema zabbix. Para contabilizar las sesiones se realiza una conexión a la base de datos, por lo tanto el usuario que ejecute pgmon debe tener autenticación IDENT a PostgreSQL. Otra alternativa es utilizar sudo para permitir la ejecución de pgmon como otro usuario, en este caso lo ejecutaremos como root (No muy recomendable, seria mejor ejecutarlo como postgres).
Para dar acceso a zabbix a sudo, debemos modificar /etc/sudoers agregando la siguiente linea al final:
zabbix ALL=NOPASSWD: /opt/bin/pgmon
Ahora simplemente modificamos la configuracion del agente zabbix para crear el nuevo parametro de usuario (/etc/zabbix/zabbix_agentd.conf)
UserParameter=pgmon[*],sudo /opt/bin/pgmon \$1
El siguiente paso es configurar nuestro servidor zabbix para que consulte este nuevo “monitor”, para ellos nos dirigimos a nuestro panel zabbix -> Configuración -> Equipos -> Monitores del equipo donde corre nuestro PostgreSQL.
Aquí abrimos “Crear monitor” (Parte superior derecha) y configuramos un nuevo monitor con el valor “pgmon[-s -n]” para contabilizar las sesiones totales. También podemos crear un monitor para ver las sesiones actualmente ejecutando alguna consulta (Busy Sessions), aquí debemos usar el monitor “pgmon[-s -b]“.
Ejemplo de pantalla de configuración de monitor:

Configuración de nuevo monitor
Una vez que tenemos los monitores configurados y corriendo, podremos crear un grafico que plasme la cantidad de sesiones abiertas (persistentes) sobre la cantidad de sesiones realmente ejecutando consultas.