12 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 globalen regulären Ausdrucks, der in Zabbix erstellt wurde

Reguläre Ausdrücke

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

Bei der Verwendung regulärer Ausdrücke kann der Stack erschöpft werden. Weitere Informationen finden Sie auf der pcrestack-Manpage.

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

Siehe auch Beispiele für korrektes Escaping in verschiedenen Kontexten.

Globale reguläre Ausdrücke

Im Zabbix-Frontend gibt es einen erweiterten Editor zum Erstellen und Testen komplexer regulärer Ausdrücke.

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

Um einen globalen regulären Ausdruck zu erstellen:

  • Gehen Sie zu: Administration > General
  • Wählen Sie Regular expressions aus der Dropdown-Liste
  • Klicken Sie auf New regular expression

Auf der Registerkarte Expressions können Sie den Namen des regulären Ausdrucks festlegen und Teilausdrücke hinzufügen.

Alle Pflichtfelder sind mit einem roten Sternchen markiert.

Parameter Beschreibung
Name Legt den Namen des regulären Ausdrucks fest. Alle Unicode-Zeichen sind zulässig.
Expressions Klicken Sie im Bereich Expressions auf Add, um einen neuen Teilausdruck hinzuzufügen.
Expression type Wählen Sie den Ausdruckstyp aus:
Character string included - stimmt mit dem Teilstring überein
Any character string included - stimmt mit jedem Teilstring aus einer durch Trennzeichen getrennten Liste überein. Die Liste mit Trennzeichen enthält ein Komma (,), einen Punkt (.) oder einen Schrägstrich (/).
Character string not included - stimmt mit jedem String außer dem Teilstring überein
Result is TRUE - stimmt mit dem regulären Ausdruck überein
Result is FALSE - stimmt nicht mit dem regulären Ausdruck überein
Expression Geben Sie Teilstring/regulären Ausdruck ein.
Delimiter Ein Komma (,), ein Punkt (.) oder ein Schrägstrich (/) zum Trennen von Textzeichenfolgen in einem regulären Ausdruck. Dieser Parameter ist nur aktiv, wenn der Ausdruckstyp "Any character string included" ausgewählt ist.
Case sensitive Ein Kontrollkästchen, mit dem festgelegt wird, ob bei einem regulären Ausdruck zwischen Groß- und Kleinschreibung unterschieden wird.

Ein Schrägstrich (/) im Ausdruck wird wörtlich interpretiert und nicht als Trennzeichen. Auf diese Weise 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 der Referenzierung zu einer Fehlinterpretation führen kann (zum Beispiel ein Komma im Parameter eines item-Schlüssels), kann die gesamte Referenz in Anführungszeichen gesetzt werden, wie hier: "\@My custom regexp for purpose1, purpose2".
An anderen Stellen dürfen reguläre Ausdrücke nicht in Anführungszeichen gesetzt werden (zum Beispiel in den Eigenschaften einer LLD-Regel).

Auf der Registerkarte Test können der reguläre Ausdruck und seine Teilausdrücke durch Eingabe einer Testzeichenfolge getestet werden.

Die Ergebnisse zeigen den Status jedes Teilausdrucks sowie den Gesamtstatus des benutzerdefinierten Ausdrucks.

Der Gesamtstatus des benutzerdefinierten Ausdrucks wird als Combined result definiert. Wenn mehrere Teilausdrücke definiert sind, verwendet Zabbix den logischen UND-Operator, um Combined result zu berechnen. Das bedeutet, dass Combined result ebenfalls den Status False hat, wenn mindestens ein Result False ist.

Standardmäßige globale reguläre Ausdrücke

Zabbix wird mit mehreren globalen regulären Ausdrücken in seinem Standarddatensatz geliefert.

Name Expression Matches
Dateisysteme für die Erkennung ^(btrfs|ext2|ext3|ext4|jfs|reiser|xfs|ffs|ufs|jfs|jfs2|vxfs|hfs|refs|apfs|ntfs|fat32|zfs)$ "btrfs" oder "ext2" oder "ext3" oder "ext4" oder "jfs" oder "reiser" oder "xfs" oder "ffs" oder "ufs" oder "jfs" oder "jfs2" oder "vxfs" oder "hfs" oder "refs" oder "apfs" 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, dann "L" oder "l" enthalten, dann "oop", dann "B" oder "b", dann "ack", 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 wie "clr_optimization_v2.0.50727_32" und "clr_optimization_v4.0.30319_32", wobei Sie anstelle der Punkte beliebige Zeichen außer einem Zeilenumbruch verwenden können.
Windows-Dienststartzustände für die Erkennung ^(automatic|automatic delayed)$ "automatic" oder "automatic delayed"

Beispiele

Beispiel 1

Verwendung des folgenden Ausdrucks in der Low-Level-Discovery, um Datenbanken zu entdecken, außer einer Datenbank mit einem bestimmten Namen:

^TESTDATABASE$

regexp\_expr\_2.png

Gewählter Ausdruckstyp: "Result is FALSE". Entspricht nicht dem Namen, der die Zeichenfolge "TESTDATABASE" enthält.

Beispiel mit einem Inline-Regex-Modifikator

Verwendung des folgenden regulären Ausdrucks einschließlich eines Inline-Modifikators (?i), um die Zeichen "error" abzugleichen:

(?i)error

regexp\_expr\_3a.png

Gewählter Ausdruckstyp: "Result is TRUE". Die Zeichen "error" werden abgeglichen.

Ein weiteres Beispiel mit einem Inline-Regex-Modifikator

Verwendung des folgenden regulären Ausdrucks einschließlich mehrerer Inline-Modifikatoren, um die Zeichen nach einer bestimmten Zeile abzugleichen:

(?<=match (?i)everything(?-i) after this line\n)(?sx).*# we add s modifier to allow . match newline characters

regexp\_expr\_4\_new.png

Gewählter Ausdruckstyp: "Result is TRUE". Zeichen nach einer bestimmten Zeile werden abgeglichen.

Der Modifikator g kann nicht in der Zeile 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[] Yes Yes Yes Parameter regexp, severity, source, eventid
eventlog.count[] Parameter regexp, severity, source, eventid
log[] Parameter regexp
log.count[]
logrt[] Yes/No Parameter regexp unterstützt beides, Parameter file_regexp unterstützt nur nicht-globale Ausdrücke
logrt.count[]
proc.cpu.util[] No No 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[] Yes Parameter regexp
vfs.file.regmatch[]
web.page.regexp[]
SNMP traps
snmptrap[] Yes Yes No Parameter regexp
Item value preprocessing Yes No No Parameter pattern
Functions for triggers/calculated items
count() Yes Yes Yes Parameter pattern, wenn der Parameter operator regexp oder iregexp ist
countunique() Yes Yes
find() Yes Yes
logeventid() Yes Yes No Parameter pattern
logsource()
Low-level discovery
Filters Yes Yes No Feld Regular expression
Overrides Yes No In den Optionen matches, does not match für Operation-Bedingungen
Action conditions Yes No No In den Optionen matches, does not match für die Autoregistrierungsbedingungen Host name und Host metadata
Scripts Yes Yes No Feld Input validation rule
Web monitoring Yes No Yes Variables mit Präfix regex:
Feld Required string
User macro context Yes No No Im Makrokontext mit Präfix regex:
Macro functions
regsub() Yes No No Parameter pattern
iregsub()
Link indicators in maps Yes No No Feld Pattern (für Textelemente)
Icon mapping Yes Yes No Feld Expression
Value mapping Yes No No Feld Value, wenn der Zuordnungstyp regexp ist