Wyrażenia regularne

Przegląd

Perl Compatible Regular Expressions (PCRE, PCRE2) są obsługiwane w Zabbix.

W Zabbix istnieją dwa sposoby używania wyrażeń regularnych:

  • Ręczne wprowadzanie wyrażenia regularnego
  • Używanie globalnego wyrażenia regularnego utworzonego w Zabbix

Wyrażenia regularne

Możesz ręcznie wprowadzić wyrażenie regularne w obsługiwanych miejscach.
Pamiętaj, że wyrażenie nie może zaczynać się od @, ponieważ ten symbol jest używany w Zabbix do odwoływania się do globalnych wyrażeń regularnych.

Podczas używania wyrażeń regularnych może dojść do wyczerpania pamięci stosu. Więcej informacji znajdziesz w PCRE PERFORMANCE.

Pamiętaj, że w dopasowywaniu wielowierszowym kotwice ^ i $ odpowiadają odpowiednio początkowi i końcowi każdej linii, a nie początkowi i końcowi całego ciągu.

Zobacz także przykłady poprawnego escapowania w różnych kontekstach.

Globalne wyrażenia regularne

Zabbix udostępnia zaawansowany edytor w frontendzie do tworzenia i testowania złożonych wyrażeń regularnych.
Aby uzyskać do niego dostęp, przejdź do Administration > General > Regular expressions.
Zabbix zawiera w domyślnym zestawie danych kilka predefiniowanych globalnych wyrażeń regularnych.

Możesz filtrować listę wyrażeń regularnych według nazwy i opisu, aby znaleźć potrzebne wyrażenia.

Konfiguracja

Aby utworzyć globalne wyrażenie regularne, kliknij Utwórz wyrażenie regularne i wprowadź parametry wyrażenia regularnego w formularzu.

Wszystkie obowiązkowe pola wejściowe są oznaczone czerwoną gwiazdką.

Parameter Description
Name Ustaw nazwę wyrażenia regularnego. Dozwolone są dowolne znaki Unicode.
Expressions Kliknij Dodaj w sekcji Expressions, aby dodać nowe podwyrażenie.
Expression type Wybierz typ wyrażenia:
Contains string - dopasowuje podciąg.
Contains any substring from list - dopasowuje dowolny podciąg z listy rozdzielanej znakami. Lista rozdzielana może zawierać przecinek ,, kropkę . lub ukośnik /.
Does not contain string - dopasowuje dowolny ciąg z wyjątkiem podciągu.
Matches regular expression - dopasowuje wyrażenie regularne.
Does not match regular expression - nie dopasowuje wyrażenia regularnego.
Expression Wprowadź podciąg/wyrażenie regularne.
Maksymalna długość: 2048 znaków.
Delimiter Przecinek ,, kropka . lub ukośnik / służący do rozdzielania ciągów tekstowych w wyrażeniu regularnym. Ten parametr jest aktywny tylko wtedy, gdy wybrany jest typ wyrażenia Contains any substring from list.
Case sensitive Pole wyboru określające, czy wyrażenie regularne rozróżnia wielkość liter.
Description Wprowadź opis wyrażenia regularnego.
Test expression Wartość używana do testowania wyrażenia regularnego.

Ukośnik / w wyrażeniu jest traktowany dosłownie, a nie jako separator. Dzięki temu można zapisywać wyrażenia zawierające ukośnik bez błędów.

Niestandardowa nazwa wyrażenia regularnego w Zabbix może zawierać przecinki, spacje itp. W przypadkach, gdy może to prowadzić do błędnej interpretacji podczas odwoływania się do niej (na przykład przecinek w parametrze klucza pozycji), całe odwołanie można ująć w cudzysłów, na przykład: "\@My custom regexp for purpose1, purpose2".
Nazw wyrażeń regularnych nie należy ujmować w cudzysłów w innych miejscach (na przykład we właściwościach reguły LLD).

Po utworzeniu wyrażenia regularnego można go używać w kilku miejscach we frontend, odwołując się do jego nazwy z prefiksem @, na przykład @mycustomregexp.

Przyciski formularza

Przyciski u dołu formularza umożliwiają wykonywanie różnych operacji:

