2 Macros utilisateur

Vue d'ensemble

Les macros utilisateur sont prises en charge dans Zabbix pour offrir une plus grande flexibilité, en plus des macros prises en charge prêtes à l'emploi.

Les macros utilisateur peuvent être définies au niveau global, du modèle et de l'hôte. Ces macros ont une syntaxe spéciale :

{$MACRO}

Zabbix résout les macros selon l'ordre de priorité suivant :

  1. macros au niveau de l'hôte (vérifiées en premier)
  2. macros définies pour les modèles de premier niveau de l'hôte (c'est-à-dire les modèles liés directement à l'hôte), triées par ID de modèle
  3. macros définies pour les modèles de deuxième niveau de l'hôte, triées par ID de modèle
  4. macros définies pour les modèles de troisième niveau de l'hôte, triées par ID de modèle, etc.
  5. macros globales (vérifiées en dernier)

En d'autres termes, si une macro n'existe pas pour un hôte, Zabbix essaiera de la trouver dans les modèles de l'hôte en augmentant progressivement la profondeur. Si elle n'est toujours pas trouvée, une macro globale sera utilisée, si elle existe.

Si une macro portant le même nom existe sur plusieurs modèles liés du même niveau, la macro du modèle ayant l'ID le plus faible sera utilisée. Ainsi, avoir des macros portant le même nom dans plusieurs modèles constitue un risque de configuration.

Si Zabbix ne parvient pas à trouver une macro, celle-ci ne sera pas résolue.

Les macros (y compris les macros utilisateur) sont volontairement laissées non résolues dans la section Configuration (par exemple, dans la liste des déclencheurs) afin de rendre les configurations complexes plus transparentes.

Les macros utilisateur peuvent être utilisées dans :

  • nom de l'élément
  • paramètre de clé d'élément
  • intervalles de mise à jour de l'élément et intervalles flexibles
  • nom et description du déclencheur
  • paramètres et constantes d'expression du déclencheur (voir les exemples)
  • de nombreux autres emplacements - voir la liste complète
Cas d'utilisation courants des macros globales et hôtes
  • utiliser une macro globale à plusieurs endroits ; puis modifiez la valeur de la macro et appliquez les modifications de configuration à tous les emplacements en un seul clic
  • tirez parti de modèles avec des attributs spécifiques à l'hôte : mots de passe, numéros de port, noms de fichiers, expressions régulières, etc.

Il est recommandé d’utiliser des macros d’hôte plutôt que des macros globales, car l’ajout, la mise à jour ou la suppression de macros globales force une mise à jour incrémentielle de la configuration pour tous les hôtes. Pour plus d’informations, voir Passive and active agent checks.

Configuration

Pour définir des macros utilisateur, accédez à l’emplacement correspondant dans le frontend :

  • pour les macros globales, allez dans Administration → Macros
  • pour les macros au niveau de l’hôte et du modèle, ouvrez les propriétés de l’hôte ou du modèle et recherchez l’onglet Macros

Une macro utilisateur possède les attributs suivants :

Paramètre Description
Macro Nom de la macro. Le nom doit être entouré d’accolades et commencer par un signe dollar.
Exemple : {$FRONTEND_URL}. Les caractères suivants sont autorisés dans les noms de macro : A-Z (majuscules uniquement), 0-9, _, .
Value Valeur de la macro. Trois types de valeur sont pris en charge :
Text (par défaut) - valeur en texte brut
Secret text - la valeur est masquée par des astérisques
Vault secret - la valeur contient un chemin/une requête vers un vault secret.

Pour modifier le type de valeur, cliquez sur le bouton à la fin du champ de saisie de la valeur.

La longueur maximale d’une valeur de macro utilisateur est de 2048 caractères.
Description Champ de texte utilisé pour fournir plus d’informations sur cette macro.

Lors de la configuration des macros utilisateur, notez les comportements contextuels suivants :

  • si des macros utilisateur sont utilisées dans des éléments ou des déclencheurs de modèle, envisagez d’ajouter également ces macros au modèle (même si elles sont définies globalement) ; ainsi, les macros de type Text fonctionneront comme prévu après l’exportation du modèle au format XML et son importation dans un autre système (les valeurs des macros secrètes ne sont pas exportées)
  • si des macros utilisateur sont utilisées dans des expressions de déclencheur, ces macros ne seront résolues que si elles référencent un paramètre ou une constante ; elles ne seront PAS résolues si elles référencent un hôte, une clé d’élément, une fonction, un opérateur ou une autre expression de déclencheur (les macros secrètes ne peuvent pas être utilisées dans les expressions de déclencheur)
  • si des macros utilisateur sont utilisées sur un hôte disposant d’une règle de découverte de bas niveau avec des prototypes d’hôte, les hôtes découverts hériteront de toutes les macros utilisateur définies sur cet hôte

Exemples

Exemple 1

Utilisation d'une macro au niveau de l'hôte dans la clé d'élément "État du démon SSH" :

net.tcp.service[ssh,,{$SSH_PORT}]

Cet élément peut être attribué à plusieurs hôtes, à condition que la valeur de {$SSH_PORT} soit définie sur ces hôtes.

Exemple 2

Utilisation de la macro au niveau de l'hôte dans le déclencheur "La charge du processeur est trop élevée" :

last(/ca_001/system.cpu.load[,avg1])>{$MAX_CPULOAD}

Un tel déclencheur serait créé sur le modèle, et non modifié sur des hôtes individuels.

Si vous souhaitez utiliser la quantité de valeurs comme paramètre de fonction (pour exemple, max(/host/key,#3)), incluez le signe dièse dans la définition de la macro comme ceci : SOME_PERIOD => #3

Exemple 3

Utilisation de deux macros dans le déclencheur "La charge CPU est trop élevée" :

min(/ca_001/system.cpu.load[,avg1],{$CPULOAD_PERIOD})>{$MAX_CPULOAD}

Notez qu'une macro peut être utilisée comme paramètre de la fonction de déclenchement, dans cet exemple la fonction min().

Exemple 4

Synchronisez la condition d'indisponibilité de l'agent avec l'intervalle de mise à jour de l'élément :

  • définir la macro {$INTERVAL} et l'utiliser dans l'intervalle de mise à jour de l'élément ;
  • utilisez {$INTERVAL} comme paramètre du déclencheur d'indisponibilité de l'agent :

nodata(/ca_001/agent.ping,{$INTERVAL})=1

Exemple 5

Centraliser la configuration des heures de travail :

  • créer une macro globale {$WORKING_HOURS} égale à 1-5,09:00-18:00 ;
  • l’utiliser dans le champ Working time dans AdministrationGeneralGUI ;
  • l’utiliser dans le champ When active dans UsersUsers, onglet Media d’un utilisateur ;
  • l’utiliser pour configurer une interrogation des éléments plus fréquente pendant les heures de travail :

  • l’utiliser dans la condition d’action Time period ;
  • ajuster les heures de travail dans AdministrationMacros, si nécessaire.
Exemple 6

Utilisez la macro de prototype d'hôte pour configurer des éléments pour les hôtes découverts :

  • sur un prototype d'hôte, définissez la macro utilisateur {$SNMPVALUE} avec la macro {#SNMPVALUE} de découverte de bas niveau comme valeur :

  • attribuer le modèle Generic SNMPv2 au prototype hôte ;
  • utilisez {$SNMPVALUE} dans le champ SNMP OID des éléments de modèle Generic SNMPv2.

Contexte de la macro utilisateur

Voir macros utilisateur avec contexte.