3 Low-level-Discovery

Überblick

Low-Level-Discovery (LLD) bietet eine Möglichkeit, Datenpunkte, Auslöser und Diagramme für verschiedene Entitäten auf einem Host automatisch zu erstellen. Beispielsweise kann Zabbix automatisch mit der Überwachung von Dateisystemen oder Netzwerkschnittstellen auf Ihrem Rechner beginnen, ohne dass Datenpunkte für jedes Dateisystem oder jede Netzwerkschnittstelle manuell erstellt werden müssen. LLD kann auch Hosts erstellen, zum Beispiel um auf einem Hypervisor erkannte virtuelle Maschinen zu befüllen, sowie verschachtelte Discovery-Regeln ermöglichen, wodurch eine mehrstufige Discovery möglich wird. Zusätzlich kann Zabbix so konfiguriert werden, dass nicht mehr benötigte Entitäten automatisch anhand der tatsächlichen Ergebnisse regelmäßig durchgeführter Discovery entfernt werden.

Ein Benutzer kann eigene Discovery-Typen definieren, sofern sie einem bestimmten JSON-Protokoll folgen.

Die allgemeine Architektur des Discovery-Prozesses ist wie folgt.

Zunächst erstellt ein Benutzer eine Discovery-Regel unter Datensammlung > Vorlagen in der Spalte Discovery. Eine Discovery-Regel besteht aus (1) einem Datenpunkt, der die erforderlichen Entitäten erkennt (zum Beispiel Dateisysteme oder Netzwerkschnittstellen), und (2) Prototypen von Datenpunkten, Auslösern und Diagrammen, die basierend auf dem Wert dieses Datenpunkts erstellt werden sollen.

Ein Datenpunkt, der die erforderlichen Entitäten erkennt, ist wie ein regulärer Datenpunkt, wie er auch an anderer Stelle vorkommt: Der Server fragt einen Zabbix Agent (oder was auch immer als Typ des Datenpunkts eingestellt ist) nach einem Wert dieses Datenpunkts, der Agent antwortet mit einem Textwert. Der Unterschied besteht darin, dass der vom Agent zurückgegebene Wert eine Liste erkannter Entitäten im JSON-Format enthalten muss. Während die Details dieses Formats nur für Implementierer benutzerdefinierter Discovery-Prüfungen wichtig sind, ist es notwendig zu wissen, dass der zurückgegebene Wert eine Liste von Makro→Wert-Paaren enthält. Zum Beispiel könnte der Datenpunkt "net.if.discovery" zwei Paare zurückgeben: "{#IFNAME}" → "lo" und "{#IFNAME}" → "eth0".

Diese Makros werden in Namen, Schlüsseln und anderen Prototypfeldern verwendet, wo sie dann durch die empfangenen Werte ersetzt werden, um für jede erkannte Entität reale Datenpunkte, Auslöser, Diagramme oder sogar Hosts zu erstellen. Siehe die vollständige Liste der Optionen zur Verwendung von LLD-Makros.

Wenn der Server einen Wert für einen Discovery-Datenpunkt empfängt, betrachtet er die Makro→Wert-Paare und erzeugt für jedes Paar auf Basis der Prototypen reale Datenpunkte, Auslöser und Diagramme. Im obigen Beispiel mit "net.if.discovery" würde der Server einen Satz von Datenpunkten, Auslösern und Diagrammen für die Loopback-Schnittstelle "lo" und einen weiteren Satz für die Schnittstelle "eth0" erzeugen.

Beachten Sie, dass sich seit Zabbix 4.2 das Format des von Low-Level-Discovery-Regeln zurückgegebenen JSON geändert hat. Es wird nicht mehr erwartet, dass das JSON das Objekt "data" enthält. Low-Level-Discovery akzeptiert nun ein normales JSON, das ein Array enthält, um neue Funktionen wie die Vorverarbeitung von Datenpunktwerten und benutzerdefinierte Pfade zu Low-Level-Discovery-Makrowerten in einem JSON-Dokument zu unterstützen.

