5 Makros für Low-Level-Discovery
Übersicht
Es gibt einen Makrotyp, der innerhalb der Funktion Low-Level-Discovery (LLD) verwendet wird:
{#MACRO}
Dabei handelt es sich um ein Makro, das in einer LLD-Regel verwendet wird und reale Werte des Dateisystemnamens, der Netzwerkschnittstelle, der SNMP-OID usw. zurückgibt.
Diese Makros können verwendet werden, um Entitätsprototypen (Datenpunkt-, Auslöser-, Graph-, LLD-Regel-, Host- und Hostgruppen-Prototypen) zu erstellen. Bei der Erkennung realer Dateisysteme, Netzwerkschnittstellen, virtueller Maschinen usw. werden diese Makros durch reale Werte ersetzt und bilden die Grundlage für die Erstellung realer Entitäten.
Einige Low-Level-Discovery-Makros werden in Zabbix zusammen mit der LLD-Funktion „mitgeliefert“ - {#FSNAME}, {#FSTYPE}, {#IFNAME}, {#SNMPINDEX}, {#SNMPVALUE}. Beim Erstellen einer benutzerdefinierten Low-Level-Discovery-Regel ist es jedoch nicht zwingend erforderlich, diese Namen zu verwenden. Dann können Sie jeden anderen LLD-Makronamen verwenden und auf diesen Namen verweisen.
Unterstützte Datentypen
Beim Definieren benutzerdefinierter Discovery-Regeln müssen Eigenschaftswerte, die in JSON-Objekten für LLD-Makros zurückgegeben werden, einer der folgenden primitiven Typen sein:
- string
- number
- boolean
Arrays, Objekte und null-Werte werden nicht unterstützt.
Jedes LLD-Makro, das auf einen solchen Wert verweist, bleibt unausgewertet und wird bei der Vorverarbeitung und Erstellung von Datenpunkten wörtlich angezeigt (z. B. '{#MY_MACRO}').
Unterstützte Orte
LLD-Makros können verwendet werden:
- im Filter der Low-Level-Discovery-Regel
- für Vorlagen für Datenpunkte und Discovery-Vorlagen in
- Name
- Schlüsselparameter
- Einheit
- Aktualisierungsintervall1
- Timeout1
- Aufbewahrungszeitraum für Historie1
- Aufbewahrungszeitraum für Trends1
- Vorverarbeitungsschritte des Datenpunktwerts
- SNMP-OID
- IPMI-Sensorfeld
- Ausdruck für berechnete/aggregierte Datenpunkte, in:
- Ausdruckskonstanten und Funktionsparametern
- Datenpunktschlüsselparametern
- Filterbedingungen für aggregierte Datenpunkte (Hostgruppenname und Tag-Name)
- SSH-Skript und Telnet-Skript
- SQL-Abfrage für die Datenbanküberwachung
- Endpunktfeld des JMX-Datenpunkts
- Beschreibung
- URL-Feld des HTTP-Agenten
- Feld für HTTP-Abfragefelder des HTTP-Agenten
- Feld für den Anforderungstext des HTTP-Agenten
- Feld für erforderliche Statuscodes des HTTP-Agenten
- Schlüssel und Wert des Felds für HTTP-Agenten-Header
- Feld für den Benutzernamen der HTTP-Authentifizierung des HTTP-Agenten
- Feld für das Passwort der HTTP-Authentifizierung des HTTP-Agenten
- Feld für den HTTP-Proxy des HTTP-Agenten
- Feld für die HTTP-SSL-Zertifikatsdatei des HTTP-Agenten
- Feld für die HTTP-SSL-Schlüsseldatei des HTTP-Agenten
- Feld für das Passwort des HTTP-SSL-Schlüssels des HTTP-Agenten
- Tags
- für Auslöservorlagen in
- Name
- Betriebsdaten
- Ausdruck (nur in Konstanten und Funktionsparametern)
- URL
- Beschreibung
- Tags
- für Diagrammvorlagen in
- Name
- für Hostvorlagen in
- Name
- sichtbarer Name
- benutzerdefinierte Schnittstellenfelder: IP, DNS, Port, SNMP-v1/v2-Community, SNMP-v3-Kontextname, SNMP-v3-Sicherheitsname, SNMP-v3-Authentifizierungsphrase, SNMP-v3-Privatsphäre-Phrase
- Name der Hostgruppen-Vorlage
- Wert des Host-Tags
- Wert des Host-Makros
- (siehe die vollständige Liste)
An all diesen Stellen, außer im Filter der Low-Level-Discovery-Regel, können LLD-Makros innerhalb eines statischen Benutzer-Makrokontexts verwendet werden.
Makrofunktionen verwenden
Makrofunktionen werden mit Makros der Low-Level-Discovery unterstützt (außer im Filter der Low-Level-Discovery-Regel). Dadurch kann ein bestimmter Teil des Makrowerts mithilfe eines regulären Ausdrucks extrahiert werden.
Beispielsweise möchten Sie möglicherweise den Kundennamen und die Schnittstellennummer aus dem folgenden LLD-Makro für die Ereigniskennzeichnung extrahieren:
{#IFALIAS}=customername_1
Dazu kann die Makrofunktion regsub mit dem Makro im Feld für den Wert der Ereigniskennzeichnung eines Auslöser-Prototyps verwendet werden:

Beachten Sie, dass in nicht in Anführungszeichen gesetzten Schlüsselparametern von Datenpunkten keine Kommas zulässig sind. Daher muss der Parameter, der eine Makrofunktion enthält, in Anführungszeichen gesetzt werden.
Das Zeichen für den umgekehrten Schrägstrich (\) sollte verwendet werden, um doppelte Anführungszeichen innerhalb des Parameters zu maskieren.
Beispiel:
net.if.in["{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \1)}",bytes]
Weitere Informationen zur Syntax von Makrofunktionen finden Sie unter: Makrofunktionen
Makrofunktionen werden seit Zabbix 4.0 in Makros der Low-Level-Discovery unterstützt.
Datenpunkt-Prototypen ohne Schlüsselparameter
Wenn keine Schlüsselparameter für den Datenpunkt-Schlüssel verwendet werden, platzieren Sie das LLD-Makro innerhalb der Parameterklammern des Datenpunkt-Schlüssels [...], damit es als Parameter behandelt und während der Erkennung ersetzt wird:
v_[{#MACRO}]
Fußnoten
1 In den mit 1 markierten Feldern muss ein einzelnes Makro das gesamte Feld ausfüllen. Mehrere Makros in einem Feld oder mit Text gemischte Makros werden nicht unterstützt.