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

8 Scripts

Aperçu

Dans la section Administration → Scripts, des scripts globaux définis par l'utilisateur peuvent être configurés et gérés.

Des scripts globaux, en fonction de la portée configurée et des autorisations utilisateur, sont disponibles pour exécution :

  • depuis le menu hôte dans divers emplacements frontaux (Tableaux de bord, Problèmes, Dernières données, Cartes, etc.)
  • depuis le menu événement
  • peut être exécuté comme une opération d'action

Les scripts sont exécutés sur l'agent Zabbix, le serveur Zabbix (proxy) ou le serveur Zabbix uniquement. Voir aussi Exécution de la commande.

Les scripts distants de l'agent Zabbix et du proxy Zabbix sont désactivés par défaut. Ils peuvent être activés par :

  • Pour les commandes à distance exécutées sur l'agent Zabbix
    • en ajoutant un paramètre AllowKey=system.run[<command>,*] pour chaque commande autorisée dans la configuration de l'agent, * représente le mode wait et nowait ;
  • Pour les commandes distantes exécutées sur le proxy Zabbix
    • Avertissement : Il n'est pas nécessaire d'activer les commandes à distance sur le proxy Zabbix si les commandes à distance sont exécutées sur l'agent Zabbix surveillé par le proxy Zabbix. Si, toutefois, il est nécessaire d'exécuter des commandes à distance sur le proxy Zabbix, définissez le paramètre EnableRemoteCommands sur '1' dans la configuration du proxy.

Une liste des scripts existants avec leurs détails s'affiche.

Données affichées :

