Пользовательские макросы поддерживаются в Zabbix для достижения большей гибкости, в дополнение к поддерживаемым макросам «из коробки».
Пользовательские макросы можно определить на глобальном уровне, уровне шаблона и уровне узла сети. Такие макросы имеют специальный синтаксис:
Zabbix раскрывает макросы в соответствии со следующей очерёдностью:
Иными словами, если макрос не существует непосредственно у узла сети, тогда Zabbix попытается найти его в шаблонах, присоединённых к этому узлу сети, с учётом увеличивающейся глубины шаблонов. Если макрос всё ещё не найден, то будет использован макрос глобального уровня, если он существует.
Если макросы с одинаковыми именами существуют у нескольких присоединённых шаблонов на одном уровне, будет использован макрос из шаблона с наименьшим значением ID. Таким образом, наличие макросов с одинаковыми именами у нескольких шаблонов — это риск конфигурации.
В случае, если Zabbix не удалось найти макрос, макрос не будет раскрыт.
По задумке макросы (включая пользовательские макросы) остаются нераскрытыми в разделе Настройки (например, в списке триггеров), чтобы сделать сложную конфигурацию более прозрачной.
Пользовательские макросы можно использовать в:
Рекомендуется использовать макросы узла сети вместо глобальных макросов, поскольку добавление, обновление или удаление глобальных макросов приводит к инкрементальному обновлению конфигурации для всех узлов сети. Для получения дополнительной информацию смотрите разделе Пассивные и активные проверки агента.
Для добавления пользовательских макросов, перейдите в соответствующий раздел в веб-интерфейсе:
Пользовательский макрос имеет следующие атрибуты:
Параметр | Описание |
---|---|
Макрос (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
;Используйте макрос прототипа узлов сети для настройки элементов данных у обнаруженных узлов сети:
Смотрите пользовательские макросы с контекстом.