Reguläre Ausdrücke

Übersicht

Perl Compatible Regular Expressions (PCRE, PCRE2) werden in Zabbix unterstützt.

Es gibt zwei Möglichkeiten, reguläre Ausdrücke in Zabbix zu verwenden:

  • Manuelle Eingabe eines regulären Ausdrucks
  • Verwendung eines in Zabbix erstellten globalen regulären Ausdrucks

Reguläre Ausdrücke

Sie können einen regulären Ausdruck manuell in unterstützten Bereichen eingeben.
Beachten Sie, dass der Ausdruck nicht mit @ beginnen darf, da dieses Symbol in Zabbix verwendet wird, um auf globale reguläre Ausdrücke zu verweisen.

Bei der Verwendung regulärer Ausdrücke kann der Stack-Speicher erschöpft werden. Weitere Informationen finden Sie unter PCRE PERFORMANCE.

Beachten Sie, dass bei der mehrzeiligen Übereinstimmung die Anker ^ und $ jeweils am Anfang und Ende jeder Zeile und nicht am Anfang und Ende des gesamten Strings übereinstimmen.

Siehe auch Beispiele für das korrekte Escaping in verschiedenen Kontexten.

Globale reguläre Ausdrücke

Zabbix stellt im Frontend einen erweiterten Editor zum Erstellen und Testen komplexer regulärer Ausdrücke bereit.
Um darauf zuzugreifen, gehen Sie zu Administration > Allgemein > Reguläre Ausdrücke.
Zabbix enthält in seinem Standarddatensatz eine Reihe von vordefinierten globalen regulären Ausdrücken.

Sie können die Liste der regulären Ausdrücke nach Name und Beschreibung filtern, um die benötigten Ausdrücke zu finden.

Konfiguration

Um einen globalen regulären Ausdruck zu erstellen, klicken Sie auf Regulären Ausdruck erstellen und geben Sie die Parameter des regulären Ausdrucks im Formular ein.

Alle Pflichtfelder sind mit einem roten Sternchen markiert.

Parameter Beschreibung
Name Legen Sie den Namen des regulären Ausdrucks fest. Alle Unicode-Zeichen sind zulässig.
Ausdrücke Klicken Sie im Abschnitt Ausdrücke auf Hinzufügen, um einen neuen Teilausdruck hinzuzufügen.
Ausdruckstyp Wählen Sie den Ausdruckstyp aus:
Enthält Zeichenfolge - stimmt mit der Teilzeichenfolge überein.
Enthält eine beliebige Teilzeichenfolge aus der Liste - stimmt mit einer beliebigen Teilzeichenfolge aus einer durch Trennzeichen getrennten Liste überein. Die durch Trennzeichen getrennte Liste enthält ein Komma ,, einen Punkt . oder einen Schrägstrich /.
Enthält keine Zeichenfolge - stimmt mit jeder Zeichenfolge außer der Teilzeichenfolge überein.
Entspricht regulärem Ausdruck - stimmt mit dem regulären Ausdruck überein.
Entspricht nicht regulärem Ausdruck - stimmt nicht mit dem regulären Ausdruck überein.
Ausdruck Geben Sie die Teilzeichenfolge/den regulären Ausdruck ein.
Maximale Länge: 2048 Zeichen.
Trennzeichen Ein Komma ,, ein Punkt . oder ein Schrägstrich /, um Textzeichenfolgen in einem regulären Ausdruck zu trennen. Dieser Parameter ist nur aktiv, wenn der Ausdruckstyp Enthält eine beliebige Teilzeichenfolge aus der Liste ausgewählt ist.
Groß-/Kleinschreibung beachten Ein Kontrollkästchen, mit dem festgelegt wird, ob bei einem regulären Ausdruck zwischen Groß- und Kleinschreibung unterschieden wird.
Beschreibung Geben Sie eine Beschreibung für den regulären Ausdruck ein.
Ausdruck testen Ein Wert, der zum Testen des regulären Ausdrucks verwendet wird.

Ein Schrägstrich / im Ausdruck wird wörtlich und nicht als Trennzeichen behandelt. Dadurch können Ausdrücke, die einen Schrägstrich enthalten, ohne Fehler gespeichert werden.

Ein benutzerdefinierter Name für einen regulären Ausdruck in Zabbix kann Kommas, Leerzeichen usw. enthalten. In Fällen, in denen dies bei Verweisen zu Missverständnissen führen kann (zum Beispiel ein Komma im Parameter eines item-Schlüssels), kann der gesamte Verweis in Anführungszeichen gesetzt werden, etwa so: "\@My custom regexp for purpose1, purpose2".
Namen regulärer Ausdrücke dürfen an anderen Stellen nicht in Anführungszeichen gesetzt werden (zum Beispiel in den Eigenschaften von LLD-Regeln).

