Функции макросов дают возможность модификации значений макросов.
Иногда макрос может раскрыться в значение, с которым не очень легко работать. Значение может быть длинным или содержать определённую подстроку, которая вас интересует, и которую вы бы хотели извлечь. Это та задача, где функции макросов могут быть полезны.
Синтаксис функции макросов:
где:
Параметры необходимо заключать в кавычки, если они:
)
") или запятую (",
").Например:
{{TIME}.fmttime(формат,сдвиг_времени)}
{{ITEM.VALUE}.regsub(шаблон, вывод)}
{{#LLD_МАКРОС}.regsub(шаблон, вывод)}
Опциональные параметры функций обозначены угловыми скобками (< >).
ФУНКЦИЯ | |||
---|---|---|---|
Описание | Параметры | Поддерживается для | |
fmtnum (цифры) | |||
Форматирование числа для управления количеством цифр, выводимых после десятичной точки. | цифры - количество цифр после десятичной точки. Допустимый диапазон: 0-20 (с Zabbix 6.0.21). Конечные нули будут обрезаны. | {ITEM.VALUE} {ITEM.LASTVALUE} Макросы выражений |
|
fmttime (формат,<сдвиг_времени>) | |||
Формат времени. | формат - обязательный формат строки, совместимый с функцией форматирования strftime сдвиг_времени - сдвиг времени, применяемый к значению времени до форматирования; должен начинаться с -<N><единица_времени> или +<N><единица_времени> , гдеN - количество единиц времени для добавления или вычитания; единица_времени - h (час), d (день), w (неделя), M (месяц) или y (год). С Zabbix 5.4, параметр сдвиг_времени поддерживает многоэтапные операции со временем и может включать /<единица_времени> для сдвига к началу единицы времени (/d - полночь, /w - первый день недели (Понедельник), /M - первый день месяца и т.д.). Примеры:-1w - ровно 7 дней назад;-1w/w - понедельник предыдущей недели;-1w/w+1d - вторник предыдущей недели.Обратите внимание, что операции времени вычисляются слева направо, без учёта приоритетов. Например, -1M/d+1h/w будет проанализирован как ((-1M/d)+1h)/w . |
{TIME} | |
iregsub (шаблон,вывод) | |||
Извлечение подстроки совпадением с регулярным выражением (без учёта регистра). | шаблон - регулярное выражение для поиска совпадения вывод - опции вывода. Для захвата групп поддерживаются местозаменители \1 - \9. Заменитель \0 вернёт совпавший текст. |
{ITEM.VALUE} {ITEM.LASTVALUE} Макросы низкоуровневого обнаружения (за исключением фильтра низкоуровневого обнаружения) |
|
regsub (шаблон,вывод) | |||
Извлечение подстроки совпадением с регулярным выражением (с учётом регистра). | шаблон - регулярное выражение для поиска совпадения вывод - опции вывода. Для захвата групп поддерживаются местозаменители \1 - \9. Заменитель \0 вернёт совпавший текст. |
{ITEM.VALUE} {ITEM.LASTVALUE} Макросы низкоуровневого обнаружения (за исключением фильтра низкоуровневого обнаружения) |
Если функция используется в поддерживаемых местах, но применена к макросу, который не поддерживает функции макросов, тогда макрос раскроется в «НЕИЗВЕСТНО».
Если шаблон не является корректным регулярным выражением, тогда макрос раскрывается в «НЕИЗВЕСТНО» (за исключением макросов низкоуровневого обнаружения, где в этом случае функция будет проигнорирована и макрос останется нераскрытым)
Если функция макросов применяется к макросу в местах, которые не поддерживают функции макросов, тогда функция будет игнорироваться.
Способы использования функции макросов для модификации значений макросов проиллюстрированы следующими примерами полученных значений:
Полученное значение | Макрос | Вывод |
---|---|---|
24.3413523 |
{{ITEM.VALUE}.fmtnum(2)} |
24.34 |
24.3413523 |
{{ITEM.VALUE}.fmtnum(0)} |
24 |
12:36:01 |
{{TIME}.fmttime(%B)} |
October |
12:36:01 |
{{TIME}.fmttime(%d %B,-1M/M)} |
1 September |
123Log line |
{{ITEM.VALUE}.regsub(^[0-9]+, Problem)} |
Problem |
123 Log line |
{{ITEM.VALUE}.regsub("^([0-9]+)", "Problem")} |
Problem |
123 Log line |
{{ITEM.VALUE}.regsub("^([0-9]+)", Problem ID: \1)} |
Problem ID: 123 |
Log line |
{{ITEM.VALUE}.regsub(".*", "Problem ID: \1")} |
''Problem ID: '' |
MySQL crashed errno 123 |
{{ITEM.VALUE}.regsub("^(\w+).*?([0-9]+)", " Problem ID: \1_\2 ")} |
'' Problem ID: MySQL_123 '' |
123 Log line |
{{ITEM.VALUE}.regsub("([1-9]+", "Problem ID: \1")} |
*НЕИЗВЕСТНО* (ошибочное регулярное выражение) |
customername_1 |
{{#IFALIAS}.regsub("(.*)_([0-9]+)", \1)} |
customername |
customername_1 |
{{#IFALIAS}.regsub("(.*)_([0-9]+)", \2)} |
1 |
customername_1 |
{{#IFALIAS}.regsub("(.*)_([0-9]+", \1)} |
{{#IFALIAS}.regsub("(.*)_([0-9]+", \1)} (ошибочное регулярное выражение) |
customername_1 |
{$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \1)}"} |
{$MACRO:"customername"} |
customername_1 |
{$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \2)}"} |
{$MACRO:"1"} |
customername_1 |
{$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+\", \1)}"} |
{$MACRO:"{{#M}.regsub(\"(.*)_([0-9]+\", \1)}"} (ошибочное регулярное выражение) |
customername_1 |
"{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+)\\", \1)}\"}" |
"{$MACRO:\"customername\"}" |
customername_1 |
"{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+)\\", \2)}\"}" |
"{$MACRO:\"1\"}") |
customername_1 |
"{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+\\", \1)}\"}" |
"{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+\\", \1)}\"}") (ошибочное регулярное выражение) |
Длинные значения раскрытых макросов {ITEM.VALUE} и {ITEM.LASTVALUE} для текстовых или журнальных элементов данных в некоторых местах веб-интерфейса обрезаются до 20 символов. Для просмотра полных значений этих макросов вы можете использовать функции макросов, например:
{{ITEM.VALUE}.regsub("(.*)", \1)}
{{ITEM.LASTVALUE}.regsub("(.*)", \1)}
Смртрите также: более подробная информация о макросах {ITEM.VALUE} и {ITEM.LASTVALUE}.