Button Description
Dodaj wyrażenie regularne. Ten przycisk jest dostępny tylko dla nowych wyrażeń regularnych.
Zaktualizuj właściwości wyrażenia regularnego.
Utwórz kolejne wyrażenie regularne na podstawie właściwości bieżącego wyrażenia regularnego.
Przetestuj wyrażenie regularne i jego podwyrażenia względem podanej wartości.
Usuń wyrażenie regularne.
Anuluj edycję właściwości wyrażenia regularnego.

Testowanie wyrażenia regularnego

Możesz przetestować wyrażenie regularne oraz jego podwyrażenia, wpisując wartość w polu Test expression i klikając przycisk Test button.

W kolumnie Test result wyświetlany jest status każdego podwyrażenia. Pole Combined result wyświetla ogólny status wyrażenia regularnego. Jeśli zdefiniowano wiele podwyrażeń, Zabbix używa operatora logicznego AND do obliczenia Combined result; to znaczy, jeśli co najmniej jeden wynik ma wartość False, Combined result również ma wartość False.

Domyślne globalne wyrażenia regularne

Domyślny zestaw danych zawiera następujące predefiniowane globalne wyrażenia regularne:

Nazwa Wyrażenie Dopasowania
Systemy plików do wykrywania ^(btrfs|ext2|ext3|ext4|reiser|xfs|ffs|ufs|jfs|jfs2|vxfs|hfs|apfs|refs|ntfs|fat32|zfs)$ "btrfs" lub "ext2" lub "ext3" lub "ext4" lub "reiser" lub "xfs" lub "ffs" lub "ufs" lub "jfs" lub "jfs2" lub "vxfs" lub "hfs" lub "apfs" lub "refs" lub "ntfs" lub "fat32" lub "zfs".
Interfejsy sieciowe do wykrywania ^Software Loopback Interface Ciągi zaczynające się od "Software Loopback Interface".
^lo$ "lo".
^(In)?[Ll]oop[Bb]ack[0-9._]*$ Ciągi opcjonalnie zaczynające się od "In", po których następuje "L" lub "l", następnie "oop", potem "B" lub "b", następnie "ack", a opcjonalnie dowolna liczba cyfr, kropek lub podkreśleń.
^NULL[0-9.]*$ Ciągi zaczynające się od "NULL", opcjonalnie po których następuje dowolna liczba cyfr lub kropek.
^[Ll]o[0-9.]*$ Ciągi zaczynające się od "Lo" lub "lo" i opcjonalnie po których następuje dowolna liczba cyfr lub kropek.
^[Ss]ystem$ "System" lub "system".
^Nu[0-9.]*$ Ciągi zaczynające się od "Nu", opcjonalnie po których następuje dowolna liczba cyfr lub kropek.
Urządzenia pamięci masowej do wykrywania SNMP ^(Physical memory|Virtual memory|Memory buffers|Cached memory|Swap space)$ "Physical memory" lub "Virtual memory" lub "Memory buffers" lub "Cached memory" lub "Swap space".
Nazwy usług Windows do wykrywania ^(MMCSS|gupdate|SysmonLog|clr_optimization_v2.0.50727_32|clr_optimization_v4.0.30319_32)$ "MMCSS" lub "gupdate" lub "SysmonLog" lub ciągi pasujące do "clr_optimization_v2.0.50727_32" lub "clr_optimization_v4.0.30319_32", przy czym każda kropka może zostać zastąpiona dowolnym znakiem z wyjątkiem znaku nowej linii.
Stany uruchamiania usług Windows do wykrywania ^(automatic|automatic delayed)$ "automatic" lub "automatic delayed".

Importowanie/eksportowanie wyrażenia regularnego

Możesz importować lub eksportować globalne wyrażenia regularne, jak opisano na stronie konfiguracji eksportu/importu Wyrażenia regularne.

Przykłady

Przykład wykluczania dokładnego ciągu

Użyj następującego wyrażenia w wykrywaniu niskiego poziomu, aby wykrywać bazy danych z wyjątkiem bazy danych o określonej nazwie:

^TESTDATABASE$

Zarówno Test result, jak i Combined result wyświetlają FALSE: nazwa pasuje do "TESTDATABASE", więc warunek Does not match regular expression nie jest spełniony.