Sobald ein regulärer Ausdruck erstellt wurde, kann er an mehreren Stellen im Frontend verwendet werden, indem auf seinen Namen mit dem Präfix @ verwiesen wird, zum Beispiel @mycustomregexp.

Formularschaltflächen

Die Schaltflächen am unteren Rand des Formulars ermöglichen verschiedene Aktionen:

Schaltfläche Beschreibung
Einen regulären Ausdruck hinzufügen. Diese Schaltfläche ist nur für neue reguläre Ausdrücke verfügbar.
Die Eigenschaften eines regulären Ausdrucks aktualisieren.
Einen weiteren regulären Ausdruck auf Grundlage der Eigenschaften des aktuellen regulären Ausdrucks erstellen.
Einen regulären Ausdruck und seine Teilausdrücke anhand eines angegebenen Werts testen.
Den regulären Ausdruck löschen.
Die Bearbeitung der Eigenschaften des regulären Ausdrucks abbrechen.

Testen eines regulären Ausdrucks

Sie können den regulären Ausdruck und seine Teil-Ausdrücke testen, indem Sie einen Wert in das Feld Test expression eingeben und auf die Schaltfläche Test button klicken.

In der Spalte Test result wird der Status jedes Teil-Ausdrucks angezeigt. Das Feld Combined result zeigt den Gesamtstatus des regulären Ausdrucks an. Wenn mehrere Teil-Ausdrücke definiert sind, verwendet Zabbix den logischen UND-Operator, um das Combined result zu berechnen; das heißt, wenn mindestens ein Ergebnis False ist, ist auch das Combined result False.

Standardmäßige globale reguläre Ausdrücke

Der Standarddatensatz enthält die folgenden vordefinierten globalen regulären Ausdrücke:

Name Expression Matches
Dateisysteme für die Erkennung ^(btrfs|ext2|ext3|ext4|reiser|xfs|ffs|ufs|jfs|jfs2|vxfs|hfs|apfs|refs|ntfs|fat32|zfs)$ "btrfs" oder "ext2" oder "ext3" oder "ext4" oder "reiser" oder "xfs" oder "ffs" oder "ufs" oder "jfs" oder "jfs2" oder "vxfs" oder "hfs" oder "apfs" oder "refs" oder "ntfs" oder "fat32" oder "zfs".
Netzwerkschnittstellen für die Erkennung ^Software Loopback Interface Zeichenfolgen, die mit "Software Loopback Interface" beginnen.
^lo$ "lo".
^(In)?[Ll]oop[Bb]ack[0-9._]*$ Zeichenfolgen, die optional mit "In" beginnen, gefolgt von "L" oder "l", dann "oop", dann "B" oder "b", dann "ack" und optional gefolgt von beliebig vielen Ziffern, Punkten oder Unterstrichen.
^NULL[0-9.]*$ Zeichenfolgen, die mit "NULL" beginnen und optional von beliebig vielen Ziffern oder Punkten gefolgt werden.
^[Ll]o[0-9.]*$ Zeichenfolgen, die mit "Lo" oder "lo" beginnen und optional von beliebig vielen Ziffern oder Punkten gefolgt werden.
^[Ss]ystem$ "System" oder "system".
^Nu[0-9.]*$ Zeichenfolgen, die mit "Nu" beginnen und optional von beliebig vielen Ziffern oder Punkten gefolgt werden.
Speichergeräte für die SNMP-Erkennung ^(Physical memory|Virtual memory|Memory buffers|Cached memory|Swap space)$ "Physical memory" oder "Virtual memory" oder "Memory buffers" oder "Cached memory" oder "Swap space".
Windows-Dienstnamen für die Erkennung ^(MMCSS|gupdate|SysmonLog|clr_optimization_v2.0.50727_32|clr_optimization_v4.0.30319_32)$ "MMCSS" oder "gupdate" oder "SysmonLog" oder Zeichenfolgen, die mit "clr_optimization_v2.0.50727_32" oder "clr_optimization_v4.0.30319_32" übereinstimmen, wobei jeder Punkt durch ein beliebiges Zeichen außer einem Zeilenumbruch ersetzt werden kann.
Windows-Dienststartzustände für die Erkennung ^(automatic|automatic delayed)$ "automatic" oder "automatic delayed".

Importieren/Exportieren eines regulären Ausdrucks

Sie können globale reguläre Ausdrücke importieren oder exportieren, wie auf der Konfigurationsseite für den Export/Import von regulären Ausdrücken beschrieben.

Beispiele

Beispiel für den Ausschluss eines exakten Strings

Verwenden Sie den folgenden Ausdruck in der Low-Level-Discovery, um Datenbanken zu entdecken, außer einer Datenbank mit einem bestimmten Namen:

