Перейти к основному содержимому
Версия: Пульт 2.1.0

Макросы

СМ «Пульт» поддерживает встроенные и пользовательские макросы для различных ситуаций. Эффективное использование макросов упрощает настройку СМ «Пульт».

Актуальный список встроенных макросов по расположению использования опубликован в документации Zabbix 7.2:

Supported macros by location

Пользовательские макросы

Пользовательские макросы можно задать на глобальном уровне, на уровне шаблонов и на уровне узлов сети. Синтаксис: {$MACRO}.

Макросы используются в:

  • ключах и описаниях элементов данных;
  • выражениях и именах триггеров (см. примеры ниже);
  • других поддерживаемых местах конфигурации.

В именах макросов разрешены символы: A-Z, 0-9, _, .

Порядок подстановки значений

СМ «Пульт» подставляет значения макросов в таком порядке:

  1. макрос, назначенный узлу сети (проверяется первым);
  2. макрос первого уровня шаблонов узла (шаблоны, присоединённые напрямую к узлу), по возрастанию ID шаблона;
  3. макрос второго уровня вложенных шаблонов, по ID шаблона;
  4. макрос третьего уровня вложенных шаблонов, по ID шаблона;
  5. … (следующие уровни вложенности);
  6. глобальные макросы (проверяются последними).

Если макрос не задан на узле сети, система ищет его в присоединённых шаблонах с учётом глубины вложенности. Если макрос не найден, используется глобальный макрос (если он существует). Если макрос не найден нигде, подстановка не выполняется — макрос остаётся без замены.

Где задать макрос

  • Глобальные макросы: Администрирование → Общие → Макросы
  • Макросы узла сети или шаблона: свойства узла сети/шаблона, вкладка Макросы

Если пользовательский макрос используется в элементах данных или триггерах шаблона, его можно добавить и на уровне шаблона, даже если он определён глобально — при экспорте шаблона в XML и импорте в другую систему элементы данных и триггеры сохранят работоспособность.

Типичные сценарии

  1. Шаблоны с атрибутами, специфичными для узла: пароли, порты, имена файлов, регулярные выражения и т. д.
  2. Глобальные макросы для централизованного изменения конфигурации и тонкой настройки порогов.

Примеры

Пример 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().