1 Пользовательские макросы
Обзор
Для большей гибкости, Zabbix поддерживает пользовательские макросы, которые можно определить на глобальном уровне, на уровне шаблонов и на уровне узлов сети. Эти макросы имеют специальный синтаксис: {$МАКРОС}.
Макросы можно использовать в:
- именах элементов данных
- в параметрах ключей элементов данных
- именах и описаниях триггеров
- в параметрах и константах выражений триггеров (смотрите примеры)
- в некоторых других местах
В именах макросов допускаются следующие символы: A-Z , 0-9 , _ , .
Zabbix раскрывает макросы в соответствии со следующей очередностью:
- макрос, назначенный узлу сети (проверяется в первую очередь)
- макрос, назначенный на первый уровень шаблонов у узла сети (т.е. шаблоны присоединенные напрямую к узлу сети), которые отсортированы по ID шаблона
- макрос, назначенный на второй уровень шаблонов у узла сети, которые отсортированы по ID шаблона
- макрос назначенный на третий уровень шаблонов у узла сети, которые отсортированы по ID шаблона
- ...
- глобальные макросы (проверяются в последнюю очередь)
Иными словами, если макрос не существует непосредственно у узла сети, тогда Zabbix попытается найти его в шаблонах, присоединенных к этому узлу сети, с учетом увеличивающейся глубины шаблонов. Если макрос все еще не найден, то будет использован макрос глобального уровня, если он существует конечно.
В случае, если Zabbix не удалось найти макрос, макрос не будет заменен на значение.
Для добавления пользовательских макросов, перейдите в соответствующие разделы в веб-интерфейсе:
- для глобальных макросов, посетите Администрирование → Общие → Макросы
- для макросов на уровне узлов сети и шаблонов, откройте свойства узла сети или шаблона и найдите вкладку Макросы
Если пользовательский макрос используется в элементах данных или триггерах шаблона, то предлагается добавить этот макрос к шаблону, даже если он задан на глобальном уровне. Таким образом при экспорте шаблона в XML и импорте его в другую систему элементы данных и триггеры продолжат работать, как это и ожидалось.
Наиболее общие случаи использования глобальных макросов и макросов уровня узлов сети:
- используются шаблоны со специфичными для узла сети атрибутами: пароли, номера портов, имена файлов, регулярные выражения, и т.д.
- глобальные макросы для глобального быстрого изменения конфигурации через "одно нажатие" и более тонкой настройки
Примеры
Пример 1
Использование макроса в ключе элемента данных "Состояние демона SSH":
net.tcp.service[ssh,{$SSH_PORT}]
Этот элемент данных можно присоединить к нескольким узлам сети, при условии, что значение {$SSH_PORT} указано на этих узлах сети.
Пример 2
Использование макроса уровня узла сети в триггере "Загрузка CPU слишком высокая":
{ca_001:system.cpu.load[,avg1].last(0)}>{$MAX_CPULOAD}
Такой триггер можно создать у шаблона, он не будет изменен у отдельных узлов сети.
Если вы хотите использовать количество значений в качестве параметра функции (например, max(#3)), добавьте символ решетки # непосредственно в значение макроса, например вот так: SOME_PERIOD ⇒ #3
Пример 3
Использование двух макросов в триггере "Загрузка CPU слишком высокая":
{ca_001:system.cpu.load[,avg1].min({$CPULOAD_PERIOD})}>{$MAX_CPULOAD}
Заметьте, что макрос можно использовать в качестве параметра в функциях триггеров, в этом примере в функции min().
Пользовательские макросы будут раскрыты в триггерах, если макросы используются в параметрах или как константы. Они НЕ будут раскрыты, если используются в качестве ссылка на функции, имена узлов сети, ключи элементов данных или операторы.