Ejecutar comandos remotos con zabbix

Si disponemos de un servidor con Zabbix y una o varias maquinas a las que estamos monitorizando, podremos realizar comandos del tipo bash shell de forma remota, programando estos comandos como tarea en según que situaciones.

Aquí voy a explicar como, que en el caso de que el servidor web Apache de una de las maquinas que monitorizamos “se caiga”, levantar-lo de manera automática.

Para ello deberemos acceder por SSH (Putty) a la maquina donde tenemos el Apache que queremos controlar (es decir, la maquina donde queremos que se ejecuten los comandos) y seguir los siguientes pasos:

1. Editar el fichero de configuración de Zabbix (con el editor vi):

vim /etc/zabbix/zabbix_agentd.conf

2. Descomentar la siguiente linea:

EnableRemoteCommands=1

3. Reiniciamos Zabbix:

/etc/init.d/zabbix_agentd restart

4. Editar los permisos de sudo para zabbix:

visudo

4.1 Posible error:

Error:
visudo: command not found
Solución:
yum -y install sudo

5. Cometar la siguiente linea:

#Defaults    requiretty

6.  Añadir la siguiente linea al final del fichero (para dar permisos al usuario zabbix de ejecutar comandos como root sin preguntar contraseña):

# allows ‘zabbix’ user to run all commands without password.
zabbix ALL=(ALL) NOPASSWD: /etc/init.d/httpd start

Nota importante: Si queremos poder ejecutar “cualquier” comando remotamente, deberiamos escribir lo siguiente (pero por seguridad, NO ES RECOMENDABLE)

# allows ‘zabbix’ user to run all commands without password.
zabbix ALL=NOPASSWD: ALL

Ahora accedemos al panel web de Zabbix Server y realizamos los siguientes pasos:
1. Acceder formulario de creación de una acción

|Configuration| >> |Actions| >> [Create Action]

2. Rellenamos del campo Name con una frase intuitiva de la acción:

Name: Iniciar apache si se para en el servidor XX.XX.XX.XX

3. En el apartado Action conditions pusalmos [New] para añadir un parametro

4. Seleccionamos el parámetro Trigger y seleccionamos el trigger (previamente creado) del host al que queremos  realizar la acción:

[Trigger] [=] [Apache is not running on NOMBRE_DEL_HOST]

5. Pulsamos [Add] para añadirlo

6.  Nuevamente pulsamos [New] para añadir el segundo parametro

7. Ahora seleccionamos el parámetro Trigger value y el valor Problem:

[Trigger value] [=] [PROBLEM]

8. Pulsamos [Add] para añadirlo

9. Modificamos el valor de Type of calculation y lo dejamos en [AND]

10. En el apartado Action operations pusalmos [New] para añadir el comando que ejecutaremos remotamente sobre esa maquina

Operation type: Remote command
Remote command: NOMBRE_DEL_HOST:sudo /etc/init.d/httpd start

11. Pulsamos [Add] para añadirlo

12. Finalmente pulsamos [Save]

Haciendo todos estos pasos, si en la maquina remota se para el Apache, el trigger Apache is not running on NOMBRE_DEL_HOST de la maquina saltará (esto es algo que debemos tener previamente hecho) como PROBLEM y el Action que hemos creado, ejecutará el comando sudo /etc/init.d/httpd start que hará que el Apache se inicie nuevamente.





You can leave a response, or trackback from your own site.

2 Responses to “Ejecutar comandos remotos con zabbix”

  1. Osorio88 dice:

    oLA ME PARESIO MUY INTERESANTE EL POST QUE HICISTE AUNQ LA VERDAD TENGO DUDA AL MOMENTO DE AGREGAR O MAS BIEN ESTAR EN REMOTE COMMAND A QUE SE REFIERE CON NOMBRE_DEL_HOST : SUDO Y TODO LO QYE SIGUE.
    ME SALE ERROR.

    OTRA DUDA QUE ME PUEDAS AYUDAR ES QUE TENGO ACTIVADO EL SNMP EN MI MAQUINA PERO EL ZABBIX LO RECONOCE PERO ME SALE TIEMPO DE RESPUESTA AGOTADO ME DA MI IP Y LA DE SU PUERTO 161 POR LO QUE ENTENDI ESTA BAJO DOWN ALGO ASI NO SE SI ME EXPLIQUE.
    SALUDOS Y MUY INTERESANTE TU POST EN VERDAD Y GRACIAS SALUDOS

  2. julian dice:

    Una pregunta y para windows como seria la cosa ? es decir si quiero correr un remote command en windows ?

Deja un comentario

Page optimized by WP Minify WordPress Plugin

Màrius Duch is Stephen Fry proof thanks to caching by WP Super Cache