12 Регуларни изрази

Преглед

Perl компатибилни регуларни изрази (PCRE, PCRE2) су подржани у Zabbix-у.

Постоје два начина коришћења регуларних израза у Zabbix-у:

  • ручно уношење регуларног израза
  • коришћењем глобалног регуларног израза креираног у Zabbix-у

Регуларни изрази

Можете ручно да унесете регуларни израз на подржана места. Напомена да израз можда не почиње са @ јер се тај симбол користи у Zabbix-у за референцирање глобалних регуларних израза.

Могуће је да останете без стека када користите регуларни израз. Погледајте pcrestack man page за више информација.

Имајте на уму да се у вишелинијском поклапању ознаке ^ и $ одговарају почетку/крају сваког реда респективно, уместо почетка/краја целог низа.

Погледајте такође примере за correct escaping у различитим контекстима.

Глобални регуларни изрази

Постоји напредни уређивач за прављење и тестирање сложених регуларних израза у Zabbix корисничком интерфејсу.

Једном када је регуларни израз креиран на овај начин, може се користити на неколико места у корисничком интерфејсу позивајући се на његово име, са префиксом са @, на пример, @mycustomregexp.

Да бисте направили глобални регуларни израз:

  • Идите на: Администрација → Опште
  • Изаберите Регуларни изрази из падајућег менија
  • Кликните на Нови регуларни израз

Картица Изрази омогућава подешавање назива регуларног израза и додати подизразе.

Сва обавезна поља за унос су означена црвеном звездицом.

Parameter Description
Назив Подесите име регуларног израза. Сви Unicode карактери су дозвољени.
Изрази Кликните на Додај у блоку Изрази да додате нови подизраз.
Тип израза Изаберите тип израза:
Укључен низ карактера - подударање са поднизом
Било који низ карактера укључен - подударање са било којим поднизом са ограничене листе. Разграничена листа садржи зарез (,), тачку (.) или косу црту (/).
Низ карактера није укључен - подударање са било којим стрингом осим подниза
Резултат је TRUE - подударање са регуларним изразом
Резултат је FALSE - не подудара се са регуларним изразом
Израз Унесите подниз/регуларни израз.
Делимитер Зарез (,), тачка (.) или коса црта (/) за раздвајање текстуалних низова у регуларном изразу. Овај параметар је активан само када је изабран тип израза "Укључен било који низ карактера".
Разликује велика и мала слова Поље за потврду за одређивање да ли је регуларни израз осетљив на велика слова.

Коса црта (/) у изразу се третира буквално, а не као делимитер. На овај начин је могуће сачувати изразе који садрже косу црту, без грешака.

Име прилагођеног регуларног израза у Zabbix-у може да садржи зарезе, размаке итд. У оним случајевима када то може довести до погрешног тумачења приликом референцирања (на пример, зарез у параметар кључа ставке) цела референца се може ставити под наводнике као што је ово: "@My custom regexp for purpose1, purpose2".
Називи регуларних израза не смеју да се наводе на другим локацијама (као на пример, у својствима LLD правила).

На картици Тест регуларни израз и његови подизрази могу бити тестирани пружањем тест стринга.

Резултати показују статус сваког подизраза и укупну прилагођеност статус израза.

Укупан статус прилагођеног израза је дефинисан као Комбиновани резултат. Ако је дефинисано неколико подизраза. Zabbix користи логички оператор AND за израчунавање Комбиновани резултат. То значи да ако је бар један Резултат False, Комбиновани резултат такође има статус False.

Подразумевани глобални регуларни изрази

Zabbix долази са неколико глобалних регуларних израза у подразумеваној вредности скупа података.

