3 Scripts

Descripción general

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

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

  • desde el menú de equipo en varias ubicaciones de la interfaz (Tablero, Problemas, Últimos datos, Mapas, etc.)
  • desde el menú de eventos
  • se puede ejecutar como una operación de acción

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

Tanto el agente de Zabbix como los scripts remotos del proxy de Zabbix están deshabilitados de forma predeterminada. Pueden habilitarse mediante:

  • Para comandos remotos ejecutados en el agente Zabbix:
    • agregar 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 comandos remotos ejecutados en el proxy Zabbix:
    • Advertencia: no es necesario habilitar los comandos remotos en el proxy Zabbix si se ejecutan comandos remotos en el agente Zabbix que es monitoreado por el proxy Zabbix. Sin embargo, si es necesario ejecutar comandos remotos en el proxy Zabbix, establezca el parámetro EnableRemoteCommands en '1' en la configuración del proxy.

La ejecución de script global en el servidor Zabbix se puede deshabilitar estableciendo EnableGlobalScripts=0 en la configuración del servidor. Para instalaciones nuevas, desde Zabbix 7.0, la ejecución de script global en el servidor Zabbix está deshabilitada de forma predeterminada.

Se muestra una lista de 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 script formulario de configuración.
Alcance Alcance del script: operación de acción, acción manual del host o acción manual de evento. Esta configuración determina dónde está disponible el script.
Usado en acciones Se muestran las acciones donde se utiliza el script.
Tipo Se muestra el tipo de script: URL, Webhook, Script, SSH, Telnet o comando IPMI.
Ejecutar en Se muestra si el script se ejecutará en el agente Zabbix, en el servidor o proxy Zabbix, 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 al equipo Se muestra el nivel de permiso para el grupo de equipos: Lectura o Escritura. Sólo 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 equipo 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ú del equipo o desde el menú de eventos respectivamente.
Si se establece el alcance en 'Operación de acción', el script estará disponible para todos los usuarios con acceso a AlertasAcciones.
Si un script se utiliza realmente en una acción, su alcance no se puede cambiar de '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 inició el script. Sin embargo, no se admiten si el alcance del script es la operación de acción, ya que las operaciones de acción se ejecutan automáticamente.
Una macro {MANUALINPUT} permite especificar la entrada manual en el momento de la ejecución del script. Se admite para secuencias de comandos de acciones manuales del equipo y de acciones manuales de eventos.
Para averiguar qué otras macros se admiten, realice una búsqueda de 'Notificaciones y comandos basados ​​en activadores/Comandos basados ​​en activadores', 'Secuencias de comandos de acciones manuales del equipo' y 'Secuencias de comandos de acciones manuales de eventos' en la tabla macros compatibles. Tenga en cuenta que si una macro puede resolverse en un valor con espacios (por ejemplo, nombre del equipo), no olvide poner entre comillas según sea necesario.
Ruta del menú La ruta del menú deseada para la secuencia de comandos. Por ejemplo, Default o Default/, mostrará la secuencia de comandos en el directorio correspondiente. Los menús se pueden anidar, por ejemplo, Main menu/Sub menu1/Sub menu2. Al acceder a secuencias de comandos a través del menú equipo/evento en las secciones de monitoreo, se organizarán de acuerdo con los directorios indicados.
Este campo se muestra solo si se selecciona 'Acción manual del equipo' o 'Acción manual de eventos' como Alcance.
Tipo Haga clic en el botón correspondiente para seleccionar el tipo de secuencia de comandos:
URL, Webhook, Script, SSH, Telnet o comando IPMI.
El tipo URL solo está disponible cuando se selecciona "Acción manual del equipo" o "Acción manual del evento" como Ámbito.
Tipo de secuencia de comandos: URL
URL Especifique la URL para un acceso rápido desde el menú del equipo o el menú de eventos.
Se admiten macros y macros de usuario personalizadas. La compatibilidad con macros depende del alcance del script (consulte Alcance más arriba).
Use la macro {MANUALINPUT} en este campo para poder especificar la entrada manual en el momento de la ejecución del script, por ejemplo:
http://{MANUALINPUT}/zabbix/zabbix.php?action=dashboard.view
Los valores de la macro no deben estar codificados en URL.
Abrir en una nueva ventana Determina si la URL debe abrirse en una nueva pestaña del navegador o en la misma.
Tipo de script: Webhook
Parámetros Especifique las variables del webhook como pares atributo-valor.
Consulte también: Configuración de medios del 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 editor modal que se abre al hacer clic en el campo de parámetros o en el ícono de lápiz que se encuentra 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 equipo
Proxy o servidor Zabbix: el script será ejecutado por el proxy o servidor Zabbix, dependiendo de si el equipo está monitoreado por proxy o servidor.
Se ejecutará en el proxy si está habilitado por EnableRemoteCommands.
Se ejecutará en el servidor si los scripts globales están habilitados por el parámetro de servidor EnableGlobalScripts.
Servidor Zabbix: el script será ejecutado por el servidor Zabbix solamente.
Esta opción no estará disponible si los scripts globales están deshabilitados mediante el parámetro de servidor EnableGlobalScripts.
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 más 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 Ingrese el comando IPMI.
La compatibilidad con macros depende del alcance del script (consulte Alcance más arriba). Se admiten macros de usuario personalizadas.
Descripción Ingrese una descripción para el script.
Grupo de equipos Seleccione el grupo de equipos para el que estará disponible el script (o Todos para todos los grupos de equipos).
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 equipo" o "Acción manual del evento" como Ámbito.
Permisos de equipo necesarios Seleccione 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.
Este campo solo se muestra si se selecciona "Acción manual del equipo" o "Acción manual del evento" como Ámbito.
Configuración avanzada Haga clic en la etiqueta Configuración avanzada para mostrar las opciones de configuración avanzada.
Este campo solo se muestra si se selecciona "Acción manual del equipo" o "Acción manual del evento" como Ámbito.

