Ampliación de los agentes de Zabbix

Esta sección proporciona instrucciones paso a paso para ampliar la funcionalidad de un agent de Zabbix mediante un parámetro de usuario.

El ejemplo siguiente obtiene el número de sentencias ejecutadas por un server MySQL. Los pasos se aplican tanto al agent de Zabbix como a Zabbix agent 2.

Este ejemplo ilustra cómo funcionan los parámetros de usuario. Para la monitorización de MySQL en entornos de producción, considere utilizar los templates predefinidos de MySQL, que no requieren parámetros de usuario.

Paso 1: Preparar el acceso a MySQL

El agent se ejecuta como el usuario del sistema operativo zabbix. No utilice la cuenta root de MySQL, ya que puede utilizar autenticación basada en sockets, lo que puede impedir que el agent se conecte. En su lugar, cree un usuario dedicado de MySQL:

CREATE USER 'zbx_monitor'@'localhost' IDENTIFIED BY '<password>';

Almacene las credenciales en un archivo que solo pueda leer el usuario zabbix, por ejemplo, /etc/zabbix/mysql_monitor.cnf (la ruta depende del sistema operativo y del método de instalación de Zabbix):

[client]
user=zbx_monitor
password=<strong password>

Establezca el propietario y los permisos del archivo:

sudo chown zabbix:zabbix /etc/zabbix/mysql_monitor.cnf
sudo chmod 600 /etc/zabbix/mysql_monitor.cnf

Pase este archivo explícitamente con --defaults-extra-file (que debe ser la primera opción que se pase al cliente de MySQL) en lugar de depender de ~/.my.cnf, ya que la variable de entorno HOME del demonio puede no estar definida o ser diferente de la esperada. Si MySQL utiliza una ruta de socket no predeterminada, añada una línea socket= al mismo archivo.

Paso 2: Escribir un comando

Escriba un script o comando personalizado para recuperar el parámetro requerido y asegúrese de que funcione en las mismas condiciones que el demonio del agent.

El siguiente comando devuelve el número de sentencias ejecutadas por el server de MySQL:

/usr/bin/mysql --defaults-extra-file=/etc/zabbix/mysql_monitor.cnf -N -B -e "SHOW GLOBAL STATUS LIKE 'Questions'" | /usr/bin/awk '{print $2}'

Puede probar el comando como el usuario zabbix; debería mostrar un único número:

sudo -u zabbix sh -c "/usr/bin/mysql --defaults-extra-file=/etc/zabbix/mysql_monitor.cnf -N -B -e \"SHOW GLOBAL STATUS LIKE 'Questions'\" | /usr/bin/awk '{print \$2}'"

Paso 3: Añadir el comando a la configuración del Zabbix agent

En lugar de editar el archivo de configuración del agent principal (zabbix_agentd.conf o zabbix_agent2.conf), cree un archivo independiente en el directorio incluido mediante el parámetro Include. Los archivos independientes son más fáciles de administrar y es menos probable que se vean afectados por las actualizaciones de los paquetes.

Por ejemplo, cree /etc/zabbix/zabbix_agentd.d/mysql.conf (/etc/zabbix/zabbix_agent2.d/mysql.conf para Zabbix agent 2) con el siguiente contenido:

UserParameter=mysql.questions,/usr/bin/mysql --defaults-extra-file=/etc/zabbix/mysql_monitor.cnf -N -B -e "SHOW GLOBAL STATUS LIKE 'Questions'" | /usr/bin/awk '{print $2}'

mysql.questions es la clave única del item. Debe ser única dentro de la configuración del agent.

Puede probar el parámetro ejecutando el Zabbix agent con la opción -t. Ejecute la prueba como el usuario zabbix y especifique el archivo de configuración si no se encuentra en la ubicación predeterminada:

Para Zabbix agent:

sudo -u zabbix zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -t mysql.questions

Para Zabbix agent 2:

sudo -u zabbix zabbix_agent2 -c /etc/zabbix/zabbix_agent2.conf -t mysql.questions

El resultado esperado contiene un número, por ejemplo:

mysql.questions                               [t|4567]

Paso 4: Recargar y probar el parámetro de usuario

Recargue los parámetros de usuario desde el archivo de configuración ejecutando el siguiente comando:

Para Zabbix agent:

sudo zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -R userparameter_reload

Para Zabbix agent 2:

sudo zabbix_agent2 -c /etc/zabbix/zabbix_agent2.conf -R userparameter_reload

Ejecute el comando como root o como el usuario del sistema operativo que ejecuta el agent.

Como alternativa, reinicie el agent para aplicar los cambios de configuración.

Puede probar el parámetro en el agent en ejecución mediante la utilidad zabbix_get, por ejemplo, desde el Zabbix server:

zabbix_get -s <IP address> -k mysql.questions

Aquí, <IP address> es la dirección IP del host que ejecuta el agent al que se conecta zabbix_get. La dirección IP del host que ejecuta zabbix_get debe estar incluida en el parámetro Server del agent.

Para que esta prueba funcione, el agent debe aceptar comprobaciones pasivas (en el caso de Zabbix agent, StartAgents no debe estar establecido en 0). Si el agent está configurado únicamente para comprobaciones activas, omita esta prueba y verifique el item en Monitoring > Latest data después de completar el paso final.

Paso 5: Crear un item

Crear un nuevo item en el host monitorizado con la clave de item mysql.questions.

Seleccione el tipo de item: Zabbix Agent o Zabbix Agent (active).

Para Zabbix agent (pasivo), la dirección del server o proxy de Zabbix debe aparecer en el parámetro Server del agent. Para Zabbix agent (activo), el parámetro ServerActive debe especificar el server o proxy de Zabbix, y el parámetro Hostname del agent debe coincidir exactamente con el nombre del host configurado en el frontend.

Seleccione el Type of information del item. El agent siempre devuelve el valor como texto; Type of information define cómo Zabbix interpreta y almacena el valor después de cualquier paso de preprocesamiento.

Para el contador acumulativo sin procesar, seleccione Numeric (unsigned). Para medir el número de sentencias por segundo, seleccione Numeric (float) y añada el paso de preprocesamiento Change per second.