1 Макро функције

Преглед

Макро функције нуде могућност прилагођавања вредности macro (на пример, скраћивање или издвајање одређених подстрингова), што олакшава рад са њима.

Синтакса макро функције је:

 {macro.func(params)}

где

  • macro - макро који треба прилагодити;
  • func - функција коју треба применити (погледајте supported functions);
  • params - листа параметара функција раздвојених зарезима, који морају бити под двоструким наводницима ако:
  • почињу размаком или двоструким наводницима;
  • садрже затварајуће заграде или зарез.

На пример:

 {{TIME}.fmttime(format,time_shift)}
        {{ITEM.VALUE}.regsub(pattern, output)}
        {{$USERMACRO}.regsub(pattern, output)}
        {{#LLDMACRO}.regsub(pattern, output)}

Макро функције су подржане за

Макро функције се могу користити на свим локацијама које подржавају наведене макрое. Ово важи осим ако није експлицитно наведено да се очекује само макро (на пример, приликом конфигурисања макроа хоста или правила откривања ниског нивоа филтери).

Подржава се једна функција по макроу; више макро функција у ланцу није подржано.

Погледајте примере избегавања за случајеве када се макро функције користе унутар других контекста (функција, кључ ставке, други макро итд.).

Подржане функције

Функције су наведене без додатних информација. Кликните на функцију да бисте видели све детаље.

Function Description
btoa Кодирање вредности макроа у Base64 кодирање.
fmtnum Форматирање броја за контролу броја цифара које се штампају после децималне тачке.
fmttime Форматирање времена.
htmldecode Декодирање вредности макроа из HTML кодирања.
htmlencode Кодирање вредности макроа у HTML кодирање.
iregsub Издвајање подстринга помоћу подударања регуларног израза (без разлике између великих и малих слова).
lowercase Трансформација знакова вредности макроа у мала слова.
regrepl Замена карактера/подстринга у вредности макроа.
regsub Издвајање подстринга помоћу регуларног израза (разликовање великих и малих слова).
tr Транслитерација знакова вредности макроа.
uppercase Трансформација знакова вредности макроа у велика слова.
urldecode Декодирање вредности макроа из URL кодирања.
urlencode Кодирање вредности макроа у URL кодирање.

Детаљи функције

Опционални параметри функције су означени са < >.

btoa

Кодирање макро вредности у Base64 кодирање. Base64 кодирање је метод за представљање бинарних података као текста, користан за чување и безбедан пренос бинарног садржаја преко текстуалних протокола.

Пример:

{{ITEM.VALUE}.btoa()} - ће Base64 кодирати вредност попут "zabbix" у "emFiYml4"

fmtnum(digits)

Форматирање броја за контролу броја цифара које се штампају после децималног зареза.

Параметри:

  • digits - број цифара после децималног зареза. Важећи опсег: 0-20. Завршне нуле неће бити произведене.

Примери:

{{ITEM.VALUE}.fmtnum(2)} - вратиће "24.35" од примљене вредности од "24.3483523" {{ITEM.VALUE}.fmtnum(0)} - вратиће "24" од примљене вредности од "24.3483523"

fmttime(format,<time_shift>)

Форматирање времена.
Имајте на уму да се ова функција може користити са макроима који се решавају у вредност у једном од следећих временских формата:

  • hh:mm:ss
  • yyyy-mm-ddThh:mm:ss[tz] (ISO8601 standard)
  • UNIX временска ознака

Параметри:

  • format - обавезни стринг формата, компатибилан са форматирањем функције strftime;
  • time_shift (опционо) - временски помак примењен на време пре форматирања; треба да почиње са -<N><time_unit> или +<N><time_unit>, где је:
  • N - број временских јединица за додавање или одузимање;
  • временска_јединица - h (сат), d (дан), w (недеља), M (месец) или y (година).

Коментари:

  • Параметар time_shift подржава вишестепене временске операције и може да садржи /<time_unit> за померање на почетак временске јединице (/d - поноћ, /w - 1. дан у недељи (понедељак), /M - 1. дан у месецу, итд.). Примери: -1w - тачно 7 дана уназад; -1w/w - понедељак претходне недеље; -1w/w+1d - уторак претходне недеље.
  • Временске операције се рачунају слева надесно без приоритета. На пример, -1M/d+1h/w ће бити рашчлањено као ((-1M/d)+1h)/w.

Примери:

{{TIME}.fmttime(%B)} - вратиће "Октобар" из примљене вредности "12:36:01" {{TIME}.fmttime(%d %B,-1M/M)} - вратиће "1. септембар" из примљене вредности "12:36:01"

htmldecode

Декодирање макро вредности из HTML кодирања.

Подржани су следећи знакови:

Value Decoded value
& &
< <
> >
" "
' '
' '

Пример:

{{ITEM.VALUE}.htmldecode()} - ће HTML-декодирати вредност попут "<" у "<"

htmlencode

Кодирање макро вредности у HTML кодирање.

Подржани су следећи знакови:

Value Encoded value
& &
< <
> >
" "
' '

Пример:

{{ITEM.VALUE}.htmlencode()} - ће HTML-кодирати знак попут "<" у "<"

iregsub(pattern,output)

Издвајање подстринга помоћу подударања регуларног израза (без разлике између великих и малих слова).

Параметри:

  • pattern - регуларни израз који треба подударати;
  • output - опције излаза. \1 - \9 резервисани знакови су подржани за групе за снимање. \0 враћа подударни текст.

Коментари:

  • Ако нема подударања за регуларни израз, функција не враћа ништа;
  • Ако је образац функције нетачан регуларни израз, макро се евалуира као 'UNKNOWN' (осим за макрое за откривање ниског нивоа, у ком случају ће функција бити игнорисана, а макро ће остати нерешен);
  • Референце на непостојеће групе за снимање у заменском стрингу се замењују празним стрингом.

Пример:

{{ITEM.VALUE}.iregsub("fail|error|fault|problem","ERROR")} - решиће се као "ERROR" ако се приме подстрингови "fail", "error", "fault" или "problem" (не разликује велика и мала слова); ништа ако нема подударања

lowercase

Трансформација свих макро вредности у мала слова. Ради са једнобајтним скуповима знакова (као што је ASCII) и не подржава UTF-8.

Пример:

{{ITEM.VALUE}.lowercase()} - трансформисаће вредност попут "Zabbix SERVER" у "zabbix server" (мала слова)

regrepl(pattern,replacement,<pattern2>,<replacement2>,...)

Замена карактера/подстринга у макро вредности.

Параметри:

  • pattern - регуларни израз који треба да се подудара;
  • replacement - стринг за замену. \1 - \9 Чувари места су подржани у стринговима за замену за групе за снимање.

Коментари:

  • Шаблони и замене се обрађују секвенцијално, при чему се сваки следећи пар примењује у складу са исходом претходне замене;
  • Референце на непостојеће групе за снимање у стрингу за замену се замењују празним стрингом.

Примери:

{{ITEM.VALUE}.regrepl("oldParam", "newParam")} - замениће "oldParam" са "newParam" {{ITEM.VALUE}.regrepl("([^a-z])","\\1")} - сви знакови који нису слова биће избегнути обрнутом косом цртом {$THRESHOLD:"{{#FSNAME}.regrepl("\$","")}"} - уклониће завршну обрнуту косу црту (на пример, да би се заменило "C:" са "C:") {{ITEM.VALUE}.regrepl("_v1.0", "_v2.0", "(final)", "")} - замениће више делова у вредности ставке

regsub(pattern,output)

Издвајање подстринга помоћу подударања регуларног израза (разликује велика и мала слова).

Параметри:

  • pattern - регуларни израз који треба подударати;
  • output - опције излаза. \1 - \9 резервисани знакови су подржани за групе за снимање. \0 враћа подударни текст.

Коментари:

  • Ако нема подударања за регуларни израз, функција не враћа ништа;
  • Ако је образац функције нетачан регуларни израз, макро се евалуира као 'UNKNOWN' (осим за макрое за откривање ниског нивоа, у ком случају ће функција бити игнорисана, а макро ће остати нерешен);
  • Референце на непостојеће групе за снимање у заменском стрингу се замењују празним стрингом.

Примери:

{{ITEM.VALUE}.regsub("^([0-9]+)", Problem ID: \1)} - решиће се као "ID проблема: 123" ако се прими вредност попут "123 Линија дневника" {{ITEM.VALUE}.regsub("fail|error|fault|problem","ERROR")} - решиће се као "ГРЕШКА" ако се приме подстрингови "неуспех", "грешка", "грешка" или "проблем" (разликују се велика и мала слова); ништа ако нема подударања

Погледајте више примера.

tr(characters,replacement)

Транслитерација знакова макро вредности.

  • characters - скуп знакова које треба заменити;
  • replacement - скуп позиционо одговарајућих знакова за замену.

Примери:

{{ITEM.VALUE}.tr(abc, xyz)} - замениће сва појављивања "a" са "x", "b" са "y", "c" са "z" {{ITEM.VALUE}.tr(abc, xyzq)} - замениће сва појављивања "a" са "x", "b" са "y", "c" са "z" ("q" се игнорише) {{ITEM.VALUE}.tr(abcde, xyz)} - замениће сва појављивања "a" са "x", "b" са "y", "c" са "z", "d" са "z", "e" са "z" (тј. xyzzz) {{ITEM.VALUE}.tr("\'", "/"")} - замениће сва појављивања обрнуте косе црте косом цртама, а једноструке наводнике двоструким наводницима {{ITEM.VALUE}.tr(A-Z,a-z)} - конвертоваће сва слова у мала слова {{ITEM.VALUE}.tr(0-9a-z,)} - замениће све бројеве и мала слова са "" {{ITEM.VALUE}.tr(0-9,ab)} - замениће сва појављивања броја 0 са "a", и сва појављивања бројева 1, 2, 3, 4, 5, 6, 7, 8 и 9 са "b" {{ITEM.VALUE}.tr(0-9abcA-L,)} - замениће све бројеве, знакове "abc" и опсег A-L са "" {{ITEM.VALUE}.tr("","")} - замениће појављивања краја реда са {{ITEM.VALUE}.tr("e", "")} - замениће сва "e" знаковима краја реда

Да бисте укључили литералне знакове:

обрнута коса црта - мора се избегавати као \ једноструки наводник - мора се избегавати као ' двоструки наводник - мора се избегавати као "

Подржано избегавање Низ са обрнутом косом цртом:

\\ => \ - двострука обрнута коса црта у једноструку обрнуту косу црту \a => - упозорење \b => брисање уназад \f => померање странице \n => - нови ред \r => враћање \t => хоризонтални табулатор \v => вертикални табулатор

uppercase

Трансформација свих макро вредности у велика слова. Ради са једнобајтним скуповима знакова (као што је ASCII) и не подржава UTF-8.

Пример:

{{ITEM.VALUE}.uppercase()} - трансформисаће вредност попут "Zabbix Server" у "ZABBIX SERVER" (велика слова)

urldecode

Декодирање макро вредности из URL кодирања.

Пример:

{{ITEM.VALUE}.urldecode()} - декодираће URL вредност попут "%2F" у "/"

urlencode

Кодирање макро вредности у URL кодирање.

Пример:

{{ITEM.VALUE}.urlencode()} - ће URL-кодирати знак попут "/" у "%2F"

Додатни примери

Табела испод приказује више примера коришћења макро функција.

Macro function Received value Output
{{ITEM.VALUE}.regsub(^[0-9]+, Проблем)} 123Линија евиденције Проблем
{{ITEM.VALUE}.regsub("^([0-9]+)", "Проблем")} 123 Линија евиденције Проблем
{{ITEM.VALUE}.regsub(".*", "ID проблема: \1")} Линија евиденције ID проблема:
{{ITEM.VALUE}.regsub("^(\w+).*?([0-9]+)", " ID проблема: \1_\2 ")} MySQL се срушио, грешка бр. 123 ID проблема: MySQL\_123
{{ITEM.VALUE}.regsub("([1-9]+", "ID проблема: \1")} 123 Линија евиденције НЕПОЗНАТО (неважећи регуларни израз)
{{#IFALIAS}.regsub("(.*)_([0-9]+)", \1)} customername_1 customername
{{#IFALIAS}.regsub("(.*)_([0-9]+)", \2)} customername_1 1
{{#IFALIAS}.regsub("(.*)_([0-9]+", \1)} customername_1 {{#IFALIAS}.regsub("(.*)_([0-9]+", \1)} (неважећи регуларни израз)
{$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \1)}"} customername_1 {$MACRO:"имекупца"}
{$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \2)}"} customername_1 {$MACRO:"1"}
{$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+\", \1)}"} customername_1 {$MACRO:"{{#M}.regsub(\"(.*)_([0-9]+\", \1)}"} (неважећи регуларни израз)
"{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+)\\", \1)}\"}" customername_1 "{$MACRO:\"имекупца\"}"
"{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+)\\", \2)}\"}" customername_1 "{$MACRO:\"1\"}"
"{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+\\", \1)}\"}" customername_1 "{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+\\", \1)}\"}" (неважећи регуларни израз)
Приказ пуних вредности ставки

Дуге вредности решених макроа {ITEM.VALUE} и {ITEM.LASTVALUE} за текстуалне/лог ставке су скраћене на 20 знакова на неким локацијама у фронтенду. Да бисте видели пуне вредности ових макроа, можете користити макро функције, нпр.:

{{ITEM.VALUE}.regsub("(.)", \1)} {{ITEM.LASTVALUE}.regsub("(.)", \1)}

Погледајте такође: {ITEM.VALUE} и {ITEM.LASTVALUE} детаљи макроа.