^TESTDATABASE$

Sowohl Test result als auch Combined result zeigen FALSE an: Der Name stimmt mit "TESTDATABASE" überein, daher ist die Bedingung Does not match regular expression nicht erfüllt.

Beispiel mit einem Inline-Regex-Modifikator für einen nicht zwischen Groß- und Kleinschreibung unterscheidenden Abgleich

Verwenden Sie den folgenden regulären Ausdruck, der den Inline-Modifikator (?i) enthält, um einen nicht zwischen Groß- und Kleinschreibung unterscheidenden Abgleich der Zeichenfolge "error" durchzuführen:

(?i)error

Sowohl Test result als auch Combined result zeigen TRUE an: Die Zeichenfolge "error" wird auch dann abgeglichen, wenn Case sensitive ausgewählt ist, da der Inline-Modifikator (?i) den Abgleich unabhängig von Groß- und Kleinschreibung macht.

Beispiel mit mehreren Inline-Regex-Modifikatoren

Verwenden Sie den folgenden regulären Ausdruck, der mehrere Inline-Modifikatoren enthält, um die Zeichen nach einer bestimmten Zeile abzugleichen:

(?<=match (?i)eveRything(?-i) after this line\r\n)(?sx).*# comment

wobei:

  • (?i) - aktiviert die Groß-/Kleinschreibung ignorierende Übereinstimmung;
  • (?-i) - deaktiviert die Groß-/Kleinschreibung ignorierende Übereinstimmung;
  • (?s) - aktiviert den Dotall-Modus, sodass . mit Zeilenumbruchzeichen übereinstimmen kann;
  • (?x) - aktiviert den erweiterten Modus, sodass Leerzeichen und Kommentare im regulären Ausdruck ignoriert werden.

Sowohl Test result als auch Combined result zeigen TRUE: Die Zeichen nach der spezifischen Zeile werden abgeglichen.

Der g-Modifikator kann nicht inline angegeben werden. Die Liste der verfügbaren Modifikatoren finden Sie auf der pcresyntax man page. Weitere Informationen zur PCRE-Syntax finden Sie in der PCRE HTML documentation.

Unterstützung regulärer Ausdrücke nach Ort

Ort Regulärer Ausdruck Globaler regulärer Ausdruck Mehrzeilenabgleich Kommentare
Agent items
eventlog[] Ja Ja Ja Parameter regexp, severity, source, eventid
eventlog.count[] Parameter regexp, severity, source, eventid
log[] Parameter regexp
log.count[]
logrt[] Ja/Nein Parameter regexp unterstützt beide, der Parameter file_regexp unterstützt nur nicht-globale Ausdrücke
logrt.count[]
proc.cpu.util[] Nein Nein Parameter cmdline
proc.get[]
proc.mem[]
proc.num[]
sensor[] Parameter device und sensor unter Linux 2.4
system.hw.macaddr[] Parameter interface
system.sw.packages[] Parameter regexp
system.sw.packages.get[] Parameter regexp
vfs.dir.count[] Parameter regex_incl, regex_excl, regex_excl_dir
vfs.dir.get[] Parameter regex_incl, regex_excl, regex_excl_dir
vfs.dir.size[] Parameter regex_incl, regex_excl, regex_excl_dir
vfs.file.regexp[] Ja Parameter regexp
vfs.file.regmatch[]
web.page.regexp[]
SNMP traps
snmptrap[] Ja Ja Nein Parameter regexp
Item value preprocessing Ja Nein Nein Parameter pattern
Functions for triggers/calculated items
count() Ja Ja Ja Parameter pattern, wenn der Parameter operator regexp oder iregexp ist
countunique() Ja Ja
find() Ja Ja
logeventid() Ja Ja Nein Parameter pattern
logsource()
Low-level discovery
Filter Ja Ja Nein Feld Regulärer Ausdruck
Überschreibungen Ja Nein In den Optionen entspricht und entspricht nicht für Bedingungen Operation
Action conditions Ja Nein Nein In den Optionen entspricht und entspricht nicht für die Autoregistrierungsbedingungen Host name und Host metadata
Scripts Ja Ja Nein Feld Eingabevalidierungsregel
Web monitoring Ja Nein Ja Variablen mit Präfix regex:
Feld Erforderliche Zeichenfolge
User macro context Ja Nein Nein Im Makrokontext mit Präfix regex:
Macro functions
regsub() Ja Nein Nein Parameter pattern
iregsub()
Link indicators in maps Ja Nein Nein Feld Muster (für Textelemente)
Icon mapping Ja Ja Nein Feld Ausdruck
Value mapping Ja Nein Nein Feld Wert, wenn der Zuordnungstyp regexp ist
Agent configuration parameters
AllowKeyRegexp Ja Nein Nein Muster
DenyKeyRegexp