Name Expression Matches
File systems for discovery ^(btrfs|ext2|ext3|ext4|jfs|reiser|xfs|ffs|ufs|jfs|jfs2|vxfs|hfs|refs|apfs|ntfs|fat32|zfs)$ "btrfs" или "ext2" или "ext3" или "ext4" или "jfs" или "reiser" или "xfs" или "ffs" или "ufs" или "jfs" или "jfs2" или "vxfs" или "hfs" или "refs" или "apfs" или "ntfs" или "fat32" или "zfs"
Мрежни интерфејси за откривање ^Software Loopback Interface Стрингови који почињу са "Software Loopback Interface".
^lo$ "lo"
^(In)?[Ll]oop[Bb]ack[0-9._]*$ Стрингови који опционо почињу са "In", затим имају "L" или "l", затим "oop", затим "B" или "b", затим "ack", који опционо може бити праћен било којим бројем цифара, тачака или доњих црта.
^NULL[0-9.]*$ Стрингови који почињу са "NULL" опционо праћен било којим бројем цифара или тачака.
^[Ll]o[0-9.]*$ Стрингови који почињу са "Lo" или "lo" и опционо након којих следи било који број цифара или тачака.
^[Ss]ystem$ "System" или "system"
^Nu[0-9.]*$ Стрингови који почињу са "Nu" опционо праћен било којим бројем цифара или тачака.
Уређаји за складиштење за откривање SNMP-а ^(Physical memory|Virtual memory|Memory buffers|Cached memory|Swap space)$ "Physical memory" или "Virtual memory" или "Memory buffers" или "Cached memory" или "Swap space"
Називи Windows сервиса за откривање ^(MMCSS|gupdate|SysmonLog|clr_optimization_v2.0.50727_32|clr_optimization_v4.0.30319_32)$ "MMCSS" или "gupdate" or "SysmonLog" или стринг као што је "clr_optimization_v2.0.50727_32" и "clr_optimization_v4.0.30319_32" где уместо тачака можете ставити било који карактер осим новог реда.
Стања покретања Windows сервиса за откривање ^(automatic|automatic delayed)$ "automatic" или "automatic delayed"

Примери

Пример 1

Употреба следећег израза у откривању ниског нивоа за откривање базе података осим базе података са одређеним именом:

^TESTDATABASE$

regexp_expr_2.png

Изабран Тип израза: "Резултат је FALSE". Не одговара имену, који садржи стринг "TESTDATABASE".

Пример са уграђеним модификатором регуларног израза

Коришћење следећег регуларног израза укључујући уграђени модификатор (?i) са поклапањем са карактером "error":

(?i)error

regexp_expr_3a.png

Изабран Тип израза: "Резултат је TRUE". Карактери "error" су успешно поклопљени.

Још један пример са уграђеним модификатором регуларног израза

Употреба следећег регуларног израза укључујући више уграђених модификатора који одговарају карактерима после одређене линије:

(?<=match (?i)everything(?-i) after this line\n)(?sx).*# додајемо модификатор s да бисмо дозволили да. одговарају карактерима новог реда

regexp_expr_4_new.png

Изабрани тип израза: "Резултат је TRUE". Карактери после одређене линије се подударају.

g модификатор се не може навести унутар реда. Листа доступних модификатора може се наћи у pcresyntax man page. За више информација о PCRE синтакси погледајте PCRE HTML документацију.

Подршка за регуларне изразе према локацији

Location Regular expression Global regular expression Multiline matching Comments
Ставке агента
eventlog[] Yes Yes Yes regexp, severity, source, eventid параметри
eventlog.count[] regexp, severity, source, eventid параметри
log[] regexp параметар
log.count[]
logrt[] Yes/No regexp параметар подржава оба, параметар file_regexp подржава само неглобалне изразе
logrt.count[]
proc.cpu.util[] No No cmdline параметар
proc.get[]
proc.mem[]
proc.num[]
sensor[] device и sensor параметри на Linux-у 2.4
system.hw.macaddr[] interface параметар
system.sw.packages[] regexp параметар
system.sw.packages.get[] regexp параметар
vfs.dir.count[] regex_incl, regex_excl, regex_excl_dir параметри
vfs.dir.get[] regex_incl, regex_excl, regex_excl_dir параметри
vfs.dir.size[] regex_incl, regex_excl, regex_excl_dir параметри
vfs.file.regexp[] Yes regexp параметар
vfs.file.regmatch[]
web.page.regexp[]
SNMP замке
snmptrap[] Yes Yes No regexp параметар
Предобрада вредности ставке Yes No No pattern параметар
Функције за окидадче/израчунате ставке
count() Yes Yes Yes pattern ако је параметар operator regexp или * iregexp*
countunique() Yes Yes
find() Yes Yes
logeventid() Yes Yes No pattern параметар
logsource()
Откривање ниског нивоа
Филтери Yes Yes No Поље регуларног израза
Замене Yes No У опцијама подударности, не одговара за услове Операције
Услови акције Yes No No У подударности, не подудара се опцијама за Име домаћина и Метаподатке домаћина условима ауторегистрације
Скрипте Yes Yes No Правило за потврду уноса поље
Веб надгледање Yes No Yes Променљиве са префиксом regex:
Обавезан стринг поље
Контекст корисничког макроа Yes No No У контексту макроа са префиксом regex:
Макро функције
regsub() Yes No No pattern параметар
iregsub()
Мапирање иконица Yes Yes No Поље израза
Мапирање вредности Yes No No Вредност поље ако је тип мапирања regexp