Zabbix初始設計是大型公司用於監控服務器集群的,但日常中也用於監控VPS或雲主機。后者情況下Zabbix的很多配置和屬性就沒有經過優化,取決於監控的對象和用途,經常需要對一些Zabbix配置進行調整。使用Zabbix監控一些雲主機和VPS,也會經常遇到一些問題,比如之前遇到的“Lack of free swap space”問題,
部分雲主機(例如DigitalOcean)和VPS(一代OpenVZ)都沒有設置交換分區/虛擬內存,使用free -m命令將會顯示SWAP三項都為0。
這種情況下,如果開啟Zabbix監控,Zabbix將會報告系統缺少交換分區空間(“Lack of free swap space”)。這完全可以理解,因為按照正常的邏輯,一台物理服務器不可能不設置交換分區。顯然,這樣的設計沒有考慮到雲主機用戶,但需要適當調整監控文件配置即可解決問題。
解決此問題的步驟如下:選擇Configuration->Templates(模板),在模板界面中選擇Template OS Linux右側的Triggers(觸發器),在觸發器頁面中打開Lack of free swap space on {HOST.NAME}項目,在新打開的觸發器編輯頁面中修改Expression(表達式)的內容,由原先的
{Template OS Linux:system.swap.size[,pfree].last(0)}<50 |
修改為
{Template OS Linux:system.swap.size[,pfree].last(0)}<50 and {Template OS Linux:system.swap.size[,free].last(0)}<>0 |
此處修改增加了“ and {Template OS Linux:system.swap.size[,free].last(0)}<>0”判斷系統有交換空間,當系統無交換空間即{Template OS Linux:system.swap.size[,free].last(0)}的值為0時將不會時表達式不成立就不會觸發錯誤提示。保存之后在下一個更新周期內Zabbix之前報告的“Lack of free swap space”問題就會被自動標記為Resolved(已解決)。