5 Paramètres utilisateurs

Présentation

Vous pouvez parfois souhaiter exécuter une vérification par agent qui n'est pas prédéfinie dans Zabbix. C'est là que les paramètres utilisateur peuvent vous aider.

Vous pouvez écrire une commande qui récupère les données dont vous avez besoin et l'inclure dans le paramètre utilisateur du fichier de configuration de l'agent (paramètre de configuration UserParameter).

Un paramètre utilisateur possède la syntaxe suivante :

UserParameter=<key>,<command>

Comme vous pouvez le constater, un paramètre utilisateur contient également une clé. Cette clé sera nécessaire lors de la configuration d'un élément. Saisissez une clé de votre choix, facile à référencer (elle doit être unique au sein d'un hôte).

Redémarrez l'agent ou utilisez l'option de contrôle à l'exécution de l'agent pour prendre en compte le nouveau paramètre, par exemple :

zabbix_agentd -R userparameter_reload

Ensuite, lors de la configuration d'un élément, saisissez la clé pour référencer la commande du paramètre utilisateur que vous souhaitez exécuter.

Les paramètres utilisateur sont des commandes exécutées par l'agent Zabbix. Notez que jusqu'à 16 Mo de données peuvent être renvoyés avant les étapes de prétraitement de la valeur de l'élément.

Sur les systèmes UNIX, l'agent exécute les commandes des paramètres utilisateur à l'aide de /bin/sh, sous le compte du système d'exploitation qui exécute l'agent (généralement zabbix). Ce compte doit disposer des autorisations suffisantes pour exécuter la commande et accéder aux fichiers, sockets ou identifiants qu'elle utilise.

Les paramètres utilisateur sont soumis au délai d'expiration de la vérification par agent ; si ce délai est atteint, le processus du paramètre utilisateur créé par fork est arrêté.

Voir également :

Exemples de paramètres utilisateur simples

Exemple 1 : Valeur constante

UserParameter=ping,echo 1

Un élément avec la clé ping renvoie toujours 1.

Exemple 2 : Disponibilité du serveur MySQL

UserParameter=mysql.ping,mysqladmin ping 2>/dev/null | grep -c alive

Renvoie 1 si le serveur MySQL répond et 0 dans le cas contraire. La redirection 2>/dev/null ignore la sortie d'erreur standard de mysqladmin. Sans cette redirection, un message d'erreur pourrait être renvoyé avec 0, ce qui rendrait non pris en charge un élément dont le type d'information est Numérique (voir Résultat de la commande).
Cet exemple suppose que les identifiants de connexion MySQL sont configurés pour le compte du système d'exploitation qui exécute l'agent Zabbix, par exemple dans un fichier d'options MySQL accessible par ce compte.

Paramètres utilisateur flexibles

Les paramètres utilisateur flexibles acceptent des paramètres avec la clé. Ainsi, un paramètre utilisateur flexible peut servir de base à la création de plusieurs éléments.

Les paramètres utilisateur flexibles utilisent la syntaxe suivante :

UserParameter=key[*],command
Paramètre Description
Clé Clé d'élément unique. Le [*] indique que cette clé accepte des paramètres entre crochets.
Les paramètres sont indiqués lors de la configuration de l'élément.
Commande Commande à exécuter pour évaluer la valeur de la clé.
Pour les paramètres utilisateur flexibles uniquement :
Vous pouvez utiliser les références positionnelles $1…$9 dans la commande pour faire référence au paramètre correspondant dans la clé de l'élément.
Zabbix analyse les paramètres placés entre [ ] dans la clé de l'élément et remplace $1,...,$9 dans la commande en conséquence.
$0 est remplacé par la commande d'origine (avant l'expansion de $0,...,$9) à exécuter.
Les références positionnelles sont interprétées, qu'elles soient placées entre guillemets doubles (") ou simples (').
Pour utiliser les références positionnelles sans modification, indiquez un double signe dollar - par exemple, awk '{print $$2}'. Dans ce cas, $$2 devient effectivement $2 lors de l'exécution de la commande.

Les références positionnelles avec le signe $ sont recherchées et remplacées par l'agent Zabbix uniquement pour les paramètres utilisateur flexibles. Pour les paramètres utilisateur simples, ce traitement des références est ignoré et il n'est donc pas nécessaire de protéger les signes $.

Certains caractères ne sont pas autorisés par défaut dans les paramètres utilisateur. Pour obtenir la liste complète des caractères, consultez UnsafeUserParameters.

Exemples de paramètres utilisateur flexibles

Les exemples ci-dessous sont fournis à titre d'illustration uniquement et ne doivent pas être utilisés en production sans mesures de protection appropriées. Les paramètres utilisateur flexibles définis à l'aide de [*] acceptent des arguments qui peuvent présenter des risques d'injection de commandes s'ils ne sont pas traités de manière sécurisée.

Exemple 1 : Retourner un paramètre

UserParameter=ping[*],echo $1

Vous pouvez définir plusieurs éléments à l'aide de ce paramètre utilisateur, avec des clés au format ping[parameter] :

  • ping[0] - renvoie 0.
  • ping[hello] - renvoie hello.

Exemple 2 : disponibilité de MySQL sur un hôte spécifié

Ce paramètre peut être utilisé pour surveiller la disponibilité d'un serveur MySQL sur un hôte spécifié.

UserParameter=mysql.ping[*],mysqladmin -h "$1" ping 2>/dev/null | grep -c alive

L'élément avec la clé mysql.ping[db1.example.com] renvoie 1 si le serveur MySQL sur cet hôte répond, et 0 dans le cas contraire.
Cet exemple suppose que les identifiants de connexion MySQL sont configurés pour le compte du système d'exploitation exécutant l'agent Zabbix, par exemple dans un fichier d'options MySQL accessible à ce compte.

Exemple 3 : Compter les lignes correspondant à un motif

Ce paramètre peut être utilisé pour compter le nombre de lignes dans un fichier.

UserParameter=grep.count[*],grep -c "$2" "$1"

Renvoie le nombre de lignes du fichier spécifié par le premier argument qui correspondent à l'expression régulière spécifiée par le deuxième argument. Par exemple, grep.count[/etc/passwd,root] renvoie le nombre de lignes dans /etc/passwd qui correspondent à l'expression régulière root.

Résultat de la commande

La valeur de retour de la commande est la sortie standard ainsi que la sortie d'erreur standard produites par la commande.

Un élément qui renvoie du texte (caractère, journal ou type d'information texte) ne deviendra pas non pris en charge en cas de sortie d'erreur standard.

La valeur de retour est limitée à 16 Mo (y compris les espaces blancs de fin qui sont tronqués) ; les limites de la base de données s'appliquent également.

Les paramètres utilisateur qui renvoient du texte (caractère, journal ou type d'information texte) peuvent également renvoyer un espace blanc. En cas de résultat invalide, l'élément deviendra non pris en charge.