[comment]: # translation:outdated

[comment]: # ({d30dc182-d30dc182})
# 2 Macros utilisateur

[comment]: # ({/d30dc182-d30dc182})

[comment]: # ({c282a934-3e220640})
#### 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](/manual/appendix/macros/supported_by_location) 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.

::: notewarning
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.

::: noteimportant
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](#examples))
-   de nombreux autres emplacements - voir la [liste complète](/manual/appendix/macros/supported_by_location_user)

[comment]: # ({/c282a934-3e220640})

[comment]: # ({e3755145-e3755145})
##### 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.

[comment]: # ({/e3755145-e3755145})

[comment]: # ({6b1da1a4-60e46db2})
::: notetip
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](/manual/appendix/items/activepassive#active-checks).
:::

[comment]: # ({/6b1da1a4-60e46db2})

[comment]: # ({808a388a-561314a3})
#### 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 :

![](../../../../assets/en/manual/config/macros/user_macros.png){width="600"}

|Paramètre|Description|
|--|--------|
|*Macro*|Nom de la macro. Le nom doit être entouré d’accolades et commencer par un signe dollar.<br>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 :<br>**Text** (par défaut) - valeur en texte brut<br>**[Secret text](/manual/config/macros/secret_macros#secret-text)** - la valeur est masquée par des astérisques<br> **[Vault secret](/manual/config/macros/secret_macros#vault-secret)** - la valeur contient un chemin/une requête vers un [vault secret](/manual/config/secrets). <br><br>Pour modifier le type de valeur, cliquez sur le bouton à la fin du champ de saisie de la valeur.<br><br>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](/manual/xml_export_import))
-   si des macros utilisateur sont utilisées dans des expressions de déclencheur, ces macros seront résolues uniquement 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 qui possède une règle de découverte de bas niveau avec des prototypes d’hôte, les [hôtes découverts](/manual/discovery/low_level_discovery/host_prototypes#discovered-hosts) hériteront de toutes les macros utilisateur définies sur cet hôte

[comment]: # ({/808a388a-561314a3})

[comment]: # ({4c860844-4c860844})
#### Exemples

[comment]: # ({/4c860844-4c860844})

[comment]: # ({b9cf8f56-b9cf8f56})
##### 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.

[comment]: # ({/b9cf8f56-b9cf8f56})

[comment]: # ({0fa7cf4a-0fa7cf4a})
##### 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.

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

[comment]: # ({/0fa7cf4a-0fa7cf4a})

[comment]: # ({36dc94ca-36dc94ca})
##### 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()**.

[comment]: # ({/36dc94ca-36dc94ca})

[comment]: # ({0dabfae5-0dabfae5})
##### 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`

[comment]: # ({/0dabfae5-0dabfae5})

[comment]: # ({2d346656-0f8052f1})
##### 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 *Administration* → *General* →
    *GUI* ;
-   l’utiliser dans le champ *When active* dans *Users* → *Users*, onglet *Media* d’un utilisateur ;
-   l’utiliser pour configurer une interrogation des éléments plus fréquente pendant les heures de travail :

![](../../../../assets/en/manual/config/macros/usermacro_example5.png)

-   l’utiliser dans la condition d’action *Time period* ;
-   ajuster les heures de travail dans *Administration* → *Macros*,
    si nécessaire.

[comment]: # ({/2d346656-0f8052f1})

[comment]: # ({3c2ac944-3c2ac944})
##### 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](/manual/config/macros/lld_macros) comme valeur :

![](../../../../assets/en/manual/config/macros/usermacro_example6.png)

- 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*.

[comment]: # ({/3c2ac944-3c2ac944})

[comment]: # ({44ca625a-44ca625a})
#### Contexte de la macro utilisateur

Voir [macros utilisateur avec contexte](/manual/config/macros/user_macros_context).

[comment]: # ({/44ca625a-44ca625a})
