Макро функције нуде могућност прилагођавања вредности macro (на пример, скраћивање или издвајање одређених подстрингова), што олакшава рад са њима.
Синтакса макро функције је:
{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 кодирање. |
Опционални параметри функције су означени са < >.
Кодирање макро вредности у Base64 кодирање. Base64 кодирање је метод за представљање бинарних података као текста, користан за чување и безбедан пренос бинарног садржаја преко текстуалних протокола.
Пример:
{{ITEM.VALUE}.btoa()} - ће Base64 кодирати вредност попут "zabbix" у "emFiYml4"
Форматирање броја за контролу броја цифара које се штампају после децималног зареза.
Параметри:
Примери:
{{ITEM.VALUE}.fmtnum(2)} - вратиће "24.35" од примљене вредности од "24.3483523" {{ITEM.VALUE}.fmtnum(0)} - вратиће "24" од примљене вредности од "24.3483523"
Форматирање времена.
Имајте на уму да се ова функција може користити са макроима који се решавају у вредност у једном од следећих временских формата:
hh:mm:ss
yyyy-mm-ddThh:mm:ss[tz]
(ISO8601 standard)Параметри:
strftime
;-<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"
Декодирање макро вредности из HTML кодирања.
Подржани су следећи знакови:
Value | Decoded value |
---|---|
& |
& |
< |
< |
> |
> |
" |
" |
' |
' |
' |
' |
Пример:
{{ITEM.VALUE}.htmldecode()} - ће HTML-декодирати вредност попут "<" у "<"
Кодирање макро вредности у HTML кодирање.
Подржани су следећи знакови:
Value | Encoded value |
---|---|
& |
& |
< |
< |
> |
> |
" |
" |
' |
' |
Пример:
{{ITEM.VALUE}.htmlencode()} - ће HTML-кодирати знак попут "<" у "<"
Substring extraction by a regular expression match (case-insensitive).
Parameters:
Comments:
Трансформација свих макро вредности у мала слова. Ради са једнобајтним скуповима знакова (као што је ASCII) и не подржава UTF-8.
Пример:
{{ITEM.VALUE}.lowercase()} - трансформисаће вредност попут "Zabbix SERVER" у "zabbix server" (мала слова)
Замена карактера/подстринга у макро вредности.
Имајте на уму да је ова функција подржана само са библиотеком libpcre2. Ако је Zabbix сервер/прокси компајлиран са libpcre
, ова функција ће вратити НЕПОЗНАТО.
Параметри:
Коментари:
Примери:
{{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)", "")} - замениће више делова у вредности ставке
Издвајање подстринга помоћу подударања регуларног израза (разликује велика и мала слова).
Параметри:
Коментари:
Примери:
{{ITEM.VALUE}.regsub("^([0-9]+)", Problem ID: \1)} - решиће се као "ID проблема: 123" ако се прими вредност попут "123 Линија дневника" {{ITEM.VALUE}.regsub("fail|error|fault|problem","ERROR")} - решиће се као "ГРЕШКА" ако се приме подстрингови "неуспех", "грешка", "грешка" или "проблем" (разликују се велика и мала слова); ништа ако нема подударања
Погледајте више примера.
Transliteration of macro value 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
Трансформација свих макро вредности у велика слова. Ради са једнобајтним скуповима знакова (као што је ASCII) и не подржава UTF-8.
Пример:
{{ITEM.VALUE}.uppercase()} - трансформисаће вредност попут "Zabbix Server" у "ZABBIX SERVER" (велика слова)
Декодирање макро вредности из URL кодирања.
Пример:
{{ITEM.VALUE}.urldecode()} - декодираће URL вредност попут "%2F" у "/"
Кодирање макро вредности у URL кодирање.
Пример:
{{ITEM.VALUE}.urlencode()} - ће URL-кодирати знак попут "/" у "%2F"
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) |