10 Regulārās izteiksmes

Pārskats

Zabbix atbalsta Perl Compatible Regular Expressions (PCRE, PCRE2).

Ir divi veidi, kā izmantot regulārās izteiksmes Zabbix:

  • manuāli ievadīt regulāro izteiksmi
  • izmantot Zabbix izveidotu globālo regulāro izteiksmi

Regulārās izteiksmes

Atbalstītajās vietās varat manuāli ievadīt regulāro izteiksmi. Ņemiet vērā, ka izteiksme nedrīkst sākties ar @, jo šis simbols tiek izmantots Zabbix globālo regulāro izteiksmju atsaucēm.

Izmantojot regulārās izteiksmes, ir iespējams izsmelt steku. Plašāku informāciju skatiet pcrestack man lapā.

Ņemiet vērā, ka vairākrindu atbilstības gadījumā enkuri ^ un $ atbilst attiecīgi katras rindas sākumam/beigām, nevis visas virknes sākumam/beigām.

Skatiet arī pareizas ekrānēšanas piemērus dažādos kontekstos.

Globālās regulārās izteiksmes

Zabbix lietotāja saskarnē ir pieejams paplašināts redaktors sarežģītu regulāro izteiksmju izveidei un testēšanai.

Kad regulārā izteiksme šādā veidā ir izveidota, to var izmantot vairākās vietās lietotāja saskarnē, atsaucoties uz tās nosaukumu ar prefiksu @, piemēram, \@mycustomregexp.

Lai izveidotu globālu regulāro izteiksmi:

  • Dodieties uz: Administration → General
  • Nolaižamajā sarakstā atlasiet Regular expressions
  • Noklikšķiniet uz New regular expression

Cilne Expressions ļauj iestatīt regulārās izteiksmes nosaukumu un pievienot apakšizteiksmes.

Visi obligātie ievades lauki ir atzīmēti ar sarkanu zvaigznīti.

Parametrs Apraksts
Name Iestatiet regulārās izteiksmes nosaukumu. Ir atļautas jebkuras Unicode rakstzīmes.
Expressions Noklikšķiniet uz Add blokā Expressions, lai pievienotu jaunu apakšizteiksmi.
Expression type Atlasiet izteiksmes tipu:
Character string included - atbilst apakšvirknei
Any character string included - atbilst jebkurai apakšvirknei no atdalīta saraksta. Atdalītais saraksts ietver komatu (,), punktu (.) vai slīpsvītru (/).
Character string not included - atbilst jebkurai virknei, izņemot apakšvirkni
Result is TRUE - atbilst regulārajai izteiksmei
Result is FALSE - neatbilst regulārajai izteiksmei
Expression Ievadiet apakšvirkni/regulāro izteiksmi.
Delimiter Komats (,), punkts (.) vai slīpsvītra (/), ko izmanto teksta virkņu atdalīšanai regulārajā izteiksmē. Šis parametrs ir aktīvs tikai tad, ja ir atlasīts izteiksmes tips "Any character string included".
Case sensitive Izvēles rūtiņa, lai norādītu, vai regulārā izteiksme ir jutīga pret burtu lielajiem un mazajiem burtiem.

Slīpsvītra (/) izteiksmē tiek interpretēta burtiski, nevis kā atdalītājs. Tādējādi ir iespējams saglabāt izteiksmes, kas satur slīpsvītru, bez kļūdām.

Pielāgotas regulārās izteiksmes nosaukums Zabbix var saturēt komatus, atstarpes utt. Gadījumos, kad tas var radīt nepareizu interpretāciju atsaucē (piemēram, komats vienums atslēgas parametrā), visu atsauci var ievietot pēdiņās šādi: "\@My custom regexp for purpose1, purpose2".
Regulāro izteiksmju nosaukumus nedrīkst likt pēdiņās citās vietās (piemēram, LLD kārtulas īpašībās).

Cilnē Test regulāro izteiksmi un tās apakšizteiksmes var pārbaudīt, norādot testa virkni.

Rezultāti parāda katras apakšizteiksmes statusu un kopējo pielāgotās izteiksmes statusu.

Pielāgotās izteiksmes kopējo statusu nosaka Combined result. Ja ir definētas vairākas apakšizteiksmes, Zabbix izmanto loģisko operatoru AND, lai aprēķinātu Combined result. Tas nozīmē, ka, ja vismaz vienam Result ir False statuss, arī Combined result būs False statuss.

Noklusējuma globālās regulārās izteiksmes

Zabbix noklusējuma datu kopā ir iekļautas vairākas globālās regulārās izteiksmes.

