Se encuentra viendo la documentación de la versión en desarrollo, puede estar incompleta.
Esta página fue traducida automáticamente. Si detectas un error, selecciónalo y presiona Ctrl+Enter para informarlo a los editores.

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, dependiendo del alcance configurado y también de los permisos del usuario, están disponibles para su ejecución:

  • desde el menú de equipo en varias ubicaciones del frontend (Panel de control, Problemas, Últimos datos, Mapas, etc.)
  • desde el menú de evento
  • pueden ejecutarse 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 por defecto. Se pueden habilitar mediante:

  • Para comandos remotos ejecutados en el agente Zabbix:
    • agregando un parámetro AllowKey=system.run[<comando>,*] para cada comando permitido en la configuración del agente, * representa los modos wait y nowait;
  • Para 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 monitorizado por el proxy Zabbix. Sin embargo, si se requiere ejecutar comandos remotos en el proxy Zabbix, establezca el parámetro EnableRemoteCommands en '1' en la configuración del proxy.

La ejecución de scripts globales en el servidor Zabbix se puede deshabilitar estableciendo EnableGlobalScripts=0 en la configuración del servidor. Para nuevas instalaciones, desde Zabbix 7.0, la ejecución de scripts globales en el servidor Zabbix está deshabilitada por defecto.

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 del script.
Alcance Alcance del script: operación de acción, acción manual de equipo o acción manual de evento. Esta configuración determina dónde está disponible el script.
Usado en acciones Se muestran todas las acciones donde se utiliza el script, precedidas por el número total de estas acciones.
Al hacer clic en el nombre de la acción se abre el formulario de configuración de la acción. Si el usuario no tiene permisos para la acción, el nombre no es clicable.
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, el proxy Zabbix o el servidor, o solo en el servidor Zabbix.
Comandos Se muestran todos los comandos que se ejecutarán dentro del script.
No se muestra nada aquí para los webhooks.
Grupo de usuarios Se muestra el grupo de usuarios al 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. Solo los usuarios con el nivel de permiso requerido tendrán acceso a la ejecución del 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 utilizar esta opción, marque las casillas antes de los scripts respectivos y haga clic en Eliminar.

Usando el filtro

Puede usar el filtro para mostrar solo los scripts que le interesan. Para un mejor rendimiento de búsqueda, los datos se buscan con macros sin resolver.

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

Configuración de un script global

Atributos del script:

