W celu zwiększenia elastyczności, Zabbix pozwala używać makr użytkownika, które można zdefiniować na poziomie ogólnym, oraz w szablonach i hostach. Makra te mają specjalną składnię: {$MAKRO}.
Makr można użyć w:
W nazwach makr dozwolone są następujące znaki: A-Z , 0-9 , _ , .
Zabbix podstawia makra zgodnie z następującą kolejnością:
To znaczy, jeżeli na poziomie hosta nie istnieje dane makro, Zabbix spróbuje znaleźć je w szablonach hosta, zwiększając stopniowo zagłębienie. Jeżeli nadal nic nie znajdzie, użyje makra globalnego, jeżeli takie istnieje.
Jeżeli Zabbix nie znajdzie makra, makro nie zostanie zamienione.
Żeby zdefiniować makra użytkownika, należy przejść do odpowiedniej lokalizacji w interfejsie użytkownika:
Jeżeli makro użytkownika używane jest w pozycjach lub wyzwalaczach w szablonie, sugerujemy, by dodać to makro do szablonu nawet wtedy, gdy jest zdefiniowane na poziomie globalnym. Dzięki temu, wyeksportowanie szablonu i zaimportowanie go w innym systemie spowoduje, że szablon ten nadal będzie działał tak, jak tego oczekiwano.
Najbardziej znane zastosowania makr globalnych i hostów:
Użycie makra poziomu hosta w kluczu pozycji "Stan demona SSH":
net.tcp.service[ssh,,{$SSH_PORT}]
Ta pozycja może być przypisana do wielu hostów, zakładając że w tych hostach zdefiniowane zostanie makro {$SSH_PORT}.
Użycie makra poziomu hosta w wyzwalaczu "Obciążenie CPU jest zbyt wysokie":
{ca_001:system.cpu.load[,avg1].last()}>{$MAX_CPULOAD}
Wyzwalacz taki powinien być utworzony w szablonie, a nie edytowany w hostach.
Jeżeli chcemy użyć ilości wartości jako parametru funkcji (na przykład, max(#3)), należy umieścić znak # w definicji makra, na przykład tak: JAKIS_OKRES => #3
Użycie dwóch makr w wyzwalaczu "Obciążenie CPU jest zbyt wysokie":
{ca_001:system.cpu.load[,avg1].min({$CPULOAD_PERIOD})}>{$MAX_CPULOAD}
Należy zauważyć, że makro mozna użyć w parametrze funkcji wyzwalacza, w tym przypadku w funkcji min().
W wyrażeniach makra użytkownika zostaną rozwinięte, jeżeli zawierają parametr lub stałą. NIE będą rozwinięte jeżeli odwołują się do hosta, klucza pozycji, funkcji, operatora lub innego wyrażenia wyzwalacza.