Con los comandos remotos, puede definir que un determinado comando predefinido se ejecute automáticamente en el equipo monitorizado al cumplirse alguna condición.
Así, los comandos remotos son un mecanismo potente para una monitorización proactiva e inteligente.
En los usos más evidentes de la función, puede intentar:
Configurar una acción para comandos remotos es similar a la de enviar un mensaje, la única diferencia es que Zabbix ejecutará un comando en lugar de enviar un mensaje.
Los comandos remotos pueden ser ejecutados por el servidor Zabbix, el proxy o el agente. Los comandos remotos en el agente Zabbix pueden ser ejecutados directamente por el servidor Zabbix o a través del proxy Zabbix. Tanto en el agente Zabbix como en el proxy Zabbix, los comandos remotos están deshabilitados por defecto. Se pueden habilitar mediante:
AllowKey=system.run[*]
en la configuración del agente;Los comandos remotos ejecutados por el servidor Zabbix se ejecutan como se describe en Ejecución de comandos, incluyendo la comprobación del código de salida.
Los comandos remotos se ejecutan incluso si el equipo de destino está en mantenimiento.
El límite de comandos remotos después de resolver todas las macros depende del tipo de base de datos y del conjunto de caracteres (los caracteres no ASCII requieren más de un byte para almacenarse):
Base de datos | Límite en caracteres | Límite en bytes |
---|---|---|
MySQL | 65535 | 65535 |
PostgreSQL | 65535 | sin límite |
SQLite (solo Zabbix proxy) | 65535 | sin límite |
La salida de la ejecución de comandos remotos (valor de retorno) está limitada a 16MB (incluyendo los espacios en blanco finales que se truncan). El límite de comando remoto IPMI se basa en la biblioteca IPMI instalada. Tenga en cuenta que los límites de la base de datos se aplican a todos los comandos remotos.
Aquellos comandos remotos que se ejecutan en el agente de Zabbix (scripts personalizados) deben habilitarse primero en la configuración del agente.
Asegúrese de que el parámetro AllowKey=system.run[<command>,*] esté añadido para cada comando permitido en la configuración del agente para permitir comandos específicos con el modo nowait. Reinicie el demonio del agente si cambia este parámetro.
Luego, al configurar una nueva acción en Alertas → Acciones → Acciones de disparador:
Los scripts que están disponibles para operaciones de acción (webhook, script, SSH, Telnet, IPMI) se definen en scripts globales.
Por ejemplo:
En este caso, Zabbix intentará reiniciar un proceso de Apache. Con este comando, asegúrese de que el comando se ejecute en el agente Zabbix (haga clic en el botón Zabbix agent frente a Ejecutar en).
Tenga en cuenta el uso de sudo: el usuario de Zabbix no tiene permisos para reiniciar servicios del sistema por defecto. Consulte más abajo para obtener sugerencias sobre cómo configurar sudo.
A partir del agente Zabbix 7.0, los comandos remotos también pueden ejecutarse en un agente que opere en modo activo. El agente Zabbix, ya sea activo o pasivo, debe ejecutarse en el equipo remoto y ejecuta los comandos en segundo plano.
Los comandos remotos en el agente Zabbix se ejecutan sin límite de tiempo mediante la clave system.run[,nowait] y no se comprueba el resultado de la ejecución. En el servidor Zabbix y el proxy Zabbix, los comandos remotos se ejecutan con el límite de tiempo establecido en el parámetro TrapperTimeout del archivo zabbix_server.conf o zabbix_proxy.conf y se verifica el resultado de la ejecución. Para información adicional, consulte Tiempo de espera del script.
Asegúrese de que el usuario 'zabbix' tenga permisos de ejecución para los comandos configurados. Puede ser útil utilizar sudo para dar acceso a comandos privilegiados. Para configurar el acceso, ejecute como root:
Ejemplo de líneas que se pueden usar en el archivo sudoers:
# permite al usuario 'zabbix' ejecutar todos los comandos sin contraseña.
zabbix ALL=NOPASSWD: ALL
# permite al usuario 'zabbix' reiniciar apache sin contraseña.
zabbix ALL=NOPASSWD: /etc/init.d/apache restart
En algunos sistemas, el archivo sudoers evitará que los usuarios no locales ejecuten comandos. Para cambiar esto, comente la opción requiretty en /etc/sudoers.
Si el sistema de destino tiene múltiples interfaces del tipo seleccionado (agente Zabbix o IPMI), los comandos remotos se ejecutarán en la interfaz predeterminada.
Es posible ejecutar comandos remotos mediante SSH y Telnet utilizando una interfaz diferente a la del agente Zabbix. La interfaz disponible para usar se selecciona en el siguiente orden:
Para los comandos remotos IPMI se debe utilizar la siguiente sintaxis:
donde
Ejemplos de scripts globales que pueden usarse como comandos remotos en operaciones de acciones.
Ejemplo 1
Reinicio de Windows bajo cierta condición.
Para reiniciar automáticamente Windows cuando Zabbix detecte un problema, defina el siguiente script:
Parámetro del script | Valor |
---|---|
Ámbito | 'Operación de acción' |
Tipo | 'Script' |
Comando | c:\windows\system32\shutdown.exe -r -f |
Ejemplo 2
Reiniciar el equipo utilizando el control IPMI.
Parámetro del script | Valor |
---|---|
Ámbito | 'Operación de acción' |
Tipo | 'IPMI' |
Comando | reset |
Ejemplo 3
Apagar el equipo utilizando el control IPMI.
Parámetro del script | Valor |
---|---|
Ámbito | 'Operación de acción' |
Tipo | 'IPMI' |
Comando | apagar |