Esta es una traducción de la página de documentación original en español. Ayúdanos a mejorarla.

#10 Ejecución de comandos

Zabbix usa una funcionalidad común para verificaciones externas, parámetros de usuario, elementos system.run, scripts de alerta personalizados, comandos remotos y usuario guiones.

Pasos de ejecución

El comando/script se ejecuta de manera similar tanto en plataformas Unix como en Windows:

  1. Zabbix (el proceso principal) crea un conducto para la comunicación
  2. Zabbix establece la tubería como la salida para el proceso hijo que se creará
  3. Zabbix crea el proceso secundario (ejecuta el comando/script)
  4. Se crea un nuevo grupo de procesos (en Unix) o un trabajo (en Windows) para el proceso del niño
  5. Zabbix lee de la tubería hasta que se agote el tiempo o nadie esté escribiendo al otro extremo (TODOS los manejadores/descriptores de archivos han sido cerrados). Tenga en cuenta que el proceso hijo puede crear más procesos y salir antes de salir o cerrar el identificador/descriptor de archivo.
  6. Si no se ha alcanzado el tiempo de espera, Zabbix espera hasta el inicio el proceso secundario sale o se agota el tiempo de espera
  7. Si el proceso hijo inicial salió y el tiempo de espera no ha sido alcanzado, Zabbix verifica el código de salida del proceso secundario inicial y lo compara con 0 (el valor distinto de cero se considera un error de ejecución, solo para scripts de alerta personalizados, comandos remotos y scripts de usuario ejecutado en el servidor Zabbix y el proxy Zabbix)
  8. En este punto se supone que todo está hecho y el conjunto el árbol de procesos (es decir, el grupo de procesos o el trabajo) se termina

Zabbix asume que un comando/secuencia de comandos ha hecho procesamiento cuando el proceso hijo inicial ha salido Y ningún otro El proceso aún mantiene abierto el identificador de salida/descriptor de archivo. Cuando se realiza el procesamiento, TODOS los procesos creados se terminan.

Todas las comillas dobles y barras invertidas en el comando se escapan con barras invertidas y el comando está entre comillas dobles.

Comprobación del código de salida

Los códigos de salida se verifican con las siguientes condiciones:

  • Solo para scripts de alerta personalizados, comandos remotos y scripts de usuario ejecutado en el servidor Zabbix y el proxy Zabbix.
  • Cualquier código de salida que sea diferente de 0 se considera como ejecución falla.
  • Contenido de error estándar y salida estándar para ejecuciones fallidas se recopilan y están disponibles en la interfaz (donde el resultado de la ejecución es desplegado).
  • Se crea una entrada de registro adicional para comandos remotos en el servidor Zabbix para guardar la salida de la ejecución del script y se puede habilitar usando Agente LogRemoteCommands parámetro.

Posibles mensajes de interfaz y entradas de registro para comandos/scripts fallidos:

  • Contenido de error estándar y salida estándar para ejecuciones fallidas (Si alguna).
  • "Proceso salido con código: N." (para salida vacía y código de salida no igual a 0).
  • "Proceso muerto por señal: N." (para el proceso terminado por una señal, solo en Linux).
  • "Proceso terminado inesperadamente". (para proceso terminado por razones desconocidas).

Leer más sobre: