8 Scripts

Descripción general

En la sección Administración → Scripts se pueden configurar y mantener scripts globales definidos por el usuario.

Los scripts globales, según el ámbito configurado y también los permisos del usuario, están disponibles para su ejecución:

  • desde el menú equipo en varias ubicaciones del frontend (Tablero, Problemas, Últimos datos, Mapas, etc.)
  • desde el menú evento
  • se pueden ejecutar como una operación de acción

Los scripts se ejecutan en el agente Zabbix, el servidor Zabbix (proxy) o solo en el servidor Zabbix. Consulte también Ejecución de comandos.

Tanto en el agente Zabbix como en el proxy Zabbix, los scripts remotos están deshabilitados de manera predeterminada. Se pueden habilitar de la siguiente manera:

  • Para los comandos remotos ejecutados en el agente Zabbix
  • agregando un parámetro AllowKey=system.run[<command>,*] para cada comando permitido en la configuración del agente, * representa el modo de espera y no espera.
  • Para los comandos remotos ejecutados en el proxy Zabbix
  • Advertencia: No es necesario habilitar los comandos remotos en el proxy Zabbix si los comandos remotos se ejecutan en el agente Zabbix que es monitoreado por el proxy Zabbix. Sin embargo, si es necesario ejecutar comandos remotos en el proxy Zabbix, configure el parámetro EnableRemoteCommands en '1' en la configuración del proxy.

Se muestra una lista de los scripts existentes con sus detalles.

Datos mostrados:

Columna Descripción
Nombre Nombre del script. Al hacer clic en el nombre del script, se abre el formulario de configuración.
Ámbito Ámbito del script: operación de acción, acción manual del equipo o acción manual del evento. Esta configuración determina dónde está disponible el script.
Usado en acciones Se muestran las acciones en las que se utiliza el script.
Tipo Se muestra el tipo de script: comando Webhook, Script, SSH, Telnet o IPMI.
Ejecutar en Se muestra si el script se ejecutará en el agente Zabbix, en el servidor Zabbix (proxy) o solo en el servidor Zabbix.
Comandos Se muestran todos los comandos que se ejecutarán dentro del script.
Grupo de usuarios Se muestra el grupo de usuarios para el que está disponible el script (o Todos para todos los grupos de usuarios).
Grupo de equipos Se muestra el grupo de equipos para el que está disponible el script (o Todos para todos los grupos de equipos).
Acceso de equipo Se muestra el nivel de permiso para el grupo de equipos: Lectura o Escritura. Solo los usuarios con el nivel de permiso requerido tendrán acceso para ejecutar el script.

Para configurar un nuevo script, haga clic en el botón Crear script en la esquina superior derecha.

Opciones de edición masiva

Un botón debajo de la lista ofrece una opción de edición masiva:

  • Eliminar - eliminar los scripts

Para usar esta opción, marque las casillas de verificación antes de los scripts respectivos y haga clic en Eliminar.

Usando el filtro

Puede utilizar el filtro para mostrar sólo los scripts que le interesan. Para un mejor rendimiento de la búsqueda, los datos se buscan con las macros sin resolver.

El enlace Filtro está disponible encima de la lista de scripts. Si hace clic en él, aparecerá un filtro disponible donde podrá filtrar scripts por nombre y alcance.

Configuración de un script global

Atributos del script:

