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





