Пользовательские макросы поддерживаются в Zabbix для достижения большей гибкости, в дополнение к поддерживаемым макросам «из коробки».
Пользовательские макросы можно определить на глобальном уровне, уровне шаблона и уровне узла сети. Такие макросы имеют специальный синтаксис:
Zabbix раскрывает макросы в соответствии со следующей очерёдностью:
Иными словами, если макрос не существует непосредственно у узла сети, тогда Zabbix попытается найти его в шаблонах, присоединённых к этому узлу сети, с учётом увеличивающейся глубины шаблонов. Если макрос всё ещё не найден, то будет использован макрос глобального уровня, если он существует.
Если макросы с одинаковыми именами существуют у нескольких присоединённых шаблонов на одном уровне, будет использован макрос из шаблона с наименьшим значением ID. Таким образом, наличие макросов с одинаковыми именами у нескольких шаблонов — это риск конфигурации.
В случае, если Zabbix не удалось найти макрос, макрос не будет раскрыт.
По задумке макросы (включая пользовательские макросы) остаются нераскрытыми в разделе Настройки (например, в списке триггеров), чтобы сделать сложную конфигурацию более прозрачной.
Пользовательские макросы можно использовать в:
Рекомендуется использовать макросы узла сети вместо глобальных макросов, поскольку добавление, обновление или удаление глобальных макросов приводит к инкрементальному обновлению конфигурации для всех узлов сети. Для получения дополнительной информацию смотрите разделе Пассивные и активные проверки агента.
Для добавления пользовательских макросов, перейдите в соответствующий раздел в веб-интерфейсе:
Если пользовательский макрос используется в элементах данных или триггерах шаблона, то рекомендуется добавить этот макрос к шаблону, даже если он задан на глобальном уровне. Таким образом, если макрос имеет тип Текст, то при экспорте шаблона в XML и импорте его в другую систему это позволит ему продолжать работать, как и ожидалось. Значения секретных макросов не экспортируются.
Пользовательский макрос имеет следующие атрибуты:
Параметр | Описание |
---|---|
Макрос (Macro) |
Имя макроса. Имя должно быть заключено в фигурные скобки и начинаться с символа доллара. Пример: {$FRONTEND_URL}. В именах макросов допускаются следующие символы: A-Z (только в верхнем регистре) , 0-9 , _ , . |
Значение (Value) |
Значение макроса. Поддерживаются три типа значений: Текст (Text) (по умолчанию) — значение в виде простого текста Скрытый текст (Secret text) — значение маскируется звёздочками Секрет Хранилища (Vault secret) — значение содержит путь/запрос к секрету Хранилища Для изменения типа значения нажмите на кнопку в конце поля ввода значения. Максимальная длина значения пользовательского макроса составляет 2048 символов. |
Описание (Description) |
Текстовое поле, используемое для предоставления дополнительной информации о макросе. |
В выражениях триггеров пользовательские макросы будут раскрыты, если ссылаются на параметр или константу. Они НЕ будут раскрыты, если ссылаются на узел сети, ключ элемента данных, функцию, оператор или другое триггерное выражение. Скрытые макросы нельзя использовать в выражениях триггеров.
Использование макроса уровня узла сети в ключе элемента данных «Состояние демона SSH»:
net.tcp.service[ssh,{$SSH_PORT}]
Этот элемент данных можно присоединить к нескольким узлам сети, при условии, что значение {$SSH_PORT} указано на этих узлах сети.
Использование макроса уровня узла сети в триггере «Загрузка CPU слишком высокая»:
last(/ca_001/system.cpu.load[,avg1])>{$MAX_CPULOAD}
Такой триггер можно создать на уровне шаблона, а не редактировать на отдельных узлах сети.
Если в качестве параметра функции вы хотите использовать количество значений (например, max(/узел сети/ключ,#3)), добавьте символ решётки (#) непосредственно в значение макроса, например вот так: SOME_PERIOD ⇒ #3
Использование двух макросов в триггере «Загрузка CPU слишком высокая»:
min(/ca_001/system.cpu.load[,avg1],{$CPULOAD_PERIOD})>{$MAX_CPULOAD}
Обратите внимание, что макрос можно использовать как параметр триггерной функции, в данном примере в функции min().
Синхронизация условия недоступности агентов с интервалом обновления элемента данных:
nodata(/ca_001/agent.ping,{$INTERVAL})=1
Централизованная настройка рабочего времени:
1-5,09:00-18:00
;Используйте макрос прототипа узлов сети для настройки элементов данных у обнаруженных узлов сети:
Смотрите пользовательские макросы с контекстом.