Avec les commandes à distance, vous pouvez définir qu’une certaine commande prédéfinie est automatiquement exécutée sur l’hôte surveillé sous certaines conditions.
Ainsi, les commandes à distance constituent un mécanisme puissant pour la supervision proactive intelligente.
Dans les utilisations les plus évidentes de cette fonctionnalité, vous pouvez essayer de :
La configuration d'une action pour les commandes à distance est similaire à celle pour l'envoi d'un message, la seule différence étant que Zabbix exécutera une commande au lieu d'envoyer un message.
Les commandes à distance peuvent être exécutées par un serveur, un proxy ou un agent Zabbix. Les commandes à distance sur l'agent Zabbix peuvent être exécutées directement par le serveur Zabbix ou via un proxy Zabbix. Les commandes distantes de l'agent Zabbix et du proxy Zabbix sont désactivées par défaut. Elles peuvent être activées en : - ajoutant le paramètre AllowKey=system.run[*]
dans la configuration de l'agent; - définissant le paramètre EnableRemoteCommands à '1' dans la configuration du proxy.
Les commandes distantes exécutées par le serveur Zabbix sont exécutées comme décrit dans Exécution de commandes y compris la vérification du code de sortie.
Les commandes à distance sont exécutées même si l'hôte cible est en maintenance.
La limite des commandes à distance après la résolution de toutes les macros dépend du type de base de données et du jeu de caractères (les caractères non ASCII nécessitent plus d'un octet pour être stockés) :
Database | Limite en caractères | Limite en octets |
MySQL | 65535 | 65535 |
Oracle Database | 2048 | 4000 |
PostgreSQL | 65535 | illimité |
SQLite (only Zabbix proxy) | 65535 | illimité |
Le didacticiel suivant fournit des instructions détaillées sur la configuration des commandes à distance.
Les commandes à distance exécutées sur l'agent Zabbix (scripts personnalisés) doivent d'abord être activées dans le fichier de configuration de l'agent.
Assurez-vous que le paramètre AllowKey=system.run[<command>,*] est ajouté pour chaque commande autorisée dans la configuration de l'agent pour autoriser une commande spécifique avec le mode nowait. Redémarrez le démon de l'agent si vous modifiez ce paramètre.
Les commandes à distance ne fonctionnent pas avec les agents Zabbix actifs.
Ensuite, lors de la configuration d’une nouvelle action dans Configuration → Actions :
Tous les scripts (webhook, script, SSH, Telnet, IPMI) disponibles pour les opérations d'action sont définis dans les scripts globaux.
Par exemple :
Dans ce cas, Zabbix essaiera de redémarrer un processus Apache. Avec cette commande, assurez-vous que la commande est exécutée sur l’agent Zabbix (cliquez sur le bouton agent Zabbix à côté de Exécuter sur).
Notez que pour l'utilisation de sudo l'utilisateur Zabbix ne dispose pas des autorisations pour redémarrer les services systèmes par défaut. Voir ci-dessous des astuces de configuration de sudo.
L'agent Zabbix doit s'exécuter sur l'hôte distant et accepter les connexions entrantes. L'agent Zabbix exécute les commandes en arrière-plan.
Les commandes à distance sur l'agent Zabbix sont exécutées sans délai par la clé system.run[,nowait] et les résultats de l'exécution ne sont pas vérifiées. Sur le serveur Zabbix, les commandes à distance sont exécutées avec le délai d'expiration défini dans le paramètre TrapperTimeout du fichier zabbix_server.conf et leurs résultats sont vérifiés.
Assurez-vous que l'utilisateur 'zabbix' dispose des autorisations d'exécution pour les commandes configurées. On peut être intéressé par l'utilisation de sudo pour donner accès à des commandes privilégiées. Pour configurer l'accès, exécutez en tant que root :
Exemples de lignes pouvant être utilisées dans le fichier sudoers :
# permet à l'utilisateur 'zabbix' d'exécuter toutes les commandes sans mot de passe.
zabbix ALL=NOPASSWD: ALL
# permet à l'utilisateur 'zabbix' de redémarrer apache sans mot de passe.
zabbix ALL=NOPASSWD: /etc/init.d/apache restart
Sur certains systèmes, le fichier sudoers empêchera les utilisateurs non locaux d’exécuter des commandes. Pour changer cela, commentez l'option requiretty dans /etc/sudoers.
Si le système cible possède plusieurs interfaces du type sélectionné (agent Zabbix ou IPMI), les commandes à distance seront exécutées sur l'interface par défaut.
Il est possible d'exécuter des commandes à distance via SSH et Telnet en utilisant une autre interface que celle de l'agent Zabbix. L'interface disponible à utiliser est sélectionnée dans l'ordre suivant :
Pour les commandes distantes IPMI, la syntaxe suivante doit être utilisée :
où
Exemples de scripts globaux pouvant être utilisés comme commandes distantes dans les opérations d'action.
Redémarrage de Windows sous certaines conditions.
Afin de redémarrer automatiquement Windows en cas de problème détecté par Zabbix, définissez le script suivant :
Paramètre du script | Valeur |
---|---|
Scope | 'Action operation' |
Type | 'Script' |
Command | c:\windows\system32\shutdown.exe -r -f |
Redémarrez l'hôte à l'aide du contrôle IPMI.
Paramètre du script | Valeur |
---|---|
Scope | 'Action operation' |
Type | 'IPMI' |
Command | reset |
Mettez l'hôte hors tension à l'aide du contrôle IPMI.
Paramètre du script | Valeur |
---|---|
Scope | 'Action operation' |
Type | 'IPMI' |
Command | power off |