2 Макросы

Zabbix поддерживает некоторое количество макросов, которые могут быть использованы в различных ситуациях. Эффективное использование макросов позволяет сократить время и сделать настройку Zabbix более прозрачной.

Список поддерживаемых макросов

В таблице содержится полный список поддерживаемых макросов Zabbix. X обозначает "поддерживается".

Имена элементов данных Описание
Имена триггеров ▼▼
Выражения триггеров ▼▼
Подписи на картах1 ▼▼
Параметры ключей элементов данных ▼▼
GUI скрипты ▼▼
Оповещения авторегистрации ▼▼
Оповещения обнаружения ▼▼
Оповещения и команды ▼▼
МАКРОС ▼▼
­ ▼▼ 1 2 3 4 5 6 7 8 9
{DATE} X X X Текущая дата в формате yyyy.mm.dd.
{DISCOVERY.DEVICE.IPADDRESS} X IP адрес обнаруженного устройства. Доступно всегда, не зависит от того добавлен узел сети или нет.
{DISCOVERY.DEVICE.STATUS} X Состояние обнаруженного устройства: может быть ДОСТУПЕН или НЕДОСТУПЕН.
{DISCOVERY.DEVICE.UPTIME} X Время с момента последнего изменения состояния обнаружения для конкретного устройства.
Например: 1ч 29м.
Для устройств с состоянием НЕДОСТУПЕН этот период указывает время недоступности.
{DISCOVERY.RULE.NAME} X Название правила обнаружения, которое обнаружило наличие или отсутствие устройства или сервиса.
{DISCOVERY.SERVICE.NAME} X Имя сервиса, которое было обнаружено.
Например: HTTP.
{DISCOVERY.SERVICE.PORT} X Порт на котором сервис был обнаружен.
Например: 80.
{DISCOVERY.SERVICE.STATUS} X Состояние сервиса правила обнаружения: может быть ДОСТУПЕН или НЕДОСТУПЕН.
{DISCOVERY.SERVICE.UPTIME} X Время с момента последнего изменения состояния обнаружения для конкретного сервиса.
Например: 1ч 29м.
Для сервисов с состоянием НЕДОСТУПЕН этот период указывает время недоступности.
{ESC.HISTORY} X История эскалаций. Журнал предыдущих отправленных сообщений. Отображает предыдущие отправленные оповещения, на котором шаге эскалации они были отправлены и их статус (отправлено, в процессе и ошибка).
{EVENT.ACK.HISTORY} X
{EVENT.ACK.STATUS} X
{EVENT.AGE} X X X Возраст события. Полезно в сообщениях эскалации.
{EVENT.DATE} X X X Дата события.
{EVENT.ID} X X X Код (ID) события, вызвавшего это действие.
{EVENT.TIME} X X X Время события.
{HOSTNAME<1-9>} X X X X X Имя узла сети N-го элемента данных из триггера вызвавшего это оповещение. Поддерживается в оповещениях авторегистрации начиная с версии 1.8.4.
{HOST.CONN<1-9>} X X X X IP или DNS имя узла сети, зависимо от его настроек.
{HOST.DNS<1-9>} X X X X DNS имя узла сети.
1 2 3 4 5 6 7 8 9
{IPADDRESS<1-9>} X X X X IP адрес N-го элемента данных триггера вызвавшего это оповещение.
{ITEM.ID<1-9>} X Числовой ID N-го элемента данных триггера вызвавшего это оповещение. Поддерживается начиная с 1.8.12.
{ITEM.LASTVALUE<1-9>} X X Последнее значение элемента данных N-го элемента данных в выражении триггера вызвавшего это оповещение. Поддерживается начиная с 1.4.3. Это алиас для {{HOSTNAME}:{TRIGGER.KEY}.last(0)}
{ITEM.LOG.AGE<1-9>} X
{ITEM.LOG.DATE<1-9>} X
{ITEM.LOG.EVENTID<1-9>} X
{ITEM.LOG.NSEVERITY<1-9>} X
{ITEM.LOG.SEVERITY<1-9>} X
{ITEM.LOG.SOURCE<1-9>} X
{ITEM.LOG.TIME<1-9>} X
{ITEM.NAME<1-9>} X Имя N-го элемента данных в выражении триггера, вызвавшего это оповещение.
{ITEM.VALUE<1-9>} X X Последнее значение N-го элемента данных в выражении триггера, если используется для отображения триггеров.
Историческое значение (точно когда произошло событие) N-го элемента данных из выражения триггера, если используется для отображения событий и оповещений. Поддерживается начиная с Zabbix 1.4.3.
{NODE.ID<1-9>} X X X ID ноды
{NODE.NAME<1-9>} X X X Имя ноды
{PROFILE.CONTACT<1-9>} X Контакт из профиля узла сети.
{PROFILE.DEVICETYPE<1-9>} X Тип устройства из профиля узла сети.
{PROFILE.HARDWARE<1-9>} X Аппаратное обеспечение из профиля узла сети.
{PROFILE.LOCATION<1-9>} X Размещение устройства из профиля узла сети.
1 2 3 4 5 6 7 8 9
{PROFILE.MACADDRESS<1-9>} X MAC адрес из профиля узла сети.
{PROFILE.NAME<1-9>} X Имя из профиля узла сети.
{PROFILE.NOTES<1-9>} X Заметки из профиля узла сети.
{PROFILE.OS<1-9>} X ОС из профиля узла сети.
{PROFILE.SERIALNO<1-9>} X Серийный номер из профиля узла сети.
{PROFILE.SOFTWARE<1-9>} X Программное обеспечение из профиля узла сети.
{PROFILE.TAG<1-9>} X Метка из профиля узла сети.
{PROXY.NAME<1-9>} X X X Имя прокси N-го триггера вызвавшего оповещение. Поддерживается начиная с версии 1.8.4.
{STATUS} X Алиас для {TRIGGER.STATUS}.
{TIME} X X X Текущее время в формате чч:мм.сс.
{TRIGGER.COMMENT} X Комментарий к триггеру.
{TRIGGER.EVENTS.UNACK} X X Количество неподтвержденных событий для элемента на картах сетей или для триггера, вызвавшего текущее событие в уведомлениях. Поддерживается в подписях к элементам карт начиная с версии 1.8.3.
{TRIGGER.EVENTS.PROBLEM.UNACK} X X Количество неподтвержденных событий ПРОБЛЕМА для всех триггеров изменивших свое состояние, без учета их состояния. Поддерживается начиная с версии 1.8.3.
{TRIGGER.PROBLEM.EVENTS.PROBLEM.UNACK} X Количество неподтвержденных событий ПРОБЛЕМА для триггеров в состоянии ПРОБЛЕМА. Поддерживается начиная с 1.8.3.
{TRIGGER.EVENTS.ACK} X X Количество подтвержденных событий для элемента на картах сетей, или для триггера вызвавшего текущее событие в уведомлениях. Поддерживается начиная с 1.8.3.
{TRIGGER.EVENTS.PROBLEM.ACK} X X Количество подтвержденных событий ПРОБЛЕМА для всех триггеров, без учета их состояния. Поддерживается начиная с 1.8.3.
{TRIGGER.PROBLEM.EVENTS.PROBLEM.ACK} X Количество подтвержденных событий ПРОБЛЕМА для триггеров в состоянии ПРОБЛЕМА. Поддерживается начиная с 1.8.3.
1 2 3 4 5 6 7 8 9
{TRIGGER.EXPRESSION} X Выражение триггера. Поддерживается начиная с 1.8.12.
{TRIGGER.ID} X Код (ID) триггера вызвавшего это действие.
{TRIGGER.KEY<1-9>} X Ключ N-го элемента данных в выражении триггера, вызвавшего это действие.
{TRIGGER.NAME} X Имя (описание) триггера.
{TRIGGER.NSEVERITY} X Числовое представление важности триггера. Возможные значения: 0 - Не классифицировано, 1 - Информация, 2 - Предупреждение,3 - Средняя, 4 - Высокая, 5 - Чрезвычайная, Поддерживается начиная с Zabbix 1.6.2.
{TRIGGER.SEVERITY} X Важность триггера. Возможные значения: Not classified, Information, Warning, Average, High, Disaster, Unknown
{TRIGGER.STATUS} X Состояние триггера. Может быть ПРОБЛЕМА или ОК. {STATUS} устарел.
{TRIGGER.URL} X URL триггера.
{TRIGGER.VALUE} X X Текущее значение триггера: 0 - если триггер в состоянии ОК, 1 – если триггер в состоянии ПРОБЛЕМА, 2 – если триггер в состоянии НЕИЗВЕСТНО. Этот макрос может быть использован в выражениях триггеров.
{TRIGGERS.UNACK} X Количество неподтвержденных триггеров для элемента на картах сетей, без учета состояния триггера. Триггер считается не подтвержденным, если хотя бы одно его событие ПРОБЛЕМА не подтверждено. Поддерживается начиная 1.8.3.
{TRIGGERS.PROBLEM.UNACK} X Количество неподтвержденных триггеров в состоянии ПРОБЛЕМА для элемента на картах сетей. Поддерживается начиная с версии 1.8.3.
{TRIGGERS.ACK} X Количество подтвержденных триггеров для элемента на картах сетей, без учета состояния триггера. Триггер считается не подтвержденным, если все его события ПРОБЛЕМА подтверждены. Поддерживается начиная 1.8.3.
{TRIGGERS.PROBLEM.ACK} X Количество подтвержденных триггеров ПРОБЛЕМА для элемента на картах сетей. Триггер считается подтвержденным, если все его события ПРОБЛЕМА подтверждены. Поддерживается начиная с 1.8.3.
{host:key.func(param)} X X2 X Простой макрос используется в выражении триггера.
{$MACRO} X X X X Пользовательские макросы. Поддерживается в именах триггеров и в описаниях элементов данных начиная с версии 1.8.4.
1 2 3 4 5 6 7 8 9

