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 Stellen
LLD-Makros können verwendet werden:
- im Filter der Low-Level-Discovery-Regel
- in verschachtelten Low-Level-Discovery-Regeln, in
- JSONPath-Preprocessing-Parametern
- dem JSONPath-Feld für benutzerdefinierte LLD-Makros
- für Datenpunkt-Prototypen und Discovery-Prototypen in
- Name
- Schlüsselparametern
- Einheit
- Aktualisierungsintervall1
- Timeout1
- Aufbewahrungszeitraum für den Verlauf1
- Aufbewahrungszeitraum für Trends1
- Preprocessing-Schritten für Datenpunktwerte
- SNMP-OID
- IPMI-Sensorfeld
- Ausdruck für berechnete/aggregierte Datenpunkte, in:
- Ausdruckskonstanten und Funktionsparametern
- Datenpunktschlüsselparametern
- Filterbedingungen für aggregierte Datenpunkte (Hostgruppename 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 Request-Body des HTTP-Agenten
- Feld für erforderliche Statuscodes des HTTP-Agenten
- Schlüssel und Wert im Header-Feld des HTTP-Agenten
- Feld für den HTTP-Authentifizierungs-Benutzernamen des HTTP-Agenten
- Feld für das HTTP-Authentifizierungs-Passwort 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 HTTP-SSL-Schlüsselpasswort des HTTP-Agenten
- Tags
- für Auslöser-Prototypen in
- Name
- Betriebsdaten
- Ausdruck (nur in Konstanten und Funktionsparametern)
- URL
- Beschreibung
- Tags
- für Graph-Prototypen in
- Name
- für Host-Prototypen in
- Name
- sichtbarem Namen
- benutzerdefinierten Schnittstellenfeldern: IP, DNS, Port, SNMP-v1/v2-Community, SNMP-v3-Kontextname, SNMP-v3-Sicherheitsname, SNMP-v3-Authentifizierungs-Passphrase, SNMP-v3-Privacy-Passphrase
- Namen der Hostgruppen-Prototypen
- Wert des Host-Tags
- Wert des Host-Makros
- (siehe die vollständige Liste)
An all diesen Stellen, mit Ausnahme des Filters der Low-Level-Discovery-Regel, können LLD-Makros innerhalb eines statischen Benutzer-Makrokontexts verwendet werden.
Verwendung von Makrofunktionen
Makrofunktionen werden mit Low-Level-Discovery-Makros unterstützt (außer im Filter der Low-Level-Discovery-Regel) und ermöglichen es, mithilfe eines regulären Ausdrucks einen bestimmten Teil des Makrowerts zu extrahieren.
Beispielsweise möchten Sie möglicherweise für die Ereignis-Tagging-Zwecke den Kundennamen und die Schnittstellennummer aus dem folgenden LLD-Makro extrahieren:
{#IFALIAS}=customername_1
Dazu kann die Makrofunktion regsub zusammen mit dem Makro im Feld für den Ereignis-Tag-Wert eines Auslöserprototyps verwendet werden:

Beachten Sie, dass Kommas in nicht in Anführungszeichen gesetzten Datenpunkt-Schlüsselparametern nicht zulässig sind; daher muss der Parameter, der eine Makrofunktion enthält, in Anführungszeichen gesetzt werden.
Das Backslash-Zeichen (\) 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 in Low-Level-Discovery-Makros seit Zabbix 4.0 unterstützt.
Datenpunkt-Prototypen ohne Schlüsselparameter
Wenn keine Datenpunktschlüsselparameter verwendet werden, platzieren Sie das LLD-Makro innerhalb der Parameterklammern [...] des Datenpunktschlüssels, damit es als Parameter behandelt und während der Discovery 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.