zabbix宏變量讓zabbix變得更靈活,變量可以定義在主機、模板以及全局,變量名稱類似:{$MACRO},宏變量都是大寫的。認識了宏變量,你會感嘆zabbix越發的強大。
變量可以用於如下地方:
- item名稱
- item key參數
- 觸發器名稱和描述
- 觸發器表達式
- 其他地方
宏名稱
宏變量名稱定義只允許后面包含后面的字符: A-Z , 0-9 , _ , .
zabbix宏變量優先級:
- 主機宏(checked first)
- 主機模板定義的宏,如果有多個模板,那么按照模板越靠前那么宏的優先級越高
- 全局宏(checked last)
話句話說,zabbix找一個宏的值,首先檢查hosts有沒有,如果沒有那么找當前主機的第一個模板,如果還不在找第二個模板,一直到最后一個模板,如果還是沒有找到那將會使用全局宏。如果全局宏也不存在,那么宏變量不會被替換掉。
自定義宏
定義全局宏, Administration → General → Macros,例如宏名稱${TTLSA_SITE},值www.ttlsa.com.
定義主機/模板級宏變量,編輯主機或者模板,找到Macros選項卡,定義宏變量
宏變量經常用於替代賬號、端口、密碼等,例如你的某個監控想有用到賬號、密碼,可以定義為宏,假如下次賬號密碼有修改,只需要修改宏即可。而不需要每個監控項都去修改賬號密碼。
宏變量使用實例
示例一
主機SSH服務:
net.tcp.service[ssh,{$SSH_PORT}]
如果你監控的ssh端口可能會有不同,那么你只需要定義host級別宏變量SSH_PORT
示例二
主機CPU負載觸發器
{ca_001:system.cpu.load[,avg1].last(0)}>{$MAX_CPULOAD}
例如有三台主機A\B\C,A主機定義的MAX_CPULOAD為1,B定義的MAX_CPULOAD為2,C定義MAX_CPULOAD為3,這三台link同一個模板即可。
示例三
主機CPU負載觸發器(使用2個宏)
{ca_001:system.cpu.load[,avg1].min({$CPULOAD_PERIOD})}>{$MAX_CPULOAD}
宏可以作為function的一個參數。