Parámetro Descripción
Nombre Nombre único del script.
Ejemplo: Limpiar sistema de archivos /tmp
Ámbito Ámbito del script: operación de acción, acción manual sobre equipo o acción manual sobre evento. Esta configuración determina dónde se puede utilizar el script: en comandos remotos de operaciones de acción, desde el menú de equipo o desde el menú de evento respectivamente.
Establecer el ámbito en 'Operación de acción' hace que el script esté disponible para todos los usuarios con acceso a AlertasAcciones.
Si un script se utiliza realmente en una acción, su ámbito no puede cambiarse de 'operación de acción'.
Soporte de macros
El ámbito afecta al rango de macros disponibles. Por ejemplo, las macros relacionadas con el usuario ({USER.*}) son compatibles 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 operación de acción, ya que las operaciones de acción se ejecutan automáticamente.
La macro {MANUALINPUT} permite especificar una entrada manual en el momento de la ejecución del script. Es compatible para scripts de acción manual sobre equipo y acción manual sobre evento.
Para saber qué otras macros son compatibles, busque 'Notificaciones y comandos basados en disparadores/Comandos basados en disparadores', 'Scripts de acción manual sobre equipo' y 'Scripts de acción manual sobre evento' en la tabla de macros soportadas. Tenga en cuenta que si una macro puede resolverse en un valor con espacios (por ejemplo, el nombre del equipo), no olvide entrecomillar según sea necesario.
Ruta del menú La ruta de menú deseada para el script. Por ejemplo, Por defecto o Por defecto/, mostrará el script en el directorio respectivo. Los menús pueden anidarse, por ejemplo, Menú principal/Submenú1/Submenú2. Al acceder a los scripts a través del menú de equipo/evento en las secciones de monitorización, se organizarán según los directorios indicados.
Este campo solo se muestra si se selecciona 'Acción manual sobre equipo' o 'Acción manual sobre evento' como Ámbito.
Tipo Haga clic en el botón correspondiente para seleccionar el tipo de script:
URL, Webhook, Script, SSH, Telnet o comando IPMI.
El tipo URL solo está disponible cuando se selecciona 'Acción manual sobre equipo' o 'Acción manual sobre evento' como Ámbito.
Tipo de script: URL
URL Especifique la URL para el acceso rápido desde el menú de equipo o el menú de evento.
Se admiten macros y macros de usuario personalizadas. El soporte de macros depende del ámbito del script (ver Ámbito arriba).
Utilice la macro {MANUALINPUT} en este campo para poder especificar una entrada manual en el momento de la ejecución del script, por ejemplo:
http://{MANUALINPUT}/zabbix/zabbix.php?action=dashboard.view
Los valores de las macros no deben estar codificados en URL.
Abrir en 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 del medio Webhook.
Se admiten macros y macros de usuario personalizadas en los valores de los parámetros. El soporte de macros depende del ámbito del script (ver Ámbito arriba).
Script Introduzca el código JavaScript en el editor modal que se abre al hacer clic en el campo de parámetro o en el icono de lápiz junto a él.
El soporte de macros depende del ámbito del script (ver Ámbito arriba).
Consulte también: configuración del medio Webhook, Objetos Javascript adicionales.
Tiempo de espera Tiempo de espera de ejecución de JavaScript (1-60s, por defecto 30s).
Se admiten sufijos de tiempo, por ejemplo, 30s, 1m.
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 la métrica system.run está permitida) en el equipo
Proxy o servidor Zabbix: el script será ejecutado por el proxy o servidor Zabbix, dependiendo de si el equipo es monitorizado por proxy o servidor.
Se ejecutará en el proxy si está habilitado mediante EnableRemoteCommands.
Se ejecutará en el servidor si los scripts globales están habilitados mediante el parámetro de servidor EnableGlobalScripts.
Servidor Zabbix: el script solo será ejecutado por el servidor Zabbix.
Esta opción no estará disponible si los scripts globales están deshabilitados mediante el parámetro de servidor EnableGlobalScripts.
Comandos Introduzca la ruta completa de los comandos que se ejecutarán dentro del script.
El soporte de macros depende del ámbito del script (ver Ámbito 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 Introduzca el nombre de usuario.
Contraseña Introduzca la contraseña.
Este campo está disponible si se selecciona 'Contraseña' como método de autenticación.
Archivo de clave pública Introduzca 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 Introduzca 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 Introduzca la frase de contraseña.
Este campo está disponible si se selecciona 'Clave pública' como método de autenticación.
Puerto Introduzca el puerto.
Comandos Introduzca los comandos.
El soporte de macros depende del ámbito del script (ver Ámbito arriba). Se admiten macros de usuario personalizadas.
Tipo de script: Telnet
Nombre de usuario Introduzca el nombre de usuario.
Contraseña Introduzca la contraseña.
Puerto Introduzca el puerto.
Comandos Introduzca los comandos.
El soporte de macros depende del ámbito del script (ver Ámbito arriba). Se admiten macros de usuario personalizadas.
Tipo de script: IPMI
Comando Introduzca el comando IPMI.
El soporte de macros depende del ámbito del script (ver Ámbito arriba). Se admiten macros de usuario personalizadas.
Descripción Introduzca 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 sobre equipo' o 'Acción manual sobre evento' como Ámbito.
Permisos requeridos sobre el equipo 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 a la ejecución del script.
Este campo solo se muestra si se selecciona 'Acción manual sobre equipo' o 'Acción manual sobre 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 sobre equipo' o 'Acción manual sobre 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 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 de usuario.
Mensaje de entrada Introduzca un texto personalizado solicitando 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 de usuario. La vista previa también permite comprobar si la cadena de entrada cumple con la regla de validación de entrada (ver parámetros a continuación).
El soporte para macros y macros de usuario depende del alcance del script (ver Alcance en los parámetros generales de configuración del script).
Tipo de entrada Seleccione el tipo de entrada manual:
Cadena - una sola cadena;
Desplegable - el valor se selecciona de varias opciones desplegables.
Opciones desplegables Introduzca valores únicos para el desplegable de entrada de usuario en una lista separada por comas.
Para incluir una opción vacía en el desplegable, agregue una coma adicional al principio, en medio o al final de la lista.
Este campo solo se muestra si se selecciona 'Desplegable' como Tipo de entrada.
Cadena de entrada por defecto Introduzca la cadena por defecto para la entrada de usuario (o ninguna).
Este campo se validará contra la expresión regular proporcionada en el campo Regla de validación de entrada.
El valor introducido aquí se mostrará por defecto en la ventana emergente Entrada manual.
Este campo solo se muestra si se selecciona 'Cadena' como Tipo de entrada.
Regla de validación de entrada Introduzca una expresión regular para validar la cadena de entrada del usuario.
Se admiten expresiones regulares globales.
Este campo solo se muestra si se selecciona 'Cadena' como Tipo de entrada.
Habilitar confirmación Marque la casilla 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 puedan tardar mucho tiempo.
Texto de confirmación Introduzca un texto de confirmación personalizado para la ventana emergente de confirmación habilitada con la casilla anterior (por ejemplo, El sistema remoto se reiniciará. ¿Está seguro?). Para ver cómo se verá el texto, haga clic en Probar confirmación junto al campo.
Se admiten Macros y macros de usuario personalizadas.
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 evita la necesidad de crear múltiples scripts de usuario similares con solo una 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:

  • utilice la macro {MANUALINPUT} en el script (comandos, script, parámetro del script) donde sea necesario; o en el campo URL de los scripts de URL;
  • en la configuración avanzada del script, 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 Entrada manual solicitando al usuario 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 introduzca un valor de cadena:

O que seleccione el valor de una lista desplegable de opciones predefinidas:

La entrada manual del usuario solo está disponible para scripts cuyo alcance sea 'Acción manual de equipo' o 'Acción manual de evento'.

Ejecución del script y resultado

Los scripts ejecutados por el servidor Zabbix se ejecutan en el orden descrito en la página de ejecución de comandos.

El resultado del script se muestra en una ventana emergente que aparece después de ejecutar el script. El valor de retorno del script es una salida estándar:

  • Si el script finaliza correctamente (código de salida 0), el valor de retorno está limitado a 16MB (incluyendo los espacios en blanco finales que se truncan).
  • Si el script termina con un error (código de salida distinto de cero), el valor de retorno es un error estándar limitado a 2KB.

Zabbix no almacena la salida extendida del script por defecto. Para conservar los detalles completos de la salida, puede implementar el registro dentro del propio script (por ejemplo, redirigiendo la salida a un archivo de registro local).

Tenga en cuenta que para los scripts ejecutados tanto en el servidor Zabbix como en el proxy Zabbix, también se aplican los límites de la base de datos.

A continuación se muestra un ejemplo de un script y la ventana de resultados:

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

El resultado del script no muestra el propio script.

Tiempo de espera del script

Agente Zabbix

Puede encontrarse con una situación en la que se produzca un tiempo de espera al ejecutar un script.

Vea un ejemplo de un script ejecutándose 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:

Timeout while executing a shell script.

Para evitar este tipo de situaciones, se recomienda optimizar el propio script (en el ejemplo anterior, "5") en lugar de ajustar el parámetro Timeout en la configuración del agente Zabbix y en la configuración del servidor Zabbix. Sin embargo, para el agente Zabbix en modo activo, el parámetro Timeout en la configuración del servidor Zabbix debe ser al menos varios segundos mayor que el parámetro RefreshActiveChecks en la configuración del agente Zabbix. Esto asegura que el servidor tenga tiempo suficiente para recibir los resultados de las comprobaciones activas del agente. Tenga en cuenta que la ejecución de scripts en un agente activo es compatible desde el agente Zabbix 7.0.

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

Get value from agent failed: ZBX_TCP_READ() timed out.

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

Servidor/proxy de Zabbix

Vea un ejemplo de un script ejecutándose en el servidor de Zabbix y la ventana de resultados a continuación:

sleep 11
       df -h

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