[1]Макросы для подписей на карте сети поддерживаются начиная с 1.8.
[2]В подписях на карте сети поддерживаются только функции last, avg, max и min с секундами в качестве аргумента.

Макрос {TRIGGER.ID} поддерживается в URL триггера начиная с Zabbix 1.8.8.

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

Для большей гибкости, Zabbix поддерживает пользовательские макросы, которые могут быть определены на глобальном уровне, на уровне шаблонов и на уровне узлов сети. Эти макросы имеют специальный синтаксис: {$MACRO}. Макросы могут быть использованы в ключах элементов данных и в выражениях триггеров. Начиная с Zabbix версии 1.8.4 пользовательские макросы так же возможно использовать в описаниях элементов данных и в именах триггеров.

Следующие символы допустимы в именах макросов: A-Z , 0-9 , _ , .

Zabbix замещает макросы в соответствии со следующей очередностью:

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

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

В случае, если Zabbix не удалось найти макрос, макрос не будет заменен на значение.

Для определения пользовательского макроса, перейдите в соответствующие разделы в веб-интерфейсе:

  • для глобальных макросов, откройте Администрирование → Общие → Макросы
  • для макросов на уровне узлов сети и шаблонов, откройте свойства узла сети или шаблона и найдите блок Макросы с правой стороны страницы

Если пользовательский макрос используется в элементах данных или триггерах шаблона, то предлагается добавить этот макрос к шаблону, даже если он определен на глобальном уровне. Таким образом при экспорте шаблона в XML и импорте его в другую систему элементы данных и триггеры продолжат работать как это и ожидалось.

Наиболее общие случаи использования глобальных макросов и макросов уровня узлов сети:

  1. используются шаблоны со специфичными для узла сети атрибутами: пароли, номера портов, имена файлов, регулярные выражения, и т.д.
  2. глобальные макросы для глобального изменения конфигурации через "одно нажатие" и более тонкой настройки
Пример 1

Использование макроса в ключе элемента данных "Status of SSH daemon":

ssh,{$SSH_PORT}

Пример 2

Использование макроса уровня узла сети в триггере "CPU load is too high":

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

Если вы хотите использовать количество значений в качестве параметра функции (например, max(#3)), включите символ решетки # непосредственно в значение макроса, например вот так: SOME_PERIOD => #3

Пример 3

Использование двух макросов в триггере "CPU load is too high":

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

Заметьте, что макрос может быть использован в качестве параметра для функции триггера, в этом примере для функции min().

Пользовательские макросы поддерживаются в строке SNMP OID начиная с Zabbix 1.8.4.