Za razumevanje definisanja uslova za alarmiranje pročitati članak Kompleksna varijabla!
Često postoji potreba da se alarmira na osnovu poređenja dva stringa. Kod SNMP monitora veliki broj OID upita vraća string kao vrednost. Potrebno je prepoznati da li u stringu koji je dobijen u odgovoru se sadrži neka vrednost i na osnovu toga alarmirati korisnika. Npr. potrebno je alarmirati ako se u rezultatu SNMP monitora pojavi string koji u sebi sadrži bilo gde sadrži string "error".
U članku Kompleksna varijabla je objašnjeno kako se definiše uslov za alarmiranje na osnovu numeričkih i logičkih vrednosti. Za korišćenje stringova kao uslova za alarmiranje potrebno je koristiti String funkcije str_equ
, str_cnt
i str_regex
.
str_equ
str_equ(param1, param2)
Funkcija str_equ
prima dva parametra. Funkcija ima vrednost true
ili 1
kada param1
celini jednak param2
; u suprotnom je false
ili 0
. Parametri param1
i param2
mogu da budu bilo string ili poziv nekoj od promenljivih monitora.
Primeri
str_equ( var(3), „Cat21“)
jetrue
ako jevar(3)
treća varijabla iz monitora i njena vrednost „Cat21“str_equ( var(3), var(4))
jetrue
ako su na monitoru definisane treća i četvrta varijabla i ako se u potpunosti poklapaju.
str_cnt
str_cnt(param1, param2)
Funkcija str_cnt
prima dva parametra. Funkcija ima vrednost true
ili 1
kada param1
sadrži ili je u celini jednak param2
; u suprotnom je false
ili 0
. Parametri param1
i param2
mogu da budu bilo string ili poziv nekoj od promenljivih monitora.
Primeri
jestr_cnt
( var(3), „Cat21“)true
ako jevar(3)
treća varijabla iz monitora i njena vrednost „Cat21.delta“
jestr_cnt
( var(3), var(4))true
ako su na monitoru definisane treća i četvrta varijabla i ako je varijablavar(4)
sadržana u varijablivar(3)
.
str_regex
str_regex(param1, regex)
Funkcija str_regex
prima dva parametra. Funkcija ima vrednost true
ili 1
kada param1
odgovara regularni izraz regex
; u suprotnom je false
ili 0
. Parametar param1
može da bude bilo string ili poziv nekoj od promenljivih monitora.
Primeri
str_regex( var(3), „.*Cat.*“)
je true ako jevar(3)
„Cat21.delta“ – ovaj izraz uparuje Cat u sredini nekog stringa;str_regex( var(3), „.+[1-9]+.+“)
je true ako jevar(3)
„Cat21.delta“ – ovaj izraz prolazi ako se postoji pojavljivanje jedne ili više cifara od 1 do 9 u sredini nekog stringastr_regex( var(3), „.+\\d+.+“)
je true ako jevar(3)
„Cat21.delta“ – ovaj izraz je logički jednak izrazu iz prethodnog primera s tim da je iskorišćena klasa karaktera "digit" -\d
. Obratiti pažnju da svaka kosa crta (koje se često koriste za specijalne karaktere u regularnim izrazima) mora da bude duplirana\\
zbog ograničenja u definisanju stringova u Javi. To znači da ako je potrebno pronaći pojavljivanje upravo karaktera kose crte preko regularnog izraza, u alarmu treba definisati četiri kose crte -\\
\\
.
Složenije korišćenje string funkcija
Moguće je u uslovu alarma korišćenje bilo koje od string funkcija i građenje složenih uslova korišćenjem aritmetičko-logičkih operacija.
Primer
str_regex(var(1), "[abc]+") && str_equ("opr", var(5)) && (5 >= 3 + var(12)) -
ovaj izraz je true ako je prva varijabla monitora sastavljena samo od jednog ili više karaktera "a" i/ili "b" i/ili "c" i ako je peta varijabla monitora upravo jednaka "opr" i ako je 5 veće ili jednako zbiru brojeva 3 i vrednosti dvanaeste promenljive monitora.