Parámetro Descripción
Nombre Nombre único del script.
P. ej., Borrar sistema de archivos /tmp
Ámbito Ámbito del script: operación de acción, acción manual del host o acción manual del evento. Esta configuración determina dónde se puede utilizar el script: en comandos remotos de operaciones de acción, desde el menú host o desde el menú evento respectivamente.
Si se establece el alcance en 'Operación de acción', el script estará disponible para todos los usuarios con acceso a ConfiguraciónAcciones.
Si un script se utiliza realmente en una acción, su alcance no se puede cambiar y no será 'operación de acción'.
Compatibilidad con macros
El alcance afecta al rango de macros disponibles. Por ejemplo, las macros relacionadas con el usuario ({USER.*}) se admiten en los scripts para permitir pasar información sobre el usuario que lanzó el script. Sin embargo, no se admiten si el ámbito del script es una operación de acción, ya que las operaciones de acción se ejecutan automáticamente.
Para averiguar qué macros se admiten, realice una búsqueda de 'Notificaciones y comandos basados ​​en disparadores/Comandos basados ​​en disparadores', 'Scripts de acción de host manuales' y 'Scripts de acción de evento manuales' en la tabla macros compatibles. Tenga en cuenta que si una macro puede resolverse en un valor con espacios (por ejemplo, nombre de host), no olvide poner entre comillas según sea necesario.
Ruta de menú La ruta de menú deseada para el script. Por ejemplo, Default o Default/, mostrará el script en el directorio correspondiente. Los menús se pueden anidar, por ejemplo, Menú principal/Submenú1/Submenú2. Al acceder a los scripts a través del menú host/evento en las secciones de monitoreo, se organizarán de acuerdo con los directorios indicados.
Este campo solo se muestra si se selecciona 'Acción manual del host' o 'Acción manual del evento' como Ámbito.
Tipo Haga clic en el botón correspondiente para seleccionar el tipo de script:
Webhook, Script, SSH, Telnet o comando IPMI.
Tipo de script: Webhook
Parámetros Especifique las variables del webhook como pares atributo-valor.
Vea también: Configuración de medios de Webhook.
Se admiten macros y macros de usuario personalizadas en los valores de los parámetros. La compatibilidad con macros depende del alcance del script (consulte Alcance más arriba).
Script Ingrese el código JavaScript en el bloque que aparece al hacer clic en el campo de parámetros (o en el botón Ver/Editar junto a él).
La compatibilidad con macros depende del alcance del script (consulte Alcance más arriba).
Consulte también: Configuración de medios de Webhook, Objetos JavaScript adicionales.
Timeout Tiempo de espera de ejecución de JavaScript (1-60 s, 30 s predeterminado).
Se admiten sufijos de tiempo, p. ej., 30 s, 1 m.
Tipo de script: Script
Ejecutar en Haga clic en el botón correspondiente para ejecutar el script de shell en:
Agente Zabbix: el script será ejecutado por el agente Zabbix (si el elemento system.run está permitido) en el host
Servidor Zabbix (proxy): el script será ejecutado por el servidor o proxy Zabbix (si está habilitado por EnableRemoteCommands) - dependiendo de si el host es monitoreado por el servidor o proxy
Servidor Zabbix: el script será ejecutado únicamente por el servidor Zabbix
Comandos Ingrese la ruta completa a los comandos que se ejecutarán dentro del script.
La compatibilidad con macros depende del alcance del script (consulte Alcance arriba). Se admiten macros de usuario personalizadas.
Tipo de script: SSH
Método de autenticación Seleccione el método de autenticación: contraseña o clave pública.
Nombre de usuario Ingrese el nombre de usuario.
Contraseña Ingrese la contraseña.
Este campo está disponible si se selecciona "Contraseña" como método de autenticación.
Archivo de clave pública Ingrese la ruta al archivo de clave pública.
Este campo está disponible si se selecciona "Clave pública" como método de autenticación.
Archivo de clave privada Ingrese la ruta al archivo de clave privada.
Este campo está disponible si se selecciona "Clave pública" como método de autenticación.
Frase de contraseña Ingrese la frase de contraseña.
Este campo está disponible si se selecciona "Clave pública" como método de autenticación.
Puerto Ingrese el puerto.
Comandos Ingrese los comandos.
La compatibilidad con macros depende del alcance del script (consulte Alcance más arriba). Se admiten macros de usuario personalizadas.
Tipo de script: Telnet
Nombre de usuario Ingrese el nombre de usuario.
Contraseña Ingrese la contraseña.
Puerto Ingrese el puerto.
Comandos Ingrese los comandos.
La compatibilidad con macros depende del alcance del script (consulte Alcance más arriba). Se admiten macros de usuario personalizadas.
Tipo de script: IPMI
Comando Introduzca el comando IPMI.
La compatibilidad con macros depende del ámbito del script (consulte Ámbito más arriba). Se admiten macros de usuario personalizadas.
Descripción Introduzca una descripción para el script.
Grupo de host Seleccione el grupo de host para el que estará disponible el script (o Todos para todos los grupos de host).
Grupo de usuarios Seleccione el grupo de usuarios para el que estará disponible el script (o Todos para todos los grupos de usuarios).
Este campo solo se muestra si se selecciona 'Acción manual del host' o 'Acción manual del evento' como Ámbito.
Permisos de host necesarios Seleccione el nivel de permiso para el grupo de host: Lectura o Escritura. Solo los usuarios con el nivel de permiso requerido tendrán acceso para ejecutar el script.
Este campo solo se muestra si se selecciona "Acción manual del host" o "Acción manual del evento" como Alcance.
Habilitar confirmación Marque la casilla de verificación para mostrar un mensaje de confirmación antes de ejecutar el script. Esta función puede ser especialmente útil con operaciones potencialmente peligrosas (como un script de reinicio) o aquellas que pueden llevar mucho tiempo.
Esta opción solo se muestra si se selecciona "Acción manual del host" o "Acción manual del evento" como Alcance.
Texto de confirmación Ingrese un texto de confirmación personalizado para la ventana emergente de confirmación habilitada con la casilla de verificación anterior (por ejemplo, El sistema remoto se reiniciará. ¿Está seguro?). Para ver cómo se verá el texto, haga clic en Confirmación de prueba junto al campo.
Se admiten las macros {HOST.*} y {USER.*}. Se admiten las macros de usuario personalizadas.
Nota: las macros no se expandirán al probar el mensaje de confirmación.
Este campo se muestra solo si se selecciona 'Acción manual del host' o 'Acción manual del evento' como Ámbito.

