Macros de découverte de bas niveau

Vue d'ensemble

Il existe un type de macro utilisé dans la fonction découverte de bas niveau (LLD) :

{#MACRO} 

Il s'agit d'une macro utilisée dans une règle LLD qui renvoie les valeurs réelles du nom du système de fichiers, de l'interface réseau, de l'OID SNMP, etc.

Ces macros peuvent être utilisées pour créer des prototypes d'entités (prototypes d'élément, de déclencheur, de graphique, de règle LLD, d'hôte et de groupe d'hôtes). Lors de la découverte de systèmes de fichiers, d'interfaces réseau, de machines virtuelles, etc., ces macros sont remplacées par des valeurs réelles et constituent la base de la création d'entités réelles.

Certaines macros de découverte de bas niveau sont fournies « prêtes à l'emploi » avec la fonction LLD dans Zabbix - {#FSNAME}, {#FSTYPE}, {#IFNAME}, {#SNMPINDEX}, {#SNMPVALUE}. Cependant, il n'est pas obligatoire de respecter ces noms lors de la création d'une règle de découverte de bas niveau personnalisée. Vous pouvez alors utiliser n'importe quel autre nom de macro LLD et faire référence à ce nom.

Types de données pris en charge

Lors de la définition de règles de découverte personnalisées, les valeurs de propriété renvoyées dans les objets JSON pour les macros LLD doivent être de l’un des types primitifs suivants :

  • string
  • number
  • boolean

Les tableaux, les objets et les valeurs null ne sont pas pris en charge. Toute macro LLD faisant référence à une telle valeur ne sera pas développée et apparaîtra littéralement (par ex. '{#MY_MACRO}') lors du prétraitement et de la création des éléments.

Emplacements pris en charge

Les macros LLD peuvent être utilisées :

  • dans le filtre de la règle de découverte de bas niveau
  • dans les règles de découverte de bas niveau imbriquées, dans
    • les paramètres de prétraitement JSONPath
    • le champ JSONPath pour les macros LLD personnalisées
  • pour les prototypes d’éléments et les prototypes de découverte, dans
    • le nom
    • les paramètres de clé
    • l’unité
    • l’intervalle de mise à jour1
    • le délai d’expiration1
    • la période de conservation de l’historique1
    • la période de conservation des tendances1
    • les étapes de prétraitement de la valeur de l’élément
    • l’OID SNMP
    • le champ du capteur IPMI
    • l’expression de l’élément calculé/agrégé, dans :
      • les constantes d’expression et les paramètres de fonction
      • les paramètres de clé de l’élément
    • les conditions de filtre de l’élément agrégé (nom du groupe d’hôtes et nom de l’étiquette)
    • le script SSH et le script Telnet
    • la requête SQL de supervision de base de données
    • le champ du point de terminaison de l’élément JMX
    • la description
    • le champ URL de l’agent HTTP
    • le champ des champs de requête HTTP de l’agent HTTP
    • le champ du corps de la requête de l’agent HTTP
    • le champ des codes d’état requis de l’agent HTTP
    • la clé et la valeur des champs d’en-tête de l’agent HTTP
    • le champ du nom d’utilisateur de l’authentification HTTP de l’agent HTTP
    • le champ du mot de passe de l’authentification HTTP de l’agent HTTP
    • le champ du proxy HTTP de l’agent HTTP
    • le champ du fichier de certificat SSL de l’agent HTTP
    • le champ du fichier de clé SSL de l’agent HTTP
    • le champ du mot de passe de la clé SSL de l’agent HTTP
    • le champ Time shift de la requête de télémétrie
    • le champ Lookback limit de la requête de télémétrie
    • le champ Granularity de la requête de télémétrie
    • les étiquettes
  • pour les prototypes de déclencheurs, dans
    • le nom
    • les données opérationnelles
    • l’expression (uniquement dans les constantes et les paramètres de fonction)
    • l’URL
    • la description
    • les étiquettes
  • pour les prototypes de graphiques, dans
    • le nom
  • pour les prototypes d’hôtes, dans
    • le nom
    • le nom visible
    • les champs d’interface personnalisés : IP, DNS, port, communauté SNMPv1/SNMPv2, nombre maximal de répétitions SNMPv2/SNMPv3, tentatives SNMPv1/SNMPv2/SNMPv3, nom de contexte SNMPv3, nom de sécurité SNMPv3, phrase secrète d’authentification SNMPv3, phrase secrète de confidentialité SNMPv3
    • le nom du prototype de groupe d’hôtes
    • la valeur de l’étiquette de l’hôte
    • la valeur de la macro de l’hôte
    • (voir la liste complète)

Dans tous ces emplacements, à l’exception du filtre de la règle de découverte de bas niveau, les macros LLD peuvent être utilisées à l’intérieur d’un contexte de macro utilisateur statique.

Utilisation des fonctions de macro

Les fonctions de macro sont prises en charge avec les macros de découverte de bas niveau (à l'exception du filtre de la règle de découverte de bas niveau), ce qui permet d'extraire une partie donnée de la valeur de la macro à l'aide d'une expression régulière.

Par exemple, vous pouvez vouloir extraire le nom du client et le numéro de l'interface à partir de la macro LLD suivante à des fins d'étiquetage des événements :

{#IFALIAS}=customername_1

Pour ce faire, la fonction de macro regsub peut être utilisée avec la macro dans le champ de valeur de l'étiquette d'événement d'un prototype de déclencheur :

Notez que les virgules ne sont pas autorisées dans les paramètres de clé d'un élément non placé entre guillemets ; le paramètre contenant une fonction de macro doit donc être placé entre guillemets. Le caractère barre oblique inverse (\) doit être utilisé pour échapper les guillemets doubles à l'intérieur du paramètre. Exemple :

net.if.in["{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \1)}",bytes]

Pour plus d'informations sur la syntaxe des fonctions de macro, consultez : Fonctions de macro

Les fonctions de macro sont prises en charge dans les macros de découverte de bas niveau depuis Zabbix 4.0.

Prototypes d’élément sans paramètres de clé

Lorsque les paramètres de clé d’élément ne sont pas utilisés, placez la macro LLD à l’intérieur des crochets de paramètre de la clé d’élément [...] afin qu’elle soit traitée comme un paramètre et substituée lors de la découverte :

v_[{#MACRO}]
Notes de bas de page

1 Dans les champs marqués avec 1, une seule macro doit remplir l’intégralité du champ. Plusieurs macros dans un champ ou des macros mélangées avec du texte ne sont pas prises en charge.