10 Reguläre Ausdrücke

Übersicht

Perl-kompatible reguläre Ausdrücke (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 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 die Referenzierung globaler regulärer Ausdrücke verwendet wird.

Bei der Verwendung regulärer Ausdrücke kann es zu einem Stack-Überlauf kommen. Weitere Informationen finden Sie auf der pcrestack-Manpage.

Beachten Sie, dass beim mehrzeiligen Abgleich die Anker ^ und $ jeweils auf den Anfang bzw. das Ende jeder Zeile passen, anstatt auf den Anfang bzw. das Ende der gesamten Zeichenkette.

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.

So erstellen Sie einen globalen regulären Ausdruck:

  • Gehen Sie zu: Administration → General
  • Wählen Sie Regular expressions aus dem Dropdown-Menü
  • Klicken Sie auf New regular expression

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

Alle erforderlichen Eingabefelder sind mit einem roten Sternchen markiert.

Parameter Beschreibung
Name Legen Sie den Namen des regulären Ausdrucks fest. Beliebige Unicode-Zeichen sind zulässig.
Expressions Klicken Sie im Block Expressions auf Add, um einen neuen Unterausdruck hinzuzufügen.
Expression type Wählen Sie den Ausdruckstyp aus:
Character string included - stimmt mit der Teilzeichenfolge überein
Any character string included - 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 (/).
Character string not included - stimmt mit jeder Zeichenfolge außer der Teilzeichenfolge ü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 die Teilzeichenfolge bzw. den 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 die Groß- und Kleinschreibung beachtet wird.

Ein Schrägstrich (/) im Ausdruck wird wörtlich behandelt und nicht als Trennzeichen. Auf diese Weise können Ausdrücke, die einen Schrägstrich enthalten, fehlerfrei 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 Fehlinterpretationen führen kann (zum Beispiel ein Komma im Parameter eines Datenpunktschlüssels), kann die gesamte Referenz in Anführungszeichen gesetzt werden, zum Beispiel 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).

Auf der Registerkarte Test können der reguläre Ausdruck und seine Unterausdrücke getestet werden, indem eine Testzeichenfolge angegeben wird.

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

Der Gesamtstatus des benutzerdefinierten Ausdrucks wird als Combined result definiert. Wenn mehrere Unterausdrücke definiert sind, verwendet Zabbix den logischen AND-Operator zur Berechnung von Combined result. Das bedeutet: Wenn mindestens ein Ergebnis False ist, hat auch Combined result den Status False.

Standardmäßige globale reguläre Ausdrücke

Zabbix wird mit mehreren globalen regulären Ausdrücken in seinem Standard-Datensatz ausgeliefert.

Name Ausdruck Entspricht
Dateisysteme für Discovery ^(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 Discovery ^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“, dann „oop“, dann „B“ oder „b“, dann „ack“ enthalten und optional von einer beliebigen Anzahl von Ziffern, Punkten oder Unterstrichen gefolgt werden können.
^NULL[0-9.]*$ Zeichenfolgen, die mit „NULL“ beginnen und optional von einer beliebigen Anzahl von Ziffern oder Punkten gefolgt werden.
^[Ll]o[0-9.]*$ Zeichenfolgen, die mit „Lo“ oder „lo“ beginnen und optional von einer beliebigen Anzahl von Ziffern oder Punkten gefolgt werden.
^[Ss]ystem$ „System“ oder „system“
^Nu[0-9.]*$ Zeichenfolgen, die mit „Nu“ beginnen und optional von einer beliebigen Anzahl von Ziffern oder Punkten gefolgt werden.
Speichergeräte für SNMP-Discovery ^(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 Discovery ^(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 anstelle von Punkten jedes beliebige Zeichen außer einem Zeilenumbruch stehen kann.
Windows-Dienst-Startzustände für Discovery ^(automatic|automatic delayed)$ „automatic“ oder „automatic delayed“

Beispiele

Beispiel 1

Verwendung des folgenden Ausdrucks in der Low-Level-Discovery, um Datenbanken zu erkennen, mit Ausnahme einer Datenbank mit einem bestimmten Namen:

^TESTDATABASE$

regexp\_expr\_2.png

Gewählter Ausdruckstyp: „Ergebnis ist FALSE“. Entspricht keinem 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: „Ergebnis ist TRUE“. Die Zeichen „error“ werden abgeglichen.

Ein weiteres Beispiel mit einem Inline-RegEx-Modifikator

Verwendung des folgenden regulären Ausdrucks mit mehreren 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: „Ergebnis ist WAHR“. 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-Manpage. Weitere Informationen zur PCRE-Syntax finden Sie in der PCRE-HTML-Dokumentation.

Unterstützung regulärer Ausdrücke nach Ort

Ort Regulärer Ausdruck Globaler regulärer Ausdruck Mehrzeilenabgleich Kommentare
Agent-Datenpunkte
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 beides, 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
Vorverarbeitung von Datenpunktwerten Ja Nein Nein Parameter pattern
Funktionen für Auslöser/berechnete Datenpunkte
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 Regular expression
Überschreibungen Ja Nein In den Optionen matches, does not match für Operation-Bedingungen
Aktionsbedingungen Ja Nein Nein In den Optionen matches, does not match für Autoregistrierungsbedingungen von Host name und Host metadata
Skripte Ja Ja Nein Feld Input validation rule
Web-Überwachung Ja Nein Ja Variables mit dem Präfix regex:
Feld Required string
Benutzer-Makrokontext Ja Nein Nein Im Makrokontext mit dem Präfix regex:
Makrofunktionen
regsub() Ja Nein Nein Parameter pattern
iregsub()
Link-Indikatoren in Karten Ja Nein Nein Feld Pattern (für Text-Datenpunkte)
Symbolzuordnung Ja Ja Nein Feld Expression
Wertzuordnung Ja Nein Nein Feld Value, wenn der Zuordnungstyp regexp ist