Macros utilisateur

Présentation générale

Les macros utilisateur sont prises en charge dans Zabbix pour offrir davantage de flexibilité, en plus des macros prises en charge par défaut.

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

{$MACRO}

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

  1. Macros définies 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 dans plusieurs modèles liés du même niveau, la macro du modèle ayant l'ID le plus bas sera utilisée. La présence de macros portant le même nom dans plusieurs modèles constitue donc 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) restent 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 :

  • le nom de l'élément
  • le paramètre de clé de l'élément
  • les intervalles de mise à jour et les intervalles flexibles de l'élément
  • le nom et la description du déclencheur
  • les paramètres et constantes de l'expression du déclencheur (voir les exemples)
  • de nombreux autres emplacements - consultez 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 impose une mise à jour incrémentielle de la configuration pour tous les hôtes. Pour plus d'informations, consultez Passive and active agent checks.

Configuration

Pour définir des macros utilisateur, accédez à l'emplacement correspondant dans l'interface:

  • 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:

Parameter 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/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 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); de cette façon, 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 font référence à un paramètre ou à une constante; elles ne seront PAS résolues si elles font référence à 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 qui possède 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é de l’é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 d'une macro au niveau du 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 chaque hôte.

Si vous souhaitez utiliser le nombre de valeurs comme paramètre de la fonction (par exemple, max(/host/key,#3)), incluez le symbole dièse dans la définition de la macro comme suit : 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 d’une fonction de déclencheur, dans cet exemple la fonction min().

Exemple 4

Synchroniser 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 ;
  • utiliser {$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 Heures de travail de Administration > Général > Interface ;
  • l'utiliser dans le champ Quand actif de l'onglet Média d'un utilisateur, dans Utilisateurs > Utilisateurs ;
  • l'utiliser pour configurer une collecte plus fréquente des éléments pendant les heures de travail :

  • l'utiliser dans la condition d'action Période de temps ;
  • ajuster les heures de travail dans Administration > Macros, si nécessaire.
Exemple 6

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

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

  1. Assignez le modèle Generic SNMPv2 au prototype de hôte.
  2. Utilisez {$SNMPVALUE} dans le champ OID SNMP des éléments du modèle Generic SNMPv2.

Contexte des macros utilisateur

Voir macros utilisateur avec contexte.