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

Макросы

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

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

Supported macros by location

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

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

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

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

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

Типы значений макроса

Для каждой строки макроса кнопка Изменить тип задаёт способ хранения значения:

Тип в менюНазначение
ТекстОбычное значение, видимое при редактировании.
Скрытый текстЗначение маскируется в интерфейсе (пароли, ключи).
Секрет ХранилищаЗначение хранится во внешнем хранилище секретов (если настроено в системе).

Для паролей и токенов используйте Скрытый текст или Секрет Хранилища, а не тип Текст.

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

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

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

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

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

Глобальные макросы

  1. Перейдите в Администрирование → Макросы (отдельный пункт меню, не внутри Общие).
  2. В таблице укажите Макрос, Значение и при необходимости Описание.
  3. Нажмите Добавить для новой строки и Обновить для сохранения.

Глобальные макросы

Макросы узла сети

  1. Перейдите в Сбор данных → Узлы сети и откройте узел (щелчок по имени).
  2. На вкладке Макросы задайте строки таблицы (Макрос, Значение, Описание).
  3. Переключатель режима:
    • Макросы узла сети — только макросы, заданные на узле;
    • Макросы узла сети и унаследованные — также макросы из присоединённых шаблонов (для просмотра и сравнения).
  4. Нажмите Обновить внизу формы Узел сети.

Макросы узла сети

Пример на скриншоте: {$SSH_PORT} = 22 для ключа net.tcp.service[ssh,{$SSH_PORT}].

Макросы шаблона

  1. Перейдите в Сбор данных → Шаблоны и откройте шаблон.
  2. На вкладке Макросы укажите макросы шаблона.
  3. Переключатель режима:
    • Шаблонные макросы — макросы текущего шаблона;
    • Унаследованные и макросы из шаблонов — макросы из вложенных (присоединённых) шаблонов.
  4. Нажмите Обновить.

Структура таблицы та же: Макрос, Значение, Описание, Изменить тип, Добавить, Удалить.

Если пользовательский макрос используется в элементах данных или триггерах шаблона, его можно добавить и на уровне шаблона, даже если он определён глобально — при экспорте шаблона в 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_CPULOAD} на узле.

Если в параметре функции нужно количество значений (например, max(#3)), символ # можно задать в значении макроса:

SOME_PERIOD ⇒ #3

Пример 3 — два макроса в одном триггере:

{ca_001:system.cpu.load[,avg1].min({$CPULOAD_PERIOD})}>{$MAX_CPULOAD}

Макрос {$CPULOAD_PERIOD} используется как параметр функции min().