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()} - Base64-кодирајте вредност попут "zabbix" у "emFiYml4"

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

fmtnum(digits)

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

Параметри:

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

Примери:

Macro function Received value Output
{{ITEM.VALUE}.fmtnum(2)} 24.3413523 24.34
{{ITEM.VALUE}.fmtnum(0)} 24.3413523 24

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.

Примери:

Macro function Received value Output
{{TIME}.fmttime(%B)} 12:36:01 October
{{TIME}.fmttime(%d %B,-1M/M)} 12:36:01 1 September

htmldecode

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

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

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

Пример:

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

htmldecode

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

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

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

Пример:

{{ITEM.VALUE}.htmlencode()}HTML-декодирање вредности као што је "<" у "<"

iregsub(pattern,output)

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

Параметри:

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

Коментари:

– Ако је образац функције нетачан регуларни израз, макро се процењује на 'НЕПОЗНАТО' (осим макроа за откривање ниског нивоа, у ком случају ће функција бити занемарена, а макро ће остати нерешен).

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 враћа одговарајући текст.

Коментари:

– Ако је образац функције нетачан регуларни израз, макро се процењује на 'НЕПОЗНАТО' (осим макроа за откривање ниског нивоа, у ком случају ће функција бити занемарена, а макро ће остати нерешен).

Примери:

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("^([0-9]+)", Problem ID: \1)} 123 Log line Problem ID: 123
{{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)}\"}") (неважећи регуларни израз)

tr(characters,replacement)

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

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

Примери:

{{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 - form feed
       \\n  => \n - нови ред
       \\r  => \r - повратак
       \\t  => \t - хоризонтална картица
       \\v  => \v - вертикална картица

lowercase

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

Пример:

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

urldecode

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

Пример:

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

urldecode

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

Пример:

{{ITEM.VALUE}.urldecode()} - 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 (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)
Видите пуне вредности ставке

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

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

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