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“) je true ako je var(3) treća varijabla iz monitora i njena vrednost „Cat21“
  • str_equ( var(3), var(4)) je true 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

  • str_cnt( var(3), „Cat21“) je true ako je var(3) treća varijabla iz monitora i njena vrednost „Cat21.delta“
  • str_cnt( var(3), var(4)) je true ako su na monitoru definisane treća i četvrta varijabla i ako je varijabla var(4) sadržana u varijabli var(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 je var(3) „Cat21.delta“ – ovaj izraz uparuje Cat u sredini nekog stringa;
  • str_regex( var(3), „.+[1-9]+.+“) je true ako je var(3) „Cat21.delta“ – ovaj izraz prolazi ako se postoji pojavljivanje jedne ili više cifara od 1 do 9 u sredini nekog stringa
  • str_regex( var(3), „.+\\d+.+“) je true ako je var(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.