Hoy hemos recibido una petición por parte de compañeros para que añadiéramos varios monitores más a los datos que se recogen de los servidores, en particular, datos derivados de la ejecución de la orden netstat que devuelve datos sobre las conexiones de red establecidas con el servidor. Por ejemplo, para ver el número de conexiones establecidas a un determinado puerto, ya sean de salida o de entrada. La orden en cuestión es: netstat -an | grep STABLISHED | grep [port]
Para poder parametrizar la orden he creado un fichero de configuración de zabbix similar al que hay en varios foros para valores de mysql, que nos permite utilizar argumentos. Fichero userparameter_netstat.conf (crear en /etc/zabbix/ e incluir desde el dichero /etc/zabbix/zabbix_agentd.conf):
# Flexible parameter to grab global variables. On the frontend side, use keys like netstat.port[Port_number]. # Key syntax is netstat.port[Port_number]. UserParameter=netstat.port[*],netstat -na | grep $1 | grep ESTABLISH | wc -lO mejor aún (actualizado):
UserParameter=netstat.port[*],netstat -na | grep ESTABLISH | egrep ':$1[[:blank:]]+' | wc -l
Para considerar sólo cadenas que del tipo: "dos puntos + puerto especificado + espacios" y así, evitar que se incluyan en el conteo líneas que en realidad no son conexiones a ese puerto.
Con esto conseguimos que zabbix_agent responda a peticiones de un nuevo parámetro: netstat.port[puerto] con la orden
netstat-na | grep puerto | grep STABLISH | wc -l
que devuelve el número de conexiones al puerto que se le pase.
Activamos los cambios reiniciando el servicio zabbix-agent. Y probamos que la instrucción funciona correctamente llamando al parámetro por línea de órdenes:
[root@host zabbix]# zabbix_agentd --test netstat.port[80] netstat.port[80] [t|4]
En caso de no estar bien configurado la respuesta sería
[root@host zabbix]# zabbix_agentd --test netstat.port[80] netstat.port[80] [t|NOT_SUPPORTED]
Ya tenemos la "parte cliente" hecha. Ahora toca crear una plantilla que podamos asociar a nuestros hosts para que se llame a ese parámetro de usuario.
Vamos a la sección de plantillas dentro de la administración de Zabbix y creamos una nueva plantilla. Añadimos tantos items como puertos queramos monitorizar. Por ejemplo para el puerto HTTP usaríamos la siguiente definición de item:
netstat.port[80]
Añadimos los items que queramos y por último podemos incluso añadir un gráfico a la plantilla añadiendo todos los monitores de netstat.
Una vez creada la plantilla hay que enlazarla al host que queremos monitorizar y que debe tener en su fichero de configuración la definición del userparameter. Activamos los items para que comience su monitorización y listo.
Archivo XML de la plantilla:
2.0 2014-03-20T12:10:04Z Templates Template_Netstat Template Netstat Templates Netstat HTTP Conn 0 0 netstat.port[80] 60 90 365 0 3 0 0 1 0 0 You have to add this to your zabbix agent configuration file: UserParameter=netstat.port[*],netstat -na | grep $1 | grep ESTABLISH | wc -l 0 Netstat HTTPS Conn 0 0 netstat.port[43] 60 90 365 0 3 0 0 1 0 0 You have to add this to your zabbix agent configuration file: UserParameter=netstat.port[*],netstat -na | grep $1 | grep ESTABLISH | wc -l 0 Netstat MySQL Conn 0 0 netstat.port[3306] 60 90 365 0 3 0 0 1 0 0 You have to add this to your zabbix agent configuration file: UserParameter=netstat.port[*],netstat -na | grep $1 | grep ESTABLISH | wc -l 0 Netstat ORACLE Conn 0 0 netstat.port[1251] 60 90 365 0 3 0 0 1 0 0 You have to add this to your zabbix agent configuration file: UserParameter=netstat.port[*],netstat -na | grep $1 | grep ESTABLISH | wc -l 0 Netstat Connections (netstat) 500 200 0.0000 100.0000 1 1 0 1 0 0.0000 0.0000 0 0 0 0 0 0 00DD00 0 2 0 Template_Netstat netstat.port[80] 1 0 BBBB00 0 2 0 Template_Netstat netstat.port[43] 2 0 CC00CC 0 2 0 Template_Netstat netstat.port[3306] 3 0 0000CC 0 2 0 Template_Netstat netstat.port[1251]
No hay comentarios:
Publicar un comentario