Ejecución y resultado del script

Los scripts ejecutados por el servidor Zabbix se ejecutan en el orden descrito en la página Ejecución de comandos (incluida la comprobación del código de salida). El resultado del script se mostrará en una ventana emergente que aparecerá después de que se ejecute el script.

El valor de retorno del script es una salida estándar junto con un error estándar.

El valor de retorno está limitado a 16 MB (incluidos los espacios en blanco finales que se truncan); también se aplican los límites de la base de datos. Cuando los datos deben pasar por el proxy Zabbix, deben almacenarse en la base de datos, por lo que están sujetos a los mismos límites de la base de datos.

Vea un ejemplo de un script y la ventana de resultados a continuación:

uname -v /tmp/non_existing_script.sh echo "Este script fue iniciado por {USER.USERNAME}"

El resultado del script no muestra el script en sí.

Tiempo de espera del script

Agente Zabbix

Puede encontrarse con una situación en la que se agote el tiempo de espera mientras se ejecuta un script.

Vea un ejemplo de un script que se ejecuta en el agente Zabbix y la ventana de resultados a continuación:

sleep 5 df -h

El mensaje de error, en este caso, es el siguiente:

Tiempo de espera agotado mientras se ejecuta un script de shell.

Para evitar esta situación, se recomienda optimizar el script en sí (en lugar de ajustar el parámetro Timeout a un valor correspondiente (en nuestro caso, > ‘5’) modificando la configuración del agente Zabbix y la configuración del servidor Zabbix).

En caso de que se cambie el parámetro Timeout en la configuración del agente Zabbix, aparecerá el siguiente mensaje de error:

Error al obtener el valor del agente: se agotó el tiempo de espera de ZBX_TCP_READ().

Significa que se realizó una modificación en la configuración del agente Zabbix y también es necesario modificar la configuración de tiempo de espera en la configuración del servidor Zabbix.

Servidor/proxy Zabbix

Vea un ejemplo de un script que se ejecuta en el servidor Zabbix y la ventana de resultados a continuación:

sleep 11
       df -h

También se recomienda optimizar el script en sí (en lugar de ajustar el parámetro TrapperTimeout al valor correspondiente). (en nuestro caso, > ‘11’) modificando la configuración del servidor Zabbix).