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

Преглед

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

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

{macro.func(params)}

где је

  • ** macro** - макро за прилагођавање;
  • ** func** - функција коју треба применити (погледајте подржане функције);
  • ** 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 кодирање.

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

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

{macro.func(params)}
  • macro - макро за прилагођавање, на пример {ITEM.VALUE} или {#LLDMACRO};
  • func - функција коју треба применити;
  • params - листа параметара функције раздвојена зарезима, која се мора навести ако:
    • почните са размаком или двоструким наводницима;
    • садрже завршне заграде "``" или зарез.

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

btoa

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

Пример:

{{ITEM.VALUE}.btoa()} - will Base64-encode a value like "zabbix" into "emFiYml4"

Ова функција је подржана од Zabbix-а 7.0.4.

fmtnum(digits)

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

Параметри:

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

Примери:

{{ITEM.VALUE}.fmtnum(2)} - will return "24.35" from a received value of "24.3483523"
       {{ITEM.VALUE}.fmtnum(0)} - will return "24" from a received value of "24.3483523"
fmttime(format,<time_shift>)

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

  • hh:mm:ss
  • yyyy-mm-ddThh:mm:ss[tz] (ISO8601 standard)
  • UNIX timestamp

Параметри:

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

Коментари:

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

Примери:

  {{TIME}.fmttime(%B)} - will return "October" from a received value of "1633098961"
         {{TIME}.fmttime(%d %B,-1M/M)} - will return "1 September" from a received value of "1633098961"
htmldecode

Декодирање вредности макроа из HTML кодирања. Ова функција је подржана од Zabbix-а 7.0.4.

Следећи карактери су подржани:

Value Decoded value
&amp; &
&lt; <
&gt; >
&quot; "
&#039; '
&#39; '

Пример:

{{ITEM.VALUE}.htmldecode()} - will HTML-decode a value like "&lt;" into "<"
htmlencode

Декодирање вредности макроа из HTML кодирања. Ова функција је подржана од Zabbix-а 7.0.4.

Следећи карактери су подржани:

Value Encoded value
& &amp;
< &lt;
> &gt;
" &quot;
' &#39;

Пример:

{{ITEM.VALUE}.htmlencode()} - will HTML-encode a character like "<" into "&lt;"
iregsub(pattern,output)

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

Параметри:

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

Коментари:

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

Пример:

{{ITEM.VALUE}.iregsub("fail|error|fault|problem","ERROR")} - will resolve to "ERROR" if "fail", "error", "fault", or "problem" substrings are received (case-insensitive); will return an empty string if there is no match
lowercase

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

Пример:

{{ITEM.VALUE}.lowercase()} – трансформишите вредност као што је "Zabbix SERVER" у "zabbix server" (мала слова)
regrepl(pattern,replacement,<pattern2>,<replacement2>,...)

Замена карактера/подниза у вредности макроа. Напомена да је ова функција подржана само са библиотеком libpcre2. Ако је Zabbix сервер/прокси компајлиран са libpcre, ова функција ће вратити UNKNOWN. Ова функција је подржана од Zabbix-а 7.0.4.

Параметри:

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

Коментари:

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

Примери:

{{ITEM.VALUE}. regrepl("oldParam", "newParam")} - ће заменити "oldParam" са "newParam".
       {{ITEM.VALUE}.regrepl("([^а-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]+)", ID проблема: \1)} - решиће се као "ID проблема: 123" ако је примљена вредност попут "123 Log line"{{ITEM.VALUE}.regsub("fail|error|fault|problem","ERROR")} - решиће се као "ERROR" ако су примљени подстрингови "fail", "error", "fault" или "problem" (разликује велика и мала слова);
       вратиће празан стринг ако нема подударања

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

tr(characters,replacement)

Транслитерација карактера вредности макроа. Ова функција је подржана од Zabbix-а 7.0.4.

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

Примери:

{{ITEM.VALUE}.tr(abc, xyz)} - замениће сва појављивања "а" са "x", "b" са "y", "c" са "z"
       {{ITEM.VALUE}.tr(abc, xyzq)} - замениће сва појављивања "а" са "x", "b" са "y", "c" са "z" ("q" се занемарује)
       {{ITEM.VALUE}.tr(abcde, xyz)} - замениће сва појављивања "a" са "x", "b" са "y", "c" са "z", "d" са "z" , "е" са "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 са "а" и замениће сва појављивања 1, 2, 3, 4, 5, 6, 7, 8 и 9 са "b"
       {{ITEM.VALUE}.tr(0-9abcA-L,*)} – замениће све бројеве, "abc" карактере и опсег А-L са "*"
       {{ITEM.VALUE}.tr("\n","*")} - замениће појављивања на крају реда са *
       {{ITEM.VALUE}.tr("e", "\n")} - замениће све "е" са крајем реда

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

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

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

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

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

Пример:

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

Декодирање вредности макроа из URL кодирања. Ова функција је подржана од Zabbix-а 7.0.4.

Пример:

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

Декодирање вредности макроа из URL кодирања. Ова функција је подржана од Zabbix-а 7.0.4.

Пример:

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

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

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

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 (неважећи регуларни израз)
{{#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:"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)}"} (неважећи регуларни израз)
"{$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)}\"}" (неважећи регуларни израз)
Видите комплетне вредности ставке

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

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

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