zabbix使用者巨集變數詳解macro
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服務:
1 |
net.tcp.service[ssh,{$SSH_PORT}] |
如果你監控的ssh埠可能會有不同,那麼你只需要定義host級別巨集變數SSH_PORT
示例二
主機CPU負載觸發器
1 |
{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個巨集)
1 |
{ca_001:system.cpu.load[,avg1].min({$CPULOAD_PERIOD})}>{$MAX_CPULOAD} |
巨集可以作為function的一個引數。