當主機數量過多的時候,由Server端去收集數據,Zabbix會出現嚴重的性能問題,主要表現如下:
1、Web操作很卡,容易出現502
2、圖層斷裂
3、開啓的進程(Pollar)太多,即使減少item數量,以後加入一定量的機器也會有問題
所以下面主要往兩個優化方向考慮:
1、用Proxy或者Node模式做分佈式監控
2、調整Agentd爲主動模式
由於第一個方案需要增加物理機器,所以先嚐試第二方案
一、Agentd的配置調整:
LogFile=/tmp/zabbix_agentd.log Server=14.18.xxx.xxx ServerActive=14.18.xxx.xx Hostname=119.146.xxx.xx RefreshActiveChecks=60 BufferSize=10000 MaxLinesPerSecond=200 Timeout=30
比較重要的參數是ServerActive和Hostname,ServerActive是指定Agentd收集的數據往哪裏發送,Hostname是必須要和Server端添加主機時的主機名對應起來,這樣Server端接收到數據才能找到對應關係,我這裏爲了兼容被動模式,沒有把StartAgents設爲0,如果一開始就是使用主動模式的話建議把StartAgents設爲0,關閉被動模式
二、Server的配置調整:
StartPollers=100
首先把這個主動收集數據進程減少,原來開到700多,囧
StartTrappers=200
然後把這個負責處理Agentd推送過來的數據的進程開大一些,就可以了
三、調整模板
建議完整克隆一個Template OS Linux 模板來改,需要調整的地方就是:
把所有的item的類型由原來的“zabbix代理”改成“zabbix端點代理程序(主動式)”
只需要簡單的幾步,就完成了主動模式的切換,調整之後服務器不卡了,圖層不裂了,進程也少了。