Przykład z wbudowanym modyfikatorem wyrażenia regularnego dla dopasowania bez uwzględniania wielkości liter

Użyj następującego wyrażenia regularnego, które zawiera wbudowany modyfikator (?i), aby wykonać dopasowanie ciągu znaków "error" bez uwzględniania wielkości liter:

(?i)error

Zarówno Test result, jak i Combined result wyświetlają TRUE: znaki "error" są dopasowywane nawet przy zaznaczonej opcji Case sensitive, ponieważ wbudowany modyfikator (?i) sprawia, że dopasowanie nie uwzględnia wielkości liter.

Przykład z wieloma modyfikatorami wyrażeń regularnych inline

Użyj następującego wyrażenia regularnego, które zawiera wiele modyfikatorów inline, aby dopasować znaki po określonej linii:

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

gdzie:

  • (?i) - włącza dopasowywanie bez rozróżniania wielkości liter;
  • (?-i) - wyłącza dopasowywanie bez rozróżniania wielkości liter;
  • (?s) - włącza tryb dotall, umożliwiając . dopasowanie znaków nowej linii;
  • (?x) - włącza tryb rozszerzony, pozwalając ignorować białe znaki i komentarze w wyrażeniu regularnym.

Zarówno Test result, jak i Combined result wyświetlają TRUE: znaki następujące po określonej linii są dopasowane.

Modyfikatora g nie można określić inline. Listę dostępnych modyfikatorów można znaleźć na stronie podręcznika pcresyntax. Więcej informacji na temat składni PCRE można znaleźć w dokumentacji HTML PCRE.

Obsługa wyrażeń regularnych według lokalizacji

Location Regular expression Global regular expression Multiline matching Comments
Pozycje agenta
eventlog[] Yes Yes Yes Parametry regexp, severity, source, eventid
eventlog.count[] Parametry regexp, severity, source, eventid
log[] Parametr regexp
log.count[]
logrt[] Yes/No Parametr regexp obsługuje oba warianty, parametr file_regexp obsługuje tylko wyrażenia nieglobalne
logrt.count[]
proc.cpu.util[] No No Parametr cmdline
proc.get[]
proc.mem[]
proc.num[]
sensor[] Parametry device i sensor w Linux 2.4
system.hw.macaddr[] Parametr interface
system.sw.packages[] Parametr regexp
system.sw.packages.get[] Parametr regexp
vfs.dir.count[] Parametry regex_incl, regex_excl, regex_excl_dir
vfs.dir.get[] Parametry regex_incl, regex_excl, regex_excl_dir
vfs.dir.size[] Parametry regex_incl, regex_excl, regex_excl_dir
vfs.file.regexp[] Yes Parametr regexp
vfs.file.regmatch[]
web.page.regexp[]
Trapy SNMP
snmptrap[] Yes Yes No Parametr regexp
Wstępne przetwarzanie wartości pozycji Yes No No Pole pattern
Funkcje dla wyzwalaczy/pozycji obliczanych
count() Yes Yes Yes Parametr pattern, jeśli parametr operator ma wartość regexp lub iregexp
countunique() Yes Yes
find() Yes Yes
logeventid() Yes Yes No Parametr pattern
logsource()
Wykrywanie niskiego poziomu
Filters Yes Yes No Pole Regular expression
Overrides Yes No W opcjach matches, does not match dla warunków Operation
Warunki akcji Yes No No W opcjach matches, does not match dla warunków automatycznej rejestracji Host name i Host metadata
Skrypty Yes Yes No Pole Input validation rule
Monitorowanie WWW Yes No Yes Variables z prefiksem regex:
Pole Required string
Kontekst makra użytkownika Yes No No W kontekście makra z prefiksem regex:
Funkcje makr
regsub() Yes No No Parametr pattern
iregsub()
Wskaźniki łączy na mapach Yes No No Pole Pattern (dla pozycji tekstowych)
Mapowanie ikon Yes Yes No Pole Expression
Mapowanie wartości Yes No No Pole Value, jeśli typ mapowania to regexp
Parametry konfiguracji agenta
AllowKeyRegexp Yes No No Wzorzec
DenyKeyRegexp