一.簡單應用場景
zabbix在監控cpu load時並沒有考慮客戶端cpu的個數和核心數量,當平均5分鍾的負載達到5時zabbix執行報警動作,這樣是非常不合理的,筆者的被監控機器有四核和單核,現在單核機器我希望閾值仍然是5,四核機器192.168.17.107上調為10,怎么辦呢?用宏變量可以很好的解決這個問題
二.宏介紹
宏是一種抽象概念(Abstraction),它根據一些列預定義的規則替換一定的文本模式,而解釋或編譯器在遇到宏時會自動進行這一模式替換。類似地,zabbix基於宏保存預設文本模式,並且在調用時將其替換為其中的文本。
zabbix宏變量優先級:
- 主機宏(checked first)
- 主機模板定義的宏,如果有多個模板,那么按照模板越靠前那么宏的優先級越高
- 全局宏(checked last)
換句話說,zabbix找一個宏的值,首先檢查hosts有沒有,如果沒有那么找當前主機的第一個模板,如果還不在找第二個模板,一直到最后一個模板,如果還是沒有找到那將會使用全局宏。如果全局宏也不存在,那么宏變量不會被替換掉。
自定義宏
定義全局宏, Administration → General → Macros,zabbix3.2中已有的全局宏名稱{$SNMP_COMMUNITY},值public
定義主機/模板級宏變量,編輯主機或者模板,找到Macros選項卡,定義宏變量
宏變量經常用於替代賬號、端口、密碼等,例如你的某個監控想有用到賬號、密碼,可以定義為宏,假如下次賬號密碼有修改,只需要修改宏即可。而不需要每個監控項都去修改賬號密碼。
宏的命名規范:大寫字母、數組、下划線的組合,只能大寫字母開頭。
內置{MACRO} 不需要加$就可以引用:
zabbix有許多內置的宏,如{HOST.NAME}、{HOST.IP}、{TRIGGER.DESCRIPTION}、{TRIGGER.NAME}、{TRIGGER.EVENTS.ACK}等。
三.宏變量使用
3.1 上調四核機器192.168.17.107cpu load閾值到10




3.2 設置單核機器cpu load閾值為5
Template OS Windows模板的cpu load閾值已經從5被改動為宏變量,這將會影響其他使用這個模板的主機,使用該模板的主機都得像四核機器一樣單獨設置一個宏變量,是不是十分不方便?
其實可直接在模板中定義一個宏變量,這樣zabbix在找不到主機宏時就會自動使用模板宏。

