Для большей гибкости, Zabbix поддерживает пользовательские макросы, которые могут быть определены на глобальном уровне, на уровне шаблонов и на уровне узлов сети. Эти макросы имеют специальный синтаксис: {$MACRO}.
Макросы могут быть использованы в:
Следующие символы разрешены в именах макросов: A-Z , 0-9 , _ , .
Zabbix замещает макросы в соответствии со следующей очередностью:
Иными словами, если макрос не существует для узла сети непосредственно, тогда Zabbix попытается найти его в шаблонах, присоединенных к узлу сети, с учетом уровня глубины шаблонов. Если макрос все еще не найден, тогда будет использоваться макрос глобального уровня, если он существует конечно.
В случае, если Zabbix не удалось найти макрос, макрос не будет заменен на значение.
Для определения пользовательского макроса, перейдите в соответствующие разделы в веб-интерфейсе:
Наиболее общие случаи использования глобальных макросов и макросов уровня узлов сети:
Использование макроса в ключе элемента данных “Состояние демона SSH”:
net.tcp.service[ssh,{$SSH_PORT}]
Этот элемент данных может быть присоединен к нескольким узлам сети, при условии, что значение {$SSH_PORT} задано на этих узлах сети.
Использование макроса уровня узла сети в триггере “Загрузка ЦПУ слишком высокая”:
{ca_001:system.cpu.load[,avg1].last(0)}>{$MAX_CPULOAD}
Такой триггер будет создан у шаблону, и не изменится у отдельных узлов сети.
Использование двух макросов в триггере “Загрузка ЦПУ слишком высокая”:
{ca_001:system.cpu.load[,avg1].min({$CPULOAD_PERIOD})}>{$MAX_CPULOAD}
Заметьте, что макрос может быть использован в качестве параметра для функции триггера, в этом примере для функции min().