This is a translation of the original English documentation page. Help us make it better.

Sidebar

Zabbix Summit 2022
Register for Zabbix Summit 2022

8 Scripts

Overview

In the Administration → Scripts section user-defined global scripts can be configured and maintained.

These scripts, depending on the set user permissions, then become available for execution by clicking on the host in various frontend locations (Dashboard, Problems, Latest data, Maps) and can also be run as an action operation. The scripts are executed on the Zabbix server or agent.

A listing of existing scripts with their details is displayed.

Displayed data:

Column Description
Name Name of the script. Clicking on the script name opens the script configuration form.
Type Script type is displayed - Script or IPMI command.
Execute on It is displayed whether the script will be executed on Zabbix server or agent.
Commands All commands to be executed within the script are displayed.
User group The user group that the script is available to is displayed (or All for all user groups).
Host group The host group that the script is available for is displayed (or All for all host groups).
Host access The permission level for the host group is displayed - Read or Write. Only users with the required permission level will have access to executing the script.

To configure a new script, click on the Create script button in the top right-hand corner.

Options d'édition en masse

Un bouton sous la liste offre une option d'édition en masse :

  • Supprimer - supprimer les scripts

Pour utiliser cette option, cochez les cases devant les scripts respectifs et cliquez sur Supprimer.

Utilisation du filtre

Vous pouvez utiliser le filtre pour n'afficher que les scripts qui vous intéressent. Pour de meilleures performances de recherche, les données sont recherchées avec des macros non résolues.

Le lien Filtre est disponible au-dessus de la liste des scripts. Si vous cliquez dessus, un filtre devient disponible où vous pouvez filtrer les scripts par nom et portée.

Configuring a global script

Script attributes:

Parameter Description
Name Unique name of the script.
Since Zabbix 2.2 the name can be prefixed with the desired path, for example, Default/, putting the script into the respective directory. When accessing scripts through the menu in monitoring sections, they will be organized according to the given directories.
A script cannot have the same name as an existing directory (and vice versa). A script name must be unique within its directory.
Unescaped script names are validated for uniqueness, i.e. "Ping" and "\Ping" cannot be added in the same folder. A single backslash escapes any symbol directly after it. For example, characters '/' and '\' can be escaped by backslash, i.e. \/ or \\.
Type Click the respective button to select script type - IPMI command or Script.
Execute on Click the respective button to execute the script on:
Zabbix agent - the script will be executed by Zabbix agent on the host
Zabbix server (proxy) - the script will be executed by Zabbix server or proxy - depending on whether the host is monitored by server or proxy
Zabbix server - the script will be executed by Zabbix server only
The option to execute scripts on Zabbix agent is available since Zabbix 2.0 version (providing remote commands are enabled in the EnableRemoteCommands parameter in Zabbix agent configuration file).
Commands Enter full path to the commands to be executed within the script.
The following macros are supported in the commands: {HOST.CONN}, {HOST.IP}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}. If a macro may resolve to a value with spaces (for example, host name), don't forget to quote as needed.
Since Zabbix 2.2, user macros are supported in script commands.
Description Enter a description for the script.
User group Select the user group that the script will be available to (or All for all user groups).
Host group Select the host group that the script will be available for (or All for all host groups).
Required host permissions Select the permission level for the host group - Read or Write. Only users with the required permission level will have access to executing the script.
Enable confirmation Mark the checkbox to display a confirmation message before executing the script. This feature might be especially useful with potentially dangerous operations (like a reboot script) or ones that might take a long time.
Confirmation text Enter a custom confirmation text for the confirmation popup enabled with the checkbox above (for example, Remote system will be rebooted. Are you sure?). To see how the text will look like, click on Test confirmation next to the field.
Since Zabbix 2.2, the confirmation text will expand host name macros - {HOST.HOST}, {HOST.NAME}, host connection macros - {HOST.IP}, {HOST.DNS}, {HOST.CONN} and user macros. Note: The macros will not be expanded when testing the confirmation message.

Exécution du script et résultat

Les scripts exécutés par le serveur Zabbix sont exécutés dans l'ordre décrit dans la section Exécution de la commande, y compris la vérification du code de sortie. Le résultat du script sera affiché dans une fenêtre contextuelle qui apparaîtra après l'exécution du script.

Remarque : La valeur de retour du script est la sortie standard avec l'erreur standard.

Voir un exemple de script et la fenêtre de résultat ci-dessous :

uname -v
       /tmp/non_existing_script.sh
       echo "This script was started by {USER.USERNAME}"

Le résultat du script n'affiche pas le script lui-même.

Délai d'expiration du script

Agent Zabbix

Vous pouvez rencontrer une situation où un délai d'attente se produit lors de l'exécution d'un script.

Voir un exemple de script exécuté sur l'agent Zabbix et la fenêtre de résultat ci-dessous :

sleep 5
       df -h

Le message d'erreur, dans ce cas, est le suivant :

Timeout while executing a shell script.

Afin d'éviter une telle situation, il est conseillé d'optimiser le script lui-même (au lieu d'ajuster le paramètre Timeout à une valeur correspondante (dans notre cas, > '5') en modifiant la configuration de l'agent Zabbix et la configuration du serveur Zabbix).

Si le paramètre Timeout est tout de même modifié dans la configuration de l'agent Zabbix, le message d'erreur suivant peut apparaître :

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

Cela signifie qu'une modification a été apportée dans la configuration de l'agent Zabbix et qu'il est nécessaire de modifier le paramètre Timeout également dans la configuration du serveur Zabbix.

Serveur/proxy Zabbix

Voici un exemple de script exécuté sur le serveur Zabbix et la fenêtre résultat ci-dessous :

sleep 11
       df-h

Il est également conseillé d'optimiser le script lui-même (au lieu d'ajuster paramètre TrapperTimeout à une valeur correspondante (dans notre cas, > ‘11’) en modifiant la configuration du serveur Zabbix).