Макросы
СМ «Пульт» поддерживает встроенные и пользовательские макросы для различных ситуаций. Эффективное использование макросов упрощает настройку СМ «Пульт».
Актуальный список встроенных макросов по расположению использования опубликован в документации Zabbix 7.0 (версия ядра на стенде — 7.4.9):
Пользовательские макросы
Пользовательские макросы можно задать на глобальном уровне, на уровне шаблонов и на уровне узлов сети. Синтаксис имени: {$MACRO} (в поле Макрос отображается подсказка {$MACRO}).
Макросы используются в:
- ключах и описаниях элементов данных;
- выражениях и именах триггеров (см. примеры ниже);
- других поддерживаемых местах конфигурации (см. ссылку на встроенные макросы выше).
В именах макросов разрешены символы: A-Z, 0-9, _, .
Типы значений макроса
Для каждой строки макроса кнопка Изменить тип задаёт способ хранения значения:
| Тип в меню | Назначение |
|---|---|
| Текст | Обычное значение, видимое при редактировании. |
| Скрытый текст | Значение маскируется в интерфейсе (пароли, ключи). |
| Секрет Хранилища | Значение хранится во внешнем хранилище секретов (если настроено в системе). |
Для паролей и токенов используйте Скрытый текст или Секрет Хранилища, а не тип Текст.
Порядок подстановки значений
СМ «Пульт» подставляет значения макросов в таком порядке:
- макрос, назначенный узлу сети (проверяется первым);
- макрос первого уровня шаблонов узла (шаблоны, присоединённые напрямую к узлу), по возрастанию ID шаблона;
- макрос второго уровня вложенных шаблонов, по ID шаблона;
- макрос третьего уровня вложенных шаблонов, по ID шаблона;
- … (следующие уровни вложенности);
- глобальные макросы (проверяются последними).
Если макрос не задан на узле сети, система ищет его в присоединённых шаблонах с учётом глубины вложенности. Если макрос не найден, используется глобальный макрос (если он существует). Если макрос не найден нигде, подстановка не выполняется — макрос остаётся без замены.
Где задать макрос
Глобальные макросы
- Перейдите в Администрирование → Макросы (отдельный пункт меню, не внутри Общие).
- В таблице укажите Макрос, Значение и при необходимости Описание.
- Нажмите Добавить для новой строки и Обновить для сохранения.

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

Пример на скриншоте: {$SSH_PORT} = 22 для ключа net.tcp.service[ssh,{$SSH_PORT}].
Макросы шаблона
- Перейдите в Сбор данных → Шаблоны и откройте шаблон.
- На вкладке Макросы укажите макросы шаблона.
- Переключатель режима:
- Шаблонные макросы — макросы текущего шаблона;
- Унаследованные и макросы из шаблонов — макросы из вложенных (присоединённых) шаблонов.
- Нажмите Обновить.
Структура таблицы та же: Макрос, Значение, Описание, Изменить тип, Добавить, Удалить.
Если пользовательский макрос используется в элементах данных или триггерах шаблона, его можно добавить и на уровне шаблона, даже если он определён глобально — при экспорте шаблона в XML и импорте в другую систему элементы данных и триггеры сохранят работоспособность.
Типичные сценарии
- Шаблоны с атрибутами, специфичными для узла: пароли, порты, имена файлов, регулярные выражения и т. д.
- Глобальные макросы для централизованного изменения конфигурации и тонкой настройки порогов.
Примеры
Пример 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().