Integrierte Discovery-Schlüssel wurden aktualisiert, sodass sie ein Array von LLD-Zeilen an der Wurzel des JSON-Dokuments zurückgeben. Zabbix extrahiert automatisch ein Makro und einen Wert, wenn ein Array-Feld die Syntax {#MACRO} als Schlüssel verwendet. Alle neuen nativen Discovery-Prüfungen verwenden die neue Syntax ohne die Elemente "data". Bei der Verarbeitung eines Low-Level-Discovery-Werts wird zuerst die Wurzel ermittelt (Array bei $. oder $.data).

Während das Element "data" aus allen nativen, mit Discovery verbundenen Datenpunkten entfernt wurde, akzeptiert Zabbix aus Gründen der Abwärtskompatibilität weiterhin die JSON-Notation mit einem "data"-Element, auch wenn von ihrer Verwendung abgeraten wird. Wenn das JSON ein Objekt mit nur einem Array-Element "data" enthält, wird der Inhalt des Elements automatisch mit JSONPath $.data extrahiert. Low-Level-Discovery akzeptiert jetzt optionale benutzerdefinierte LLD-Makros mit einem benutzerdefinierten Pfad, der in JSONPath-Syntax angegeben ist.

Als Ergebnis der oben genannten Änderungen können neuere Agents nicht mehr mit einem älteren Zabbix Server zusammenarbeiten.

Siehe auch: Erkannte Entitäten

Konfiguration der Low-Level-Discovery

Wir veranschaulichen die Low-Level-Discovery anhand eines Beispiels zur Dateisystemerkennung.

Gehen Sie wie folgt vor, um die Discovery zu konfigurieren:

  • Gehen Sie zu: Datenerfassung > Vorlagen oder Hosts.
  • Klicken Sie in der Zeile einer geeigneten Vorlage/eines geeigneten Hosts auf Discovery.

  • Klicken Sie oben rechts auf dem Bildschirm auf Discovery-Regel erstellen.
  • Füllen Sie das Formular der Discovery-Regel mit den erforderlichen Angaben aus.

Discovery-Regel

Das Formular der Discovery-Regel enthält fünf Registerkarten, die von links nach rechts den Datenfluss während der Discovery darstellen:

  • Discovery-Regel - gibt vor allem den integrierten Datenpunkt oder ein benutzerdefiniertes Skript an, um Discovery-Daten abzurufen.
  • Vorverarbeitung - wendet eine Vorverarbeitung auf die ermittelten Daten an.
  • LLD-Makros - ermöglicht das Extrahieren einiger Makrowerte zur Verwendung in ermittelten Datenpunkten, Auslösern usw.
  • Filter - ermöglicht das Filtern der ermittelten Werte.
  • Überschreibungen - ermöglicht das Ändern von Datenpunkten, Auslösern, Diagrammen oder Host-Prototypen bei der Anwendung auf bestimmte ermittelte Objekte.

Die Registerkarte Discovery-Regel enthält den für die Discovery zu verwendenden Datenpunktschlüssel (sowie einige allgemeine Attribute der Discovery-Regel):

Alle erforderlichen Eingabefelder sind mit einem roten Sternchen markiert.

Parameter Beschreibung
Name Name der Discovery-Regel.
Type Der Typ der Prüfung, mit der die Discovery durchgeführt wird.
In diesem Beispiel verwenden wir den Datenpunkttyp Zabbix Agent.
Die Discovery-Regel kann auch ein abhängiger Datenpunkt sein, der von einem regulären Datenpunkt abhängt. Sie kann nicht von einer anderen Discovery-Regel abhängen. Wählen Sie für einen abhängigen Datenpunkt den entsprechenden Typ (Dependent item) aus und geben Sie den Master-Datenpunkt im Feld „Master item“ an. Der Master-Datenpunkt muss vorhanden sein.
Key Geben Sie den Schlüssel des Discovery-Datenpunkts ein (bis zu 2048 Zeichen).
Sie können zum Beispiel den integrierten Datenpunktschlüssel „vfs.fs.discovery“ verwenden, um eine JSON-Zeichenfolge mit der Liste der auf dem Computer vorhandenen Dateisysteme, ihren Typen und Einhängeoptionen zurückzugeben.
Beachten Sie, dass eine weitere Möglichkeit zur Dateisystem-Discovery darin besteht, Discovery-Ergebnisse über den Agent-Schlüssel „vfs.fs.get“ zu verwenden (siehe Beispiel).
Update interval Dieses Feld gibt an, wie oft Zabbix die Discovery durchführt. Zu Beginn, wenn Sie die Dateisystem-Discovery gerade einrichten, möchten Sie möglicherweise ein kleines Intervall festlegen. Sobald Sie jedoch wissen, dass sie funktioniert, können Sie es auf 30 Minuten oder mehr setzen, da sich Dateisysteme normalerweise nicht sehr häufig ändern.
Zeitsuffixe werden unterstützt, z. B. 30s, 1m, 2h, 1d.
Benutzermakros werden unterstützt.
Hinweis: Das Aktualisierungsintervall kann nur dann auf „0“ gesetzt werden, wenn benutzerdefinierte Intervalle mit einem Wert ungleich null vorhanden sind. Wenn es auf „0“ gesetzt ist und ein benutzerdefiniertes Intervall (flexibel oder geplant) mit einem Wert ungleich null vorhanden ist, wird der Datenpunkt während der Dauer des benutzerdefinierten Intervalls abgefragt.
Neue Discovery-Regeln werden innerhalb von 60 Sekunden nach ihrer Erstellung geprüft, es sei denn, sie haben Scheduling oder Flexible update interval und das Update interval ist auf 0 gesetzt.
Beachten Sie, dass bei einer vorhandenen Discovery-Regel die Discovery sofort durchgeführt werden kann, indem die Schaltfläche Execute now gedrückt wird.
Custom intervals Sie können benutzerdefinierte Regeln für die Prüfung des Datenpunkts erstellen:
Flexible - erstellt eine Ausnahme zum Update interval (Intervall mit anderer Häufigkeit)
Scheduling - erstellt einen benutzerdefinierten Abfragezeitplan.
Detaillierte Informationen finden Sie unter Benutzerdefinierte Intervalle.
Timeout Legen Sie das Timeout für die Discovery-Prüfung fest. Wählen Sie die Timeout-Option:
Global - es wird das Proxy-/globale Timeout verwendet (angezeigt im ausgegrauten Feld Timeout);
Override - es wird ein benutzerdefiniertes Timeout verwendet (im Feld Timeout festgelegt; zulässiger Bereich: 1 - 600s). Zeitsuffixe, z. B. 30s, 1m, sowie Benutzermakros werden unterstützt.
Durch Klicken auf den Link Timeouts können Sie Proxy-Timeouts oder globale Timeouts konfigurieren (wenn kein Proxy verwendet wird). Beachten Sie, dass der Link Timeouts nur für Benutzer des Typs Super admin sichtbar ist, die Berechtigungen für die Frontend-Bereiche Administration > General oder Administration > Proxies haben.
Delete lost resources Geben Sie an, wie schnell die ermittelte Entität gelöscht wird, sobald ihr Discovery-Status zu „Not discovered anymore“ wird:
Never - sie wird nicht gelöscht;
Immediately - sie wird sofort gelöscht;
After - sie wird nach dem angegebenen Zeitraum gelöscht. Der Wert muss größer sein als der Wert von Disable lost resources.
Zeitsuffixe werden unterstützt, z. B. 2h, 1d.
Benutzermakros werden unterstützt.
Hinweis: Die Verwendung von „Immediately“ wird nicht empfohlen, da bereits eine fehlerhafte Bearbeitung des Filters dazu führen kann, dass die Entität zusammen mit allen Verlaufsdaten gelöscht wird.
Beachten Sie, dass manuell deaktivierte Ressourcen nicht durch Low-Level-Discovery gelöscht werden.
Disable lost resources Geben Sie an, wie schnell die ermittelte Entität deaktiviert wird, sobald ihr Discovery-Status zu „Not discovered anymore“ wird:
Never - sie wird nicht deaktiviert;
Immediately - sie wird sofort deaktiviert;
After - sie wird nach dem angegebenen Zeitraum deaktiviert. Der Wert sollte größer sein als das Aktualisierungsintervall der Discovery-Regel.
Beachten Sie, dass automatisch deaktivierte Ressourcen wieder aktiviert werden, wenn sie durch Low-Level-Discovery erneut ermittelt werden. Manuell deaktivierte Ressourcen werden bei erneuter Ermittlung nicht wieder aktiviert.
Dieses Feld wird nicht angezeigt, wenn Delete lost resources auf „Immediately“ gesetzt ist.
Zeitsuffixe werden unterstützt, z. B. 2h, 1d.
Benutzermakros werden unterstützt.
Description Geben Sie eine Beschreibung ein.
Enabled Wenn diese Option aktiviert ist, wird die Regel verarbeitet.

Der Verlauf der Discovery-Regel wird nicht beibehalten.

Vorverarbeitung

Die Registerkarte Vorverarbeitung ermöglicht es, Transformationsregeln zu definieren, die auf das Ergebnis der Discovery angewendet werden. In diesem Schritt sind eine oder mehrere Transformationen möglich. Transformationen werden in der Reihenfolge ausgeführt, in der sie definiert sind. Die gesamte Vorverarbeitung wird vom Zabbix Server durchgeführt.

Siehe auch:

Typ
Transformation Beschreibung
Text
Regulärer Ausdruck Vergleichen Sie den empfangenen Wert mit dem regulären Ausdruck <pattern> und ersetzen Sie den Wert durch das extrahierte <output>. Der reguläre Ausdruck unterstützt die Extraktion von maximal 10 erfassten Gruppen mit der Sequenz \N.
Parameter:
pattern - regulärer Ausdruck
output - Ausgabevorlage für die Formatierung. Eine Escape-Sequenz \N (wobei N=1…9) wird durch die N-te gefundene Gruppe ersetzt. Eine Escape-Sequenz \0 wird durch den gefundenen Text ersetzt.
Wenn Sie das Kontrollkästchen Benutzerdefiniert bei Fehler aktivieren, können benutzerdefinierte Optionen zur Fehlerbehandlung angegeben werden: entweder den Wert verwerfen, einen angegebenen Wert setzen oder eine angegebene Fehlermeldung setzen.
Ersetzen Suchen Sie die Suchzeichenfolge und ersetzen Sie sie durch eine andere (oder nichts). Alle Vorkommen der Suchzeichenfolge werden ersetzt.
Parameter:
search string - die zu suchende und zu ersetzende Zeichenfolge, Groß-/Kleinschreibung wird beachtet (erforderlich)
replacement - die Zeichenfolge, durch die die Suchzeichenfolge ersetzt wird. Die Ersetzungszeichenfolge kann auch leer sein, wodurch die Suchzeichenfolge beim Auffinden effektiv gelöscht wird.
Es ist möglich, Escape-Sequenzen zu verwenden, um nach Zeilenumbrüchen, Wagenrücklauf, Tabulatoren und Leerzeichen zu suchen oder diese zu ersetzen: "\n \r \t \s"; der Backslash kann als "\\" maskiert werden und Escape-Sequenzen können als "\\n" maskiert werden. Das Escaping von Zeilenumbrüchen, Wagenrücklauf und Tabulatoren erfolgt bei der Low-Level-Discovery automatisch.
Strukturierte Daten
JSONPath Extrahieren Sie einen Wert oder ein Fragment aus JSON-Daten mithilfe der JSONPath-Funktionalität.
Wenn Sie das Kontrollkästchen Benutzerdefiniert bei Fehler aktivieren, können benutzerdefinierte Optionen zur Fehlerbehandlung angegeben werden: entweder den Wert verwerfen, einen angegebenen Wert setzen oder eine angegebene Fehlermeldung setzen.
XML XPath Extrahieren Sie einen Wert oder ein Fragment aus XML-Daten mithilfe der XPath-Funktionalität.
Damit diese Option funktioniert, muss der Zabbix Server mit libxml-Unterstützung kompiliert sein.
Beispiele:
number(/document/item/value) extrahiert 10 aus <document><item><value>10</value></item></document>
number(/document/item/@attribute) extrahiert 10 aus <document><item attribute="10"></item></document>
/document/item extrahiert <item><value>10</value></item> aus <document><item><value>10</value></item></document>
Beachten Sie, dass Namespaces nicht unterstützt werden.
Wenn Sie das Kontrollkästchen Benutzerdefiniert bei Fehler aktivieren, können benutzerdefinierte Optionen zur Fehlerbehandlung angegeben werden: entweder den Wert verwerfen, einen angegebenen Wert setzen oder eine angegebene Fehlermeldung setzen.
CSV zu JSON Konvertieren Sie CSV-Dateidaten in das JSON-Format.
Weitere Informationen finden Sie unter: CSV-zu-JSON-Vorverarbeitung.
XML zu JSON Konvertieren Sie Daten im XML-Format in JSON.
Weitere Informationen finden Sie unter: Serialisierungsregeln.
Wenn Sie das Kontrollkästchen Benutzerdefiniert bei Fehler aktivieren, können benutzerdefinierte Optionen zur Fehlerbehandlung angegeben werden: entweder den Wert verwerfen, einen angegebenen Wert setzen oder eine angegebene Fehlermeldung setzen.
SNMP
SNMP-Walk-Wert Extrahieren Sie einen Wert anhand des angegebenen OID-/MIB-Namens und wenden Sie Formatierungsoptionen an:
Unverändert - Hex-STRING als nicht maskierte Hex-Zeichenfolge zurückgeben (beachten Sie, dass Anzeigehinweise weiterhin angewendet werden);
UTF-8 aus Hex-STRING - Hex-STRING in eine UTF-8-Zeichenfolge konvertieren;
MAC aus Hex-STRING - Hex-STRING in eine MAC-Adresszeichenfolge konvertieren (wobei ' ' durch ':' ersetzt wird);
Integer aus BITS - die ersten 8 Bytes einer Bitzeichenfolge, ausgedrückt als Folge von Hex-Zeichen (z. B. "1A 2B 3C 4D"), in einen vorzeichenlosen 64-Bit-Integer konvertieren. Bei Bitzeichenfolgen, die länger als 8 Bytes sind, werden nachfolgende Bytes ignoriert.
Wenn Sie das Kontrollkästchen Benutzerdefiniert bei Fehler aktivieren, können benutzerdefinierte Optionen zur Fehlerbehandlung angegeben werden: entweder den Wert verwerfen, einen angegebenen Wert setzen oder eine angegebene Fehlermeldung setzen.
SNMP-Walk zu JSON Konvertieren Sie SNMP-Werte in JSON. Geben Sie einen Feldnamen im JSON und den entsprechenden SNMP-OID-Pfad an. Feldwerte werden mit Werten aus dem angegebenen SNMP-OID-Pfad befüllt.
Sie können diesen Vorverarbeitungsschritt für die SNMP-OID-Discovery verwenden.
Ähnliche Wertformatierungsoptionen wie im Schritt SNMP-Walk-Wert sind verfügbar.
Wenn Sie das Kontrollkästchen Benutzerdefiniert bei Fehler aktivieren, können benutzerdefinierte Optionen zur Fehlerbehandlung angegeben werden: entweder den Wert verwerfen, einen angegebenen Wert setzen oder eine angegebene Fehlermeldung setzen.
SNMP-Get-Wert Wenden Sie Formatierungsoptionen auf den SNMP-Get-Wert an:
UTF-8 aus Hex-STRING - Hex-STRING in eine UTF-8-Zeichenfolge konvertieren;
MAC aus Hex-STRING - Hex-STRING in eine MAC-Adresszeichenfolge konvertieren (wobei ' ' durch ':' ersetzt wird);
Integer aus BITS - die ersten 8 Bytes einer Bitzeichenfolge, ausgedrückt als Folge von Hex-Zeichen (z. B. "1A 2B 3C 4D"), in einen vorzeichenlosen 64-Bit-Integer konvertieren. Bei Bitzeichenfolgen, die länger als 8 Bytes sind, werden nachfolgende Bytes ignoriert.
Wenn Sie das Kontrollkästchen Benutzerdefiniert bei Fehler aktivieren, können benutzerdefinierte Optionen zur Fehlerbehandlung angegeben werden: entweder den Wert verwerfen, einen angegebenen Wert setzen oder eine angegebene Fehlermeldung setzen.
Benutzerdefinierte Skripte
JavaScript Geben Sie JavaScript-Code im modalen Editor ein, der geöffnet wird, wenn Sie in das Parameterfeld oder auf das Stiftsymbol daneben klicken.
Beachten Sie, dass die verfügbare JavaScript-Länge von der verwendeten Datenbank abhängt.
Weitere Informationen finden Sie unter: JavaScript-Vorverarbeitung
Validierung
Entspricht nicht dem regulären Ausdruck Geben Sie einen regulären Ausdruck an, dem ein Wert nicht entsprechen darf.
Z. B. Error:(.*?)\.
Wenn Sie das Kontrollkästchen Benutzerdefiniert bei Fehler aktivieren, können benutzerdefinierte Optionen zur Fehlerbehandlung angegeben werden: entweder den Wert verwerfen, einen angegebenen Wert setzen oder eine angegebene Fehlermeldung setzen.
Auf Fehler in JSON prüfen Prüfen Sie auf eine Fehlermeldung auf Anwendungsebene, die sich an JSONPath befindet. Beenden Sie die Verarbeitung bei Erfolg und wenn die Meldung nicht leer ist; andernfalls setzen Sie die Verarbeitung mit dem Wert fort, der vor diesem Vorverarbeitungsschritt vorhanden war. Beachten Sie, dass diese Fehler externer Dienste dem Benutzer unverändert gemeldet werden, ohne Informationen zum Vorverarbeitungsschritt hinzuzufügen.
Z. B. $.errors. Wenn ein JSON wie {"errors":"e1"} empfangen wird, wird der nächste Vorverarbeitungsschritt nicht ausgeführt.
Wenn Sie das Kontrollkästchen Benutzerdefiniert bei Fehler aktivieren, können benutzerdefinierte Optionen zur Fehlerbehandlung angegeben werden: entweder den Wert verwerfen, einen angegebenen Wert setzen oder eine angegebene Fehlermeldung setzen.
Auf Fehler in XML prüfen Prüfen Sie auf eine Fehlermeldung auf Anwendungsebene, die sich an XPath befindet. Beenden Sie die Verarbeitung bei Erfolg und wenn die Meldung nicht leer ist; andernfalls setzen Sie die Verarbeitung mit dem Wert fort, der vor diesem Vorverarbeitungsschritt vorhanden war. Beachten Sie, dass diese Fehler externer Dienste dem Benutzer unverändert gemeldet werden, ohne Informationen zum Vorverarbeitungsschritt hinzuzufügen.
Bei einem Fehlschlag beim Parsen von ungültigem XML wird kein Fehler gemeldet.
Wenn Sie das Kontrollkästchen Benutzerdefiniert bei Fehler aktivieren, können benutzerdefinierte Optionen zur Fehlerbehandlung angegeben werden: entweder den Wert verwerfen, einen angegebenen Wert setzen oder eine angegebene Fehlermeldung setzen.
Entspricht dem regulären Ausdruck Geben Sie einen regulären Ausdruck an, dem ein Wert entsprechen muss.
Wenn Sie das Kontrollkästchen Benutzerdefiniert bei Fehler aktivieren, können benutzerdefinierte Optionen zur Fehlerbehandlung angegeben werden: entweder den Wert verwerfen, einen angegebenen Wert setzen oder eine angegebene Fehlermeldung setzen.
Drosselung
Unveränderte Werte mit Heartbeat verwerfen Verwerfen Sie einen Wert, wenn er sich innerhalb des definierten Zeitraums (in Sekunden) nicht geändert hat.
Positive Ganzzahlwerte werden zur Angabe der Sekunden unterstützt (Minimum - 1 Sekunde). Zeitsuffixe können in diesem Feld verwendet werden (z. B. 30s, 1m, 2h, 1d). Benutzermakros und Low-Level-Discovery-Makros können in diesem Feld verwendet werden.
Für einen Discovery-Datenpunkt kann nur eine Drosselungsoption angegeben werden.
Z. B. 1m. Wenn identischer Text innerhalb von 60 Sekunden zweimal an diese Regel übergeben wird, wird er verworfen.
Hinweis: Änderungen an Datenpunkt-Prototypen setzen die Drosselung nicht zurück. Die Drosselung wird nur zurückgesetzt, wenn Vorverarbeitungsschritte geändert werden.
Prometheus
Prometheus zu JSON Konvertieren Sie erforderliche Prometheus-Metriken in JSON.
Weitere Details finden Sie unter Prometheus-Prüfungen.

Beachten Sie, dass der Inhalt dieser Registerkarte schreibgeschützt ist, wenn die Discovery-Regel über eine Vorlage auf den Host angewendet wurde.

Benutzerdefinierte Makros

Die Registerkarte LLD-Makros ermöglicht es, benutzerdefinierte Low-Level-Discovery-Makros anzugeben.

Benutzerdefinierte Makros sind nützlich, wenn das zurückgegebene JSON die erforderlichen Makros noch nicht definiert enthält. Zum Beispiel:

  • Der native Schlüssel vfs.fs.discovery für die Dateisystemerkennung gibt ein JSON mit einigen vordefinierten LLD-Makros wie {#FSNAME}, {#FSTYPE} zurück. Diese Makros können direkt in Datenpunkt- und Auslöser-Prototypen (siehe die folgenden Abschnitte auf dieser Seite) verwendet werden; das Definieren benutzerdefinierter Makros ist nicht erforderlich;
  • Der Agent-Datenpunkt vfs.fs.get gibt ebenfalls ein JSON mit Dateisystemdaten zurück, jedoch ohne vordefinierte LLD-Makros. In diesem Fall können Sie die Makros selbst definieren und sie mithilfe von JSONPath den Werten im JSON zuordnen:

Die extrahierten Werte können in erkannten Datenpunkten, Auslösern usw. verwendet werden. Beachten Sie, dass die Werte aus dem Erkennungsergebnis und allen bisherigen Vorverarbeitungsschritten extrahiert werden.

Parameter Beschreibung
LLD-Makro Name des Low-Level-Discovery-Makros unter Verwendung der folgenden Syntax: {#MACRO}.
JSONPath Pfad, der verwendet wird, um den Wert des LLD-Makros aus einer LLD-Zeile mithilfe der JSONPath-Syntax zu extrahieren.
Die aus dem zurückgegebenen JSON extrahierten Werte werden verwendet, um die LLD-Makros in den Prototypfeldern von Datenpunkten, Auslösern usw. zu ersetzen.
JSONPath kann entweder in Punktnotation oder in Klammernotation angegeben werden. Die Klammernotation sollte bei Sonderzeichen und Unicode verwendet werden, z. B. $['unicode + special chars #1']['unicode + special chars #2'].

Zum Beispiel extrahiert $.foo „bar“ und „baz“ aus diesem JSON: [{"foo":"bar"}, {"foo":"baz"}]
Beachten Sie, dass $.foo „bar“ und „baz“ auch aus diesem JSON extrahiert: {"data":[{"foo":"bar"}, {"foo":"baz"}]}, da ein einzelnes „data“-Objekt automatisch verarbeitet wird (zur Abwärtskompatibilität mit der Low-Level-Discovery-Implementierung in Zabbix-Versionen vor 4.2).

Filter

Ein Filter kann verwendet werden, um echte Datenpunkte, Auslöser und Diagramme nur für Entitäten zu erzeugen, die den Kriterien entsprechen. Die Registerkarte Filter enthält Filterdefinitionen für Discovery-Regeln, mit denen Discovery-Werte gefiltert werden können:

Parameter Beschreibung
Berechnungstyp Die folgenden Optionen zur Berechnung von Filtern sind verfügbar:
Und - alle Filter müssen erfüllt sein;
Oder - es genügt, wenn ein Filter erfüllt ist;
Und/Oder - verwendet Und bei unterschiedlichen Makronamen und Oder bei demselben Makronamen;
Benutzerdefinierter Ausdruck - bietet die Möglichkeit, eine benutzerdefinierte Berechnung der Filter zu definieren. Die Formel muss alle Filter in der Liste enthalten. Begrenzt auf 255 Zeichen.
Filter Die folgenden Operatoren für Filterbedingungen sind verfügbar: entspricht, entspricht nicht, existiert, existiert nicht.
Die Operatoren entspricht und entspricht nicht erwarten einen Perl-kompatiblen regulären Ausdruck (PCRE). Wenn Sie beispielsweise nur an den Dateisystemen C:, D: und E: interessiert sind, können Sie {#FSNAME} in das Feld „Makro“ und den regulären Ausdruck "\C|\D|\E" in das Textfeld „Regulärer Ausdruck“ eintragen. Das Filtern ist auch nach Dateisystemtypen mit dem Makro {#FSTYPE} (z. B. "\ext|\reiserfs") und nach Laufwerkstypen mit dem Makro {#FSDRIVETYPE} (z. B. "fixed") möglich (nur vom Windows-Agent unterstützt).
Sie können im Feld „Regulärer Ausdruck“ einen regulären Ausdruck eingeben oder auf einen globalen regulären Ausdruck verweisen.
Um einen regulären Ausdruck zu testen, können Sie „grep -E“ verwenden, zum Beispiel: ````for f in ext2 nfs reiserfs smbfs; do echo $f | grep -E '
ext|^reiserfs' || echo "SKIP: $f"; done````

Die Operatoren existiert und existiert nicht ermöglichen es, Entitäten anhand des Vorhandenseins oder Fehlens des angegebenen LLD-Makros in der Antwort zu filtern.
Beachten Sie, dass eine gefundene Entität ignoriert wird, wenn ein Makro aus dem Filter in der Antwort fehlt, es sei denn, für dieses Makro ist eine Bedingung „existiert nicht“ angegeben.

Es wird eine Warnung angezeigt, wenn das Fehlen eines Makros das Ergebnis des Ausdrucks beeinflusst. Zum Beispiel, wenn {#B} fehlt in:
{#A} entspricht 1 und {#B} entspricht 2 - ergibt eine Warnung
{#A} entspricht 1 oder {#B} entspricht 2 - keine Warnung

Ein Fehler oder Tippfehler im regulären Ausdruck, der in der LLD-Regel verwendet wird (zum Beispiel ein falscher regulärer Ausdruck „Dateisysteme für Discovery“), kann zur Löschung von Tausenden von Konfigurationselementen, historischen Werten und Ereignissen für viele Hosts führen.

Die Zabbix-Datenbank in MySQL muss mit Groß-/Kleinschreibungssensitivität erstellt werden, damit Dateisystemnamen, die sich nur durch Groß-/Kleinschreibung unterscheiden, korrekt erkannt werden.

Überschreiben

Die Registerkarte Überschreibungen ermöglicht das Festlegen von Regeln zum Ändern der Liste von Datenpunkt-, Auslöser-, Graph-, Host- und Discovery-Prototypen oder ihrer Attribute für entdeckte Objekte, die die angegebenen Kriterien erfüllen.

Überschreibungen (falls vorhanden) werden in einer per Drag-and-drop neu anordenbaren Liste angezeigt und in der Reihenfolge ausgeführt, in der sie definiert sind. Um die Details einer neuen Überschreibung zu konfigurieren, klicken Sie auf im Block Überschreibungen. Um eine vorhandene Überschreibung zu bearbeiten, klicken Sie auf den Namen der Überschreibung. Es öffnet sich ein Popup-Fenster, in dem Sie die Details der Überschreibungsregel bearbeiten können.

Alle Pflichtparameter sind mit roten Sternchen markiert.

Parameter Beschreibung
Name Ein eindeutiger Name der Überschreibung (pro LLD-Regel).
If filter matches Definiert, ob die nächsten Überschreibungen verarbeitet werden sollen, wenn die Filterbedingungen erfüllt sind:
Continue overrides - nachfolgende Überschreibungen werden verarbeitet.
Stop processing - Operationen aus vorhergehenden (falls vorhanden) und dieser Überschreibung werden ausgeführt; nachfolgende Überschreibungen werden für übereinstimmende LLD-Zeilen ignoriert.
Filters Bestimmt, auf welche entdeckten Entitäten die Überschreibung angewendet werden soll. Überschreibungsfilter werden nach den Filtern der Discovery-Regel verarbeitet und haben dieselbe Funktionalität.
Operations Überschreibungsoperationen werden mit folgenden Details angezeigt:
Condition - ein Objekttyp und eine Bedingung, die für den Objektnamen erfüllt sein muss; zum Beispiel: Auslöser-Prototyp ist nicht gleich Disk space is low (used > 50%).
Actions - Links zum Bearbeiten und Entfernen einer Operation werden angezeigt.

Konfigurieren einer Operation

Um die Details einer neuen Operation zu konfigurieren, klicken Sie auf im Block „Operationen“. Um eine vorhandene Operation zu bearbeiten, klicken Sie auf neben der Operation. Es öffnet sich ein Popup-Fenster, in dem Sie die Details der Operation bearbeiten können.

Parameter Beschreibung
Object Fünf Objekttypen sind verfügbar:
Datenpunkt-Prototyp
Auslöser-Prototyp
Graph-Prototyp
Host-Prototyp
Discovery-Prototyp
Condition Ermöglicht das Filtern von Entitäten, auf die die Operation angewendet werden soll.
Operator Unterstützte Operatoren:
equals - auf diesen Prototyp anwenden
does not equal - auf alle Prototypen außer diesem anwenden
contains - anwenden, wenn der Prototypname diese Zeichenfolge enthält
does not contain - anwenden, wenn der Prototypname diese Zeichenfolge nicht enthält
matches - anwenden, wenn der Prototypname dem regulären Ausdruck entspricht
does not match - anwenden, wenn der Prototypname dem regulären Ausdruck nicht entspricht
Pattern Ein regulärer Ausdruck oder eine zu suchende Zeichenfolge.
Object: Item prototype
Create enabled Wenn das Kontrollkästchen aktiviert ist, werden Schaltflächen angezeigt, mit denen die ursprünglichen Einstellungen des Datenpunkt-Prototyps überschrieben werden können:
Yes - der Datenpunkt wird im aktivierten Zustand hinzugefügt.
No - der Datenpunkt wird zu einer entdeckten Entität hinzugefügt, jedoch im deaktivierten Zustand.
Discover Wenn das Kontrollkästchen aktiviert ist, werden Schaltflächen angezeigt, mit denen die ursprünglichen Einstellungen des Datenpunkt-Prototyps überschrieben werden können:
Yes - der Datenpunkt wird hinzugefügt.
No - der Datenpunkt wird nicht hinzugefügt.
Update interval Wenn das Kontrollkästchen aktiviert ist, werden zwei Optionen angezeigt, mit denen ein anderes Intervall für den Datenpunkt festgelegt werden kann:
Delay - Aktualisierungsintervall des Datenpunkts. Benutzermakros und Zeitsuffixe (z. B. 30s, 1m, 2h, 1d) werden unterstützt. Sollte auf 0 gesetzt werden, wenn Custom interval verwendet wird.
Custom interval - klicken Sie auf , um flexible/geplante Intervalle anzugeben. Detaillierte Informationen finden Sie unter Benutzerdefinierte Intervalle.
History Wenn das Kontrollkästchen aktiviert ist, werden Schaltflächen angezeigt, mit denen für den Datenpunkt ein anderer Verlaufsspeicherzeitraum festgelegt werden kann:
Do not store - wenn ausgewählt, wird der Verlauf nicht gespeichert.
Store up to - wenn ausgewählt, erscheint rechts ein Eingabefeld zur Angabe des Speicherzeitraums. Benutzermakros und LLD-Makros werden unterstützt.
Trends Wenn das Kontrollkästchen aktiviert ist, werden Schaltflächen angezeigt, mit denen für den Datenpunkt ein anderer Trendspeicherzeitraum festgelegt werden kann:
Do not store - wenn ausgewählt, werden die Trends nicht gespeichert.
Store up to - wenn ausgewählt, erscheint rechts ein Eingabefeld zur Angabe des Speicherzeitraums. Benutzermakros und LLD-Makros werden unterstützt.
Tags Wenn das Kontrollkästchen aktiviert ist, erscheint ein neuer Block, in dem Tag-Wert-Paare angegeben werden können.
Diese Tags werden an die im Datenpunkt-Prototyp angegebenen Tags angehängt, auch wenn die Tag-Namen übereinstimmen.
Object: Trigger prototype
Create enabled Wenn das Kontrollkästchen aktiviert ist, werden Schaltflächen angezeigt, mit denen die ursprünglichen Einstellungen des Auslöser-Prototyps überschrieben werden können:
Yes - der Auslöser wird im aktivierten Zustand hinzugefügt.
No - der Auslöser wird zu einer entdeckten Entität hinzugefügt, jedoch im deaktivierten Zustand.
Discover Wenn das Kontrollkästchen aktiviert ist, werden Schaltflächen angezeigt, mit denen die ursprünglichen Einstellungen des Auslöser-Prototyps überschrieben werden können:
Yes - der Auslöser wird hinzugefügt.
No - der Auslöser wird nicht hinzugefügt.
Severity Wenn das Kontrollkästchen aktiviert ist, werden Schaltflächen für den Auslöser-Schweregrad angezeigt, mit denen der Auslöser-Schweregrad geändert werden kann.
Tags Wenn das Kontrollkästchen aktiviert ist, erscheint ein neuer Block, in dem Tag-Wert-Paare angegeben werden können.
Diese Tags werden an die im Auslöser-Prototyp angegebenen Tags angehängt, auch wenn die Tag-Namen übereinstimmen.
Object: Graph prototype
Discover Wenn das Kontrollkästchen aktiviert ist, werden Schaltflächen angezeigt, mit denen die ursprünglichen Einstellungen des Graph-Prototyps überschrieben werden können:
Yes - der Graph wird hinzugefügt.
No - der Graph wird nicht hinzugefügt.
Object: Host prototype
Create enabled Wenn das Kontrollkästchen aktiviert ist, werden Schaltflächen angezeigt, mit denen die ursprünglichen Einstellungen des Host-Prototyps überschrieben werden können:
Yes - der Host wird im aktivierten Zustand erstellt.
No - der Host wird im deaktivierten Zustand erstellt.
Discover Wenn das Kontrollkästchen aktiviert ist, werden Schaltflächen angezeigt, mit denen die ursprünglichen Einstellungen des Host-Prototyps überschrieben werden können:
Yes - der Host wird entdeckt.
No - der Host wird nicht entdeckt.
Link templates Wenn das Kontrollkästchen aktiviert ist, erscheint ein Eingabefeld zur Angabe von Vorlagen. Beginnen Sie mit der Eingabe des Vorlagennamens oder klicken Sie neben dem Feld auf Select und wählen Sie Vorlagen aus der Liste im Popup-Fenster aus.
Vorlagen aus dieser Überschreibung werden zu allen Vorlagen hinzugefügt, die bereits mit dem Host-Prototyp verknüpft sind.
Tags Wenn das Kontrollkästchen aktiviert ist, erscheint ein neuer Block, in dem Tag-Wert-Paare angegeben werden können.
Diese Tags werden an die im Host-Prototyp angegebenen Tags angehängt, auch wenn die Tag-Namen übereinstimmen.
Host inventory Wenn das Kontrollkästchen aktiviert ist, werden Schaltflächen angezeigt, mit denen ein anderer Modus für das Host-Inventar des Host-Prototyps ausgewählt werden kann:
Disabled - Host-Inventar nicht befüllen
Manual - Details manuell angeben
Automated - Host-Inventardaten basierend auf erfassten Metriken automatisch ausfüllen.

Formularschaltflächen

Mit den Schaltflächen am unteren Rand des Formulars können mehrere Operationen ausgeführt werden.

Eine Discovery-Regel hinzufügen. Diese Schaltfläche ist nur für neue Discovery-Regeln verfügbar.
Die Eigenschaften einer Discovery-Regel aktualisieren. Diese Schaltfläche ist nur für vorhandene Discovery-Regeln verfügbar.
Eine weitere Discovery-Regel auf Grundlage der Eigenschaften der aktuellen Discovery-Regel erstellen.
Die Discovery sofort auf Grundlage der Discovery-Regel ausführen. Die Discovery-Regel muss bereits vorhanden sein. Siehe weitere Details.
Hinweis: Wenn die Discovery sofort ausgeführt wird, wird der Konfigurations-Cache nicht aktualisiert; daher spiegelt das Ergebnis keine sehr aktuellen Änderungen an der Konfiguration der Discovery-Regel wider.
Die Konfiguration der Discovery-Regel testen. Verwenden Sie diese Schaltfläche, um die Konfigurationseinstellungen (z. B. Konnektivität und Korrektheit der Parameter) zu überprüfen, ohne Änderungen dauerhaft anzuwenden.
Die Discovery-Regel löschen.
Die Bearbeitung der Eigenschaften der Discovery-Regel abbrechen.

Erkannte Entitäten

Die folgenden Screenshots veranschaulichen, wie erkannte Datenpunkte, Auslöser und Diagramme in der Konfiguration des Hosts aussehen. Erkannte Entitäten sind mit einem orangefarbenen Link zu der Discovery-Regel versehen, aus der sie stammen.

Beachten Sie, dass erkannte Entitäten nicht erstellt werden, wenn bereits vorhandene Entitäten mit denselben Eindeutigkeitskriterien existieren, zum Beispiel ein Datenpunkt mit demselben Schlüssel oder ein Diagramm mit demselben Namen. In diesem Fall wird im Frontend eine Fehlermeldung angezeigt, dass die Low-Level-Discovery-Regel bestimmte Entitäten nicht erstellen konnte. Die Discovery-Regel selbst wird jedoch nicht auf „nicht unterstützt“ gesetzt, nur weil eine Entität nicht erstellt werden konnte und übersprungen werden musste. Die Discovery-Regel fährt mit dem Erstellen/Aktualisieren anderer Entitäten fort.

Wenn eine erkannte Entität (Host, Dateisystem, Schnittstelle usw.) nicht mehr erkannt wird (oder den Filter nicht mehr erfüllt), können die auf ihrer Grundlage erstellten Entitäten automatisch deaktiviert und schließlich gelöscht werden.

Verlorene Ressourcen können basierend auf dem Wert des Parameters Disable lost resources automatisch deaktiviert werden. Dies betrifft verlorene Hosts, Datenpunkte und Auslöser.

Verlorene Ressourcen können basierend auf dem Wert des Parameters Delete lost resources automatisch gelöscht werden. Dies betrifft verlorene Hosts, Hostgruppen, Datenpunkte, Auslöser und Diagramme.

Wenn erkannte Entitäten den Status „Nicht mehr erkannt“ erhalten, wird in der Entitätenliste ein Lebensdauerindikator angezeigt. Bewegen Sie den Mauszeiger darüber, und es wird eine Meldung mit Details zu ihrem Status angezeigt.

Wenn Entitäten zum Löschen markiert wurden, aber nicht zum erwarteten Zeitpunkt gelöscht wurden (deaktivierte Discovery-Regel oder Datenpunkt-Host), werden sie beim nächsten Verarbeiten der Discovery-Regel gelöscht.

Entitäten, die andere Entitäten enthalten und zum Löschen markiert sind, werden nicht aktualisiert, wenn sie auf Ebene der Discovery-Regel geändert werden. Zum Beispiel werden LLD-basierte Auslöser nicht aktualisiert, wenn sie Datenpunkte enthalten, die zum Löschen markiert sind.

Andere Arten der Discovery

Weitere Details und Anleitungen zu anderen Arten der sofort einsatzbereiten Discovery finden Sie in den folgenden Abschnitten:

Weitere Details zum JSON-Format für Discovery-Datenpunkte sowie ein Beispiel dafür, wie Sie Ihren eigenen Dateisystem-Discoverer als Perl-Skript implementieren, finden Sie unter Erstellen benutzerdefinierter LLD-Regeln.