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

2 Macros utilisateur

Aperçu

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

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

{$MACRO}

Zabbix résout les macros selon la priorité suivante :

  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 d'hôte de profondeur croissante. Si elle n'est toujours pas trouvée, une macro globale sera utilisée, si elle existe.

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

Si Zabbix ne parvient pas à trouver une macro, la macro ne sera pas résolue.

Les macros (y compris les macros utilisateur) sont laissées non résolues dans la section Configuration (par exemple, dans la liste des déclencheurs) par conception pour rendre la configuration complexe plus transparente.

Les macros utilisateur peuvent être utilisées dans :

  • le paramètre clé de l'élément
  • les intervalles de mise à jour des éléments et intervalles flexibles
  • les nom et description du déclencheur
  • les paramètres d'expression de déclenchement et constantes (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.

It is advisable to use host macros instead of global macros because adding, updating or deleting global macros forces incremental configuration update for all hosts. For more information, see Upgrade notes for 6.4.0.

Configuration

Pour définir des macros utilisateur, rendez-vous à l'emplacement correspondant dans l'interface :

  • pour les macros globales, visitez Administration → Général → 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

Si une macro utilisateur est utilisée dans des éléments ou des déclencheurs dans un modèle, il est suggéré d'ajouter cette macro au modèle même si elle est définie au niveau global. Ainsi, si le type de macro est texte, l'exportation du modèle vers XML et son importation dans un autre système lui permettront toujours de fonctionner comme prévu. Les valeurs des macros secrètes ne sont pas exportées.

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 , _ , .
Valeur Valeur de la macro. Trois types de valeurs sont pris en charge :
Texte (par défaut) - valeur en texte brut
Texte secret - la valeur est masquée par des astérisques, ce qui peut être utile pour protéger des informations sensibles telles que les mots de passe ou des clés partagées.
Secret du coffre-fort - la valeur contient un chemin de référence (comme 'path:key', par exemple "secret/zabbix:password") vers un Secret du coffre-fort

Notez que même si la valeur d'une macro secrète est cachée, la valeur peut être révélée par l'utilisation dans les objets. Par exemple, dans un script externe, une instruction 'echo' faisant référence à une macro secrète peut être utilisée pour révéler la valeur de la macro à l'interface car le serveur Zabbix a accès à la valeur réelle de la macro.

Pour sélectionner le type de valeur, cliquez sur sur le bouton à la fin du champ de saisie de valeur :
l'icône indique une macro de texte ;
l'icône indique une macro de texte secrète. Au survol, le champ valeur se transforme en bouton , qui permet de saisir une nouvelle valeur de la macro (pour sortir sans enregistrer une nouvelle valeur, cliquer sur la flèche vers l'arrière ().
l'icône indique une macro Secret du coffre-fort.

La longueur maximale d'une valeur de macro utilisateur est de 2 048 caractères (255 caractères dans les versions antérieures à 5.2.0).
Description Champ de texte utilisé pour fournir plus d'informations sur cette macro.

Les URL qui contiennent une macro secrète ne fonctionneront pas car la macro qu'elles contiennent sera résolue comme "******".

Dans les expressions de déclencheur, les macros utilisateur seront résolues si elles font référence à un paramètre ou à une constante. Ils ne seront PAS résolus s'ils 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.

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

Centralisez la configuration des heures de travail :

  • créer une macro globale {$WORKING_HOURS} égale à 1-5,09:00-18:00 ;
  • utilisez-le dans le champ Temps de travail dans AdministrationGénéralGUI ;
  • utilisez-le dans le champ Lorsque actif dans AdministrationUtilisateurMédias ;
  • utilisez-le pour configurer une interrogation plus fréquente des éléments pendant les heures de travail :

  • l'utiliser dans la condition d'action Période ;
  • ajuster le temps de travail dans AdministrationGénéralMacros, 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.