感謝張宇投稿!張宇,Zabbix高級認證專家。
1、Zabbix 6.0普通計算
計算監控項是創建虛擬數據源的一種方式。所有計算僅由 Zabbix server (目前6.0還是,rodmap中有考慮計算放到proxy上)完成。這些值是根據所使用的算術表達式定期計算的。
結果數據與任何其它監控項一樣存儲在 Zabbix 數據庫中;歷史和趨勢值都被存儲並且可以生成圖形。
它的公式爲簡單計算項公式的語法:(這類功能6.0以前也有,表達式寫法不同)
function(/host/key,<parameter1>,<parameter2>,...) |
如果計算監控項是當前主機,語法爲:
function(//key,<parameter1>,<parameter2>,...) |
計算監控項特性:
注意:在Zabbix 6.0中一個新的SERVER conf參數。(StartHistoryPollers 此進程實際處理計算和聚合算法數據的)
多個運算公式寫法:
將網口進出口流量合併:
last(//net.if.in[eth0,bytes])+last(//net.if.out[eth0,bytes]) |
計算出進口流量佔用總流量百分比:
100*last(//net.if.in[eth0,bytes])/(last(//net.if.in[eth0,bytes])+last(//net.if.out[eth0,bytes])) |
2、Zabbix 6.0新聚合算法
什麼是聚合計算函數:
計算函數+foreach函數:
Foreach函數從多個項目的歷史記錄返回聚合值:
foreach_function(/host pattern/item pattern?[host group or tag filter]) |
以下foreach支持的函數:
常見使用方式舉例:
主機組“MySQL Servers”的/磁盤總空間:
sum(last_foreach(/*/vfs.fs.size[/,total]?[group=“MySQL Servers”])) |
數據流程如下:
單個設備所有網卡出口流量匯聚:
sum(last_foreach(//net.if.out[*])) |
查詢多個LLD對象數量匯聚:(比如說同實例MySQL庫發現數量)
sum(exists_foreach(//mysql.dbsize[*,*,*])) |
多個主機組磁盤總量監控項匯聚:
sum(last_foreach(/*/vfs.fs.size[/,total]?[group=“Group A“ and group=“Group B”])) |
通過標籤過濾匯聚不同主機的監控對象匯聚:
sum(last_foreach(/*/net.if.in[*]?[(group=“Servers A” or group=“Servers B”) and tag=“Service”])) |
參考文檔:
https://www.zabbix.com/documentation/6.0/zh/manual/config/items/itemtypes/calculated
延伸閱讀
本文分享自微信公衆號 - Zabbix開源社區(china_zabbix)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。