Макросы
СМ «Пульт» поддерживает встроенные и пользовательские макросы для различных ситуаций. Эффективное использование макросов упрощает настройку СМ «Пульт».
Актуальный список встроенных макросов по расположению использования опубликован в документации Zabbix 7.2:
Пользовательские макросы
Пользовательские макросы можно задать на глобальном уровне, на уровне шаблонов и на уровне узлов сети. Синтаксис: {$MACRO}.
Макросы используются в:
- ключах и описаниях элементов данных;
- выражениях и именах триггеров (см. примеры ниже);
- других поддерживаемых местах конфигурации.
В именах макросов разрешены символы: A-Z, 0-9, _, .
Порядок подстановки значений
СМ «Пульт» подставляет значения макросов в таком порядке:
- макрос, назначенный узлу сети (проверяется первым);
- макрос первого уровня шаблонов узла (шаблоны, присоединённые напрямую к узлу), по возрастанию ID шаблона;
- макрос второго уровня вложенных шаблонов, по ID шаблона;
- макрос третьего уровня вложенных шаблонов, по ID шаблона;
- … (следующие уровни вложенности);
- глобальные макросы (проверяются последними).
Если макрос не задан на узле сети, система ищет его в присоединённых шаблонах с учётом глубины вложенности. Если макрос не найден, используется глобальный макрос (если он существует). Если макрос не найден нигде, подстановка не выполняется — макрос остаётся без замены.
Где задать макрос
- Глобальные макросы: Администрирование → Общие → Макросы
- Макросы узла сети или шаблона: свойства узла сети/шаблона, вкладка Макросы
Если пользовательский макрос используется в элементах данных или триггерах шаблона, его можно добавить и на уровне шаблона, даже если он определён глобально — при экспорте шаблона в XML и импорте в другую систему элементы данных и триггеры сохранят работоспособность.
Типичные сценарии
- Шаблоны с атрибутами, специфичными для узла: пароли, порты, имена файлов, регулярные выражения и т. д.
- Глобальные макросы для централизованного изменения конфигурации и тонкой настройки порогов.
Примеры
Пример 1 — макрос в ключе элемента данных «Состояние демона SSH»:
net.tcp.service[ssh,{$SSH_PORT}]
Элемент данных можно применить к нескольким узлам сети, если {$SSH_PORT} задан на каждом из них.
Пример 2 — макрос уровня узла сети в триггере «Загрузка ЦПУ слишком высокая»:
{ca_001:system.cpu.load[,avg1].last(0)}>{$MAX_CPULOAD}
Триггер создаётся на шаблоне и не меняется на отдельных узлах сети.
Если в параметре функции нужно количество значений (например, max(#3)), символ # можно задать в значении макроса:
SOME_PERIOD ⇒ #3
Пример 3 — два макроса в одном триггере:
{ca_001:system.cpu.load[,avg1].min({$CPULOAD_PERIOD})}>{$MAX_CPULOAD}
Макрос {$CPULOAD_PERIOD} используется как параметр функции min().