Configuración avanzada

Las opciones de configuración avanzada están disponibles en una sección plegable Configuración avanzada:

|Parámetro|Descripción| |----------|-------------------------------------- --| |Habilitar entrada de usuario|Marque la casilla de verificación para habilitar la entrada manual del usuario antes de ejecutar el script.
La entrada manual del usuario reemplazará el valor de la macro {MANUALINPUT} en el script.
Consulte también: Entrada manual del usuario.| |Mensaje de entrada|Ingrese un texto personalizado que solicite la entrada personalizada del usuario. Este texto se mostrará encima del campo de entrada en la ventana emergente Entrada manual.
Para ver una vista previa de la ventana emergente Entrada manual, haga clic en Probar entrada del usuario. La vista previa también permite probar si la cadena de entrada cumple con la regla de validación de entrada (consulte los parámetros a continuación).
La compatibilidad con macros y macros de usuario depende del alcance del script (consulte Alcance en los parámetros generales de configuración del script).| |Tipo de entrada|Seleccione el tipo de entrada manual:
Cadena - cadena única;
Desplegable - el valor se selecciona entre múltiples opciones desplegables.| |Opciones desplegables|Ingrese valores únicos para el menú desplegable de entrada del usuario en una lista delimitada por comas.
Para incluir una opción vacía en el menú desplegable, agregue una coma adicional al principio, en el medio o al final de la lista.< br>Este campo se muestra sólo si se selecciona 'Desplegable' como Tipo de entrada.| |Cadena de entrada predeterminada|Ingrese la cadena predeterminada para la entrada del usuario (o ninguna).
Este campo se validará con la expresión regular proporcionada en el campo Regla de validación de entrada.
El valor ingresado aquí será se muestra de forma predeterminada en la ventana emergente Entrada manual.
Este campo se muestra solo si se selecciona 'Cadena' como Tipo de entrada.| |Regla de validación de entrada|Ingrese una expresión regular para validar la cadena de entrada del usuario.
Se admiten expresiones regulares globales.
Este campo se muestra solo si se selecciona 'Cadena' como Tipo de entrada.| |Habilitar confirmación|Marque la casilla de verificación para mostrar un mensaje de confirmación antes de ejecutar el script. Esta característica puede ser especialmente útil con operaciones potencialmente peligrosas (como un script de reinicio) o aquellas que pueden llevar mucho tiempo.| |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.
Macros y [macros de usuario] personalizadas(/manual/config/macros/ user_macros) son compatibles.
Nota: las macros no se expandirán al probar el mensaje de confirmación.|

Si se configuran tanto la entrada manual del usuario como un mensaje de confirmación, se mostrarán en ventanas emergentes consecutivas.

Entrada manual del usuario

La entrada manual del usuario permite proporcionar un parámetro personalizado en cada ejecución del script. Esto ahorra la necesidad de crear múltiples scripts de usuario similares con una sola diferencia de parámetro.

Por ejemplo, es posible que desee proporcionar un número entero diferente o una dirección URL diferente al script durante la ejecución.

Para habilitar la entrada manual del usuario:

  • utilizar la macro {MANUALINPUT} en el script (comandos, script, parámetro de script) cuando sea necesario; o en el campo URL de los scripts de URL;
  • en la configuración de script avanzada, habilite la entrada manual del usuario y configure las opciones de entrada.

Con la entrada del usuario habilitada, antes de la ejecución del script, aparecerá una ventana emergente de Entrada manual al usuario solicitándole que proporcione un valor personalizado. El valor proporcionado reemplazará a {MANUALINPUT} en el script.

Dependiendo de la configuración, se le pedirá al usuario que ingrese un valor de cadena:

O seleccione el valor de un menú desplegable de opciones predeterminadas:

La entrada manual del usuario está disponible solo para secuencias de comandos cuyo alcance es "Acción manual del equipo" o "Acción manual del evento".

Ejecución del script y resultado

Los scripts ejecutados por el servidor Zabbix se ejecutan en el orden descrito en la página Ejecución de comandos (incluida la verificación del código de salida). El resultado del script se mostrará en una ventana emergente que aparecerá después de ejecutar 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 truncados); También se aplican límites de la base de datos. Cuando los datos tienen que pasar a través del proxy Zabbix, deben almacenarse en la base de datos, sometiéndolos así a los mismos [límites de la base de datos] (/manual/config/items/item#text-data-limits).

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 de Zabbix

Es posible que se produzca una situación en la que se agote el tiempo de espera al ejecutar 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 al ejecutar un script de shell.

Para evitar tales situaciones, se recomienda optimizar el script en sí (en el ejemplo anterior, "5") en lugar de ajustar el parámetro Timeout en la Configuración del agente Zabbix y Configuración del servidor Zabbix. Sin embargo, para el agente Zabbix en modo activo, el parámetro Timeout en configuración del servidor Zabbix debe ser al menos varios segundos más largo que el parámetro RefreshActiveChecks en configuración del agente Zabbix. Esto garantiza que el servidor tenga tiempo suficiente para recibir los resultados de la verificación activa del agente. Tenga en cuenta que la ejecución de scripts en un agente activo se admite desde el agente Zabbix 7.0.

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

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

Significa que la modificación se ha realizado en la configuración del agente Zabbix, pero es necesario modificar el parámetro Timeout en la configuración del servidor Zabbix también.

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).