This is a translation of the original English documentation page. Help us make it better.

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)

Substring extraction by a regular expression match (case-insensitive).

Parameters:

  • pattern - the regular expression to match;
  • output - the output options. \1 - \9 placeholders are supported to capture groups. \0 returns the matched text.

Comments:

  • If the function pattern is an incorrect regular expression, then the macro evaluates to 'UNKNOWN' (except for low-level discovery macros, in which case the function will be ignored, and the macro will remain unresolved).
lowercase

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

Пример:

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

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

Замена карактера/подстринга у макро вредности.
Имајте на уму да је ова функција подржана само са библиотеком libpcre2. Ако је Zabbix сервер/прокси компајлиран са libpcre, ова функција ће вратити НЕПОЗНАТО.

Параметри:

  • 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)

Transliteration of macro value characters.

  • characters - the set of characters to replace;
  • replacement - the set of positionally corresponding replacement characters.

Examples:

{{ITEM.VALUE}.tr(abc, xyz)} - replace all occurrences of "a" with "x", "b" with "y", "c" with "z"
       {{ITEM.VALUE}.tr(abc, xyzq)} - replace all occurrences of "a" with "x", "b" with "y", "c" with "z" ("q" is ignored)
       {{ITEM.VALUE}.tr(abcde, xyz)} - replace all occurrences of "a" with "x", "b" with "y", "c" with "z", "d" with "z", "e" with "z" (i.e. xyzzz)
       {{ITEM.VALUE}.tr("\\\'", "\/\"")} - replace all occurrences of backslash with forward slash, ' with "
       {{ITEM.VALUE}.tr(A-Z,a-z)} - convert all letters to lowercase
       {{ITEM.VALUE}.tr(0-9a-z,*)} - replace all numbers and lowercase letters with "*"
       {{ITEM.VALUE}.tr(0-9,ab)} - replace all occurrences of 0 with "a", and replace all occurrences of 1, 2, 3, 4, 5, 6, 7, 8, and 9 with "b"
       {{ITEM.VALUE}.tr(0-9abcA-L,*)} - replace all numbers, "abc" characters, and A-L range with "*"
       {{ITEM.VALUE}.tr("\n","*")} - replace end-of-line occurrences with *
       {{ITEM.VALUE}.tr("e", "\n")} - replace all "e" to end-of-line

To include literal characters:

backslash - must be escaped as \\
       single quote - must be escaped as \'
       double quote - must be escaped as \"

Supported escape sequences with backslash:

\\\\ => \\ - double backslash to single backslash
       \\a  => \a - alert
       \\b  => \b - backspace
       \\f  => \f - form feed
       \\n  => \n - newline
       \\r  => \r - return
       \\t  => \t - horizontal tab
       \\v  => \v - vertical tab
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"

Additional examples

The table below shows more examples of using macro functions.

Macro function Received value Output
{{ITEM.VALUE}.regsub(^[0-9]+, Problem)} 123Log line Problem
{{ITEM.VALUE}.regsub("^([0-9]+)", "Problem")} 123 Log line Problem
{{ITEM.VALUE}.regsub(".*", "Problem ID: \1")} Log line Problem ID:
{{ITEM.VALUE}.regsub("^(\w+).*?([0-9]+)", " Problem ID: \1_\2 ")} MySQL crashed errno 123 Problem ID: MySQL\_123 
{{ITEM.VALUE}.regsub("([1-9]+", "Problem ID: \1")} 123 Log line UNKNOWN (invalid regular expression)
{{#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)} (invalid regular expression)
{$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \1)}"} customername_1 {$MACRO:"customername"}
{$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \2)}"} customername_1 {$MACRO:"1"}
{$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+\", \1)}"} customername_1 {$MACRO:"{{#M}.regsub(\"(.*)_([0-9]+\", \1)}"} (invalid regular expression)
"{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+)\\", \1)}\"}" customername_1 "{$MACRO:\"customername\"}"
"{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+)\\", \2)}\"}" customername_1 "{$MACRO:\"1\"}"
"{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+\\", \1)}\"}" customername_1 "{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+\\", \1)}\"}" (invalid regular expression)