Name Expression Matches
Failu sistēmas atklāšanai ^(btrfs|ext2|ext3|ext4|jfs|reiser|xfs|ffs|ufs|jfs|jfs2|vxfs|hfs|refs|apfs|ntfs|fat32|zfs)$ "btrfs" vai "ext2", vai "ext3", vai "ext4", vai "jfs", vai "reiser", vai "xfs", vai "ffs", vai "ufs", vai "jfs", vai "jfs2", vai "vxfs", vai "hfs", vai "refs", vai "apfs", vai "ntfs", vai "fat32", vai "zfs"
Tīkla saskarnes atklāšanai ^Software Loopback Interface Virknes, kas sākas ar "Software Loopback Interface".
^lo$ "lo"
^(In)?[Ll]oop[Bb]ack[0-9._]*$ Virknes, kas pēc izvēles sākas ar "In", pēc tam satur "L" vai "l", tad "oop", tad "B" vai "b", tad "ack", kam pēc izvēles var sekot jebkurš ciparu, punktu vai pasvītrojuma rakstzīmju skaits.
^NULL[0-9.]*$ Virknes, kas sākas ar "NULL", kam pēc izvēles seko jebkurš ciparu vai punktu skaits.
^[Ll]o[0-9.]*$ Virknes, kas sākas ar "Lo" vai "lo" un kam pēc izvēles seko jebkurš ciparu vai punktu skaits.
^[Ss]ystem$ "System" vai "system"
^Nu[0-9.]*$ Virknes, kas sākas ar "Nu", kam pēc izvēles seko jebkurš ciparu vai punktu skaits.
Krātuves ierīces SNMP atklāšanai ^(Physical memory|Virtual memory|Memory buffers|Cached memory|Swap space)$ "Physical memory", vai "Virtual memory", vai "Memory buffers", vai "Cached memory", vai "Swap space"
Windows pakalpojumu nosaukumi atklāšanai ^(MMCSS|gupdate|SysmonLog|clr_optimization_v2.0.50727_32|clr_optimization_v4.0.30319_32)$ "MMCSS", vai "gupdate", vai "SysmonLog", vai virknes, piemēram, "clr_optimization_v2.0.50727_32" un "clr_optimization_v4.0.30319_32", kur punktu vietā var ievietot jebkuru rakstzīmi, izņemot jaunu rindu.
Windows pakalpojumu startēšanas stāvokļi atklāšanai ^(automatic|automatic delayed)$ "automatic" vai "automatic delayed"

Piemēri

Piemērs 1

Šādas izteiksmes izmantošana zema līmeņa atklāšanā, lai atklātu datubāzes, izņemot datubāzi ar noteiktu nosaukumu:

^TESTDATABASE$

regexp\_expr\_2.png

Izvēlētais Izteiksmes tips: "Rezultāts ir FALSE". Neatbilst nosaukumam, kas satur virkni "TESTDATABASE".

Piemērs ar iekļautu regex modifikatoru

Šādas regulārās izteiksmes izmantošana, kas ietver iekļautu modifikatoru (?i), lai atbilstu rakstzīmēm "error":

(?i)error

regexp\_expr\_3a.png

Izvēlētais Izteiksmes tips: "Rezultāts ir TRUE". Rakstzīmes "error" tiek atbilstinātas.

Vēl viens piemērs ar iekļautu regex modifikatoru

Tālāk norādītās regulārās izteiksmes izmantošana, kas ietver vairākus iekļautos modifikatorus, lai atbilstu rakstzīmēm pēc noteiktas rindas:

(?<=match (?i)everything(?-i) after this line\n)(?sx).*# we add s modifier to allow . match newline characters

regexp\_expr\_4\_new.png

Izvēlētais izteiksmes tips: "Rezultāts ir TRUE". Rakstzīmes pēc noteiktas rindas tiek atbilstas.

g modifikatoru nevar norādīt rindā. Pieejamo modifikatoru sarakstu var atrast pcresyntax man lapā. Plašāku informāciju par PCRE sintaksi skatiet PCRE HTML dokumentācijā.

Regulāro izteiksmju atbalsts pēc atrašanās vietas

Atrašanās vieta Regulārā izteiksme Globālā regulārā izteiksme Vairākrindu atbilstība Komentāri
Aģenta vienumi
eventlog[] regexp, severity, source, eventid parametri
eventlog.count[] regexp, severity, source, eventid parametri
log[] regexp parametrs
log.count[]
logrt[] Jā/Nē regexp parametrs atbalsta abus, file_regexp parametrs atbalsta tikai neglobālās izteiksmes
logrt.count[]
proc.cpu.util[] cmdline parametrs
proc.get[]
proc.mem[]
proc.num[]
sensor[] device un sensor parametri Linux 2.4
system.hw.macaddr[] interface parametrs
system.sw.packages[] regexp parametrs
system.sw.packages.get[] regexp parametrs
vfs.dir.count[] regex_incl, regex_excl, regex_excl_dir parametri
vfs.dir.get[] regex_incl, regex_excl, regex_excl_dir parametri
vfs.dir.size[] regex_incl, regex_excl, regex_excl_dir parametri
vfs.file.regexp[] regexp parametrs
vfs.file.regmatch[]
web.page.regexp[]
SNMP trapi
snmptrap[] regexp parametrs
Vienuma vērtības priekšapstrāde pattern parametrs
Funkcijas trigeriem/aprēķinātajiem vienumiem
count() pattern parametrs, ja operator parametrs ir regexp vai iregexp
countunique()
find()
logeventid() pattern parametrs
logsource()
Zema līmeņa atklāšana
Filtri Lauks Regular expression
Aizstāšanas Opcijās matches, does not match nosacījumiem Operation
Darbību nosacījumi Opcijās matches, does not match automātiskās reģistrācijas nosacījumiem Host name un Host metadata
Skripti Lauks Input validation rule
Tīmekļa uzraudzība Variables ar prefiksu regex:
Lauks Required string
Lietotāja makro konteksts Makro kontekstā ar prefiksu regex:
Makro funkcijas
regsub() pattern parametrs
iregsub()
Saišu indikatori kartēs Lauks Pattern (teksta vienumiem)
Ikonu kartēšana Lauks Expression
Vērtību kartēšana Lauks Value, ja kartēšanas tips ir regexp