5 Parámetros de usuario
Descripción general
A veces puede querer ejecutar una comprobación del agent que no viene predefinida con Zabbix. Aquí es donde los parámetros de usuario resultan útiles.
Puede escribir un comando que recupere los datos que necesita e incluirlo en el parámetro de usuario del archivo de configuración del agent (parámetro de configuración UserParameter).
Un parámetro de usuario tiene la siguiente sintaxis:
UserParameter=<key>,<command>
Como puede ver, un parámetro de usuario también contiene una clave. La clave será necesaria al configurar un item. Introduzca una clave de su elección que sea fácil de referenciar (debe ser única dentro de un host).
Reinicie el agent o utilice la opción de control en tiempo de ejecución del agent para cargar el nuevo parámetro, por ejemplo:
zabbix_agentd -R userparameter_reload
A continuación, al configurar un item, introduzca la clave para referenciar el comando del parámetro de usuario que desea ejecutar.
Los parámetros de usuario son comandos ejecutados por el agent de Zabbix. Tenga en cuenta que se pueden devolver hasta 16 MB de datos antes de los pasos de preprocesamiento del valor del item.
En los sistemas UNIX, el agent ejecuta los comandos de los parámetros de usuario mediante /bin/sh, con la cuenta del sistema operativo que ejecuta el agent (normalmente zabbix).
Esa cuenta debe tener permisos suficientes para ejecutar el comando y acceder a los archivos, sockets o credenciales que utilice.
Los parámetros de usuario están sujetos al tiempo de espera de las comprobaciones del agent; si se alcanza el tiempo de espera, el proceso bifurcado del parámetro de usuario se termina.
Véase también:
- Tutorial paso a paso sobre el uso de parámetros de usuario
- Ejecución de comandos
Ejemplos de parámetros de usuario simples
Ejemplo 1: Valor constante
UserParameter=ping,echo 1
Un item con la clave ping siempre devuelve 1.
Ejemplo 2: Disponibilidad del server MySQL
UserParameter=mysql.ping,mysqladmin ping 2>/dev/null | grep -c alive
Devuelve 1 si el server MySQL responde y 0 en caso contrario.
La redirección 2>/dev/null descarta la salida de error estándar de mysqladmin.
Sin ella, podría devolverse un mensaje de error junto con 0, lo que haría que un item con el tipo de información Numeric dejara de ser compatible (consulte Resultado del comando).
Este ejemplo supone que las credenciales de conexión de MySQL están configuradas para la cuenta del sistema operativo que ejecuta el agent de Zabbix, por ejemplo, en un archivo de opciones de MySQL accesible para esa cuenta.
Parámetros de usuario flexibles
Los parámetros de usuario flexibles aceptan parámetros junto con la clave. De esta forma, un parámetro de usuario flexible puede servir de base para crear varios items.
Los parámetros de usuario flexibles tienen la siguiente sintaxis:
UserParameter=key[*],command
| Parámetro | Descripción |
|---|---|
| Key | Clave única del item. [*] indica que esta clave acepta parámetros entre corchetes. Los parámetros se especifican al configurar el item. |
| Command | Comando que se ejecutará para evaluar el valor de la clave. Solo para parámetros de usuario flexibles: Puede utilizar referencias posicionales $1…$9 en el comando para hacer referencia al parámetro correspondiente de la clave del item. Zabbix analiza los parámetros incluidos entre [ ] de la clave del item y sustituye $1,...,$9 en el comando según corresponda. $0 se sustituirá por el comando original (antes de expandir $0,...,$9) que se ejecutará. Las referencias posicionales se interpretan independientemente de si están entre comillas dobles (") o simples ('). Para utilizar las referencias posicionales sin modificar, especifique dos signos de dólar; por ejemplo, awk '{print $$2}'. En este caso, $$2 se convertirá realmente en $2 al ejecutar el comando. |
Las referencias posicionales con el signo $ solo son buscadas y sustituidas por Zabbix agent para los parámetros de usuario flexibles. Para los parámetros de usuario simples, este procesamiento de referencias se omite y, por lo tanto, no es necesario escapar ningún signo $.
De forma predeterminada, ciertos caracteres no están permitidos en los parámetros de usuario. Para consultar la lista completa de caracteres, consulte UnsafeUserParameters.
Ejemplos de parámetros de usuario flexibles
Los ejemplos siguientes son solo para fines demostrativos y no deben utilizarse en producción sin las medidas de protección adecuadas.
Los parámetros de usuario flexibles definidos mediante [*] aceptan argumentos que pueden introducir riesgos de inyección de comandos si no se gestionan de forma segura.
Ejemplo 1: Devolver un parámetro
UserParameter=ping[*],echo $1
Puede definir varios items mediante este parámetro de usuario, con claves en el formato ping[parameter]:
ping[0]- devuelve0.ping[hello]- devuelvehello.
Ejemplo 2: disponibilidad de MySQL en un host especificado
Este parámetro se puede utilizar para supervisar la disponibilidad de un server MySQL en un host especificado.
UserParameter=mysql.ping[*],mysqladmin -h "$1" ping 2>/dev/null | grep -c alive
El item con la clave mysql.ping[db1.example.com] devuelve 1 si el server MySQL de ese host responde y 0 en caso contrario.
Este ejemplo supone que las credenciales de conexión de MySQL están configuradas para la cuenta del sistema operativo que ejecuta el Zabbix agent, por ejemplo, en un archivo de opciones de MySQL accesible para dicha cuenta.
Ejemplo 3: Contar líneas que coinciden con un patrón
Este parámetro se puede utilizar para contar el número de líneas de un archivo.
UserParameter=grep.count[*],grep -c "$2" "$1"
Devuelve el número de líneas del archivo especificado por el primer argumento que coinciden con la expresión regular especificada por el segundo argumento.
Por ejemplo, grep.count[/etc/passwd,root] devuelve el número de líneas de /etc/passwd que coinciden con la expresión regular root.
Resultado del comando
El valor de retorno del comando es la salida estándar junto con la salida de error estándar producida por el comando.
Un item que devuelve texto (información de tipo carácter, log o texto) no pasará a no compatible en caso de una salida de error estándar.
El valor de retorno está limitado a 16 MB (incluido el espacio en blanco final, que se trunca); también se aplican los límites de la base de datos.
Los parámetros de usuario que devuelven texto (información de tipo carácter, log o texto) también pueden devolver un espacio en blanco. En caso de un resultado no válido, el item pasará a no compatible.