Colonne Description
Nom Nom du script. Cliquer sur le nom du script ouvre le formulaire de configuration du script.
Portée Portée du script - opération d'action, action manuelle de l'hôte ou action manuelle de l'événement. Ce paramètre détermine où le script est disponible.
Utilisé dans les actions Les actions où le script est utilisé sont affichées.
Type Le type de script est affiché - Commande Webhook, Script, SSH, Telnet ou IPMI.
Exécuter sur Il est affiché si le script sera exécuté sur l'agent Zabbix, le serveur Zabbix (proxy) ou le serveur Zabbix uniquement.
Commandes Toutes les commandes à exécuter dans le script sont affichées.
Groupe d'utilisateurs Le groupe d'utilisateurs pour lequel le script est disponible est affiché (ou Tous pour tous les groupes d'utilisateurs).
Groupe d'hôtes Le groupe d'hôtes pour lequel le script est disponible est affiché (ou Tous pour tous les groupes d'hôtes).
Accès hôte Le niveau d'autorisation pour le groupe hôte est affiché - Lecture ou Écriture. Seuls les utilisateurs disposant du niveau d'autorisation requis auront accès à l'exécution du script.

Pour configurer un nouveau script, cliquez sur le bouton Créer un script dans le coin supérieur droit.

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.

Configuration d'un script global

Attributs de script :

Paramètre Description
Nom Nom unique du script.
Ex. Vider le système de fichiers /tmp
Étendue Portée du script - opération d'action, action manuelle de l'hôte ou action manuelle de l'événement. Ce paramètre détermine où le script peut être utilisé - dans les commandes à distance des opérations d'action, depuis le menu hôte ou depuis le menu événement respectivement.
Définir la portée sur 'Action d'opération' rend le script disponible pour tous les utilisateurs ayant accès à ConfigurationActions.
Si un script est réellement utilisé dans un action, sa portée ne peut pas être modifiée en dehors de 'l'Action d'opération'.
Prise en charge des macros
La portée affecte la gamme de macros disponibles. Par exemple, les macros liées à l'utilisateur ({USER.*}) sont prises en charge dans les scripts pour permettre la transmission d'informations sur l'utilisateur qui a lancé le script. Cependant, elles ne sont pas prises en charge si la portée du script est une opération d'action, car les opérations d'action sont exécutées automatiquement.
Pour savoir quelles macros sont prises en charge, effectuez une recherche sur 'Notifications et commandes basées sur des déclencheurs/Commandes basées sur des déclencheurs', 'Scripts d'action d'hôte manuels' et 'Scripts d'action d'événement manuels' dans le tableau des macros prises en charge. Notez que si une macro peut se résoudre en une valeur avec des espaces (par exemple, le nom d'hôte), n'oubliez pas de citer si nécessaire.
Chemin du menu Le chemin de menu souhaité vers le script. Par exemple, Default ou Default/, affichera le script dans le répertoire respectif. Les menus peuvent être imbriqués, par ex. Menu principal/Sous-menu1/Sous-menu2. Lors de l'accès aux scripts via le menu hôte/événement dans les sections de surveillance, ils seront organisés en fonction des répertoires donnés.
Ce champ s'affiche uniquement si 'Action manuelle de l'hôte' ou 'Action manuelle d'événement' est sélectionné comme Étendue.
Type Cliquez sur le bouton correspondant pour sélectionner le type de script :
Webhook, Script, SSH, Telnet ou IPMI.
Type de script : Webhook
Paramètres Spécifiez les variables du webhook sous forme de paires attribut-valeur.
Voir aussi : Configuration des médias Webhook.
Les macros et macros utilisateur personnalisées sont pris en charge dans les valeurs de paramètre. La prise en charge des macros dépend de l'étendue du script (voir Étendue ci-dessus).
Script Entrez le code JavaScript dans le bloc qui apparaît lorsque vous cliquez dans le champ de paramètre (ou sur le bouton afficher/modifier à côté).
La prise en charge des macros dépend de l'étendue du script (voir Étendue ci-dessus).<br >Voir aussi : Configuration des médias Webhook, Objets Javascript supplémentaires.
Expiration Délai d'exécution JavaScript (1-60s, 30s par défaut).
Les suffixes de temps sont pris en charge, par ex. 30s, 1m.
Type de script : Script
Exécuter sur Cliquez sur le bouton correspondant pour exécuter le script shell sur :
Agent Zabbix - le script sera exécuté par l'agent Zabbix (si l'élément system.run est autorisé) sur l'hôte
Serveur Zabbix (proxy) - le script sera exécuté par le serveur Zabbix ou le proxy (si activé par EnableRemoteCommands) - selon que l'hôte est surveillé par un serveur ou un proxy
Serveur Zabbix - le script sera exécuté par le serveur Zabbix uniquement
Commandes Entrez le chemin complet des commandes à effectuer dans le script.
La prise en charge des macros dépend de la portée du script (voir Étendue ci-dessus). Les macros utilisateur personnalisées sont prises en charge.
Type de script : SSH
Méthode d'authentification Sélectionnez la méthode d'authentification - mot de passe ou clé publique.
Nom d'utilisateur Entrez le nom d'utilisateur.
Mot de passe Entrez le mot de passe.
Ce champ est disponible si 'Mot de passe' est sélectionné comme méthode d'authentification.
Fichier de clé publique Entrez le chemin d'accès au fichier de clé publique.
Ce champ est disponible si 'Clé publique' est sélectionné comme méthode d'authentification.
Fichier de clé privée Entrez le chemin d'accès au fichier de clé privée.
Ce champ est disponible si 'Clé publique' est sélectionné comme méthode d'authentification.
Phrase de passe de la clé Saisissez la phrase secrète.
Ce champ est disponible si 'Clé publique' est sélectionné comme méthode d'authentification.
Port Entrez le port.
Commandes Entrez les commandes.
La prise en charge des macros dépend de la portée du script (voir Étendue ci-dessus). Les macros utilisateur personnalisées sont prises en charge.
Type de script : Telnet
Nom d'utilisateur Entrez le nom d'utilisateur.
Mot de passe Entrez le mot de passe.
Port Entrez le port.
Commandes Entrez les commandes.
La prise en charge des macros dépend de la portée du script (voir Étendue ci-dessus). Les macros utilisateur personnalisées sont prises en charge.
Type de script : IPMI
Commandes Entrez les commandes IPMI.
La prise en charge des macros dépend de la portée du script (voir Étendue ci-dessus). Les macros utilisateur personnalisées sont prises en charge.
Description Entrez une description pour le script.
Groupe d'hôtes Sélectionnez le groupe d'hôtes pour lequel le script sera disponible (ou Tous pour tous les groupes d'hôtes).
Groupe d'utilisateurs Sélectionnez le groupe d'utilisateurs pour lequel le script sera disponible (ou Tous pour tous les groupes d'utilisateurs).
Ce champ s'affiche uniquement si 'Action manuelle de l'hôte' ou 'Action manuelle d'événement' est sélectionné comme Étendue.
Permissions d'hôte requises Sélectionnez le niveau d'autorisation pour le groupe d'hôtes - Lecture ou Écriture. Seuls les utilisateurs disposant du niveau d'autorisation requis auront accès à l'exécution du script.
Ce champ s'affiche uniquement si 'Action manuelle de l'hôte' ou 'Action manuelle d'événement' est sélectionné comme Étendue.
Activer confirmation Cochez la case pour afficher un message de confirmation avant d'exécuter le script. Cette fonctionnalité peut être particulièrement utile avec des opérations potentiellement dangereuses (comme un script de redémarrage) ou celles qui peuvent prendre beaucoup de temps.
Cette option s'affiche uniquement si 'Action manuelle de l'hôte' ou 'Action manuelle d'événement' est sélectionné comme Étendue.
Texte de confirmation Saisissez un texte de confirmation personnalisé pour la fenêtre contextuelle de confirmation activée avec la case à cocher ci-dessus (par exemple, Le système distant va être redémarré. Êtes-vous sûr ?). Pour voir à quoi ressemblera le texte, cliquez sur Test de la confirmation à côté du champ.
Les macros {HOST.*} et {USER.*} sont prises en charge. Les macros utilisateur personnalisées sont prises en charge.
Remarque : les macros ne seront pas développées lors du test du message de confirmation.
Ce champ s'affiche uniquement si 'Action manuelle de l'hôte' ou 'Action manuelle d'événement' est sélectionné comme Étendue.

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