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$

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

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

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 |
|