以前用zabbix,都是簡簡單單的把服務端、客戶端一搭,模板監控項一弄就完了。沒怎么真正去弄過優化啊之類的。現在有個場景就是獲取zabbix的數據賊慢,得對zabbix進行優化,開始動手分析一下。
先看以下幾張圖,這是優化前后的
對比圖:
1)隊列數
優化前:

優化后:

通過grafna可視化圖形看:

2、zabbix-server上poller進程的性能監控
優化前:

優化后:

3、zabbix-server收集數據時各個進程的性能監控,一直處於100%的可以看到是zabbix busy poller process;優化后降了很多

預測原因
1)是不是zabbix-server端主機的性能不行,要不要切分出來,做代理之類的。
但是通過數據可以看到CPU只用了不到%6,說明主機還沒有完全跑起來,豈不是浪費資源了。所以,可以增加zabbix服務端收集數據的各個進程數量。那就動手試試看。

先了解一下zabbix-server收集數據時,需要哪些進程,以及對應與zabbix server配置文件里的哪個配置項,分別代表是什么意思?
收集數據時的進程有如下:

對應的配置文件如下:
StartTrappers=20 Trappers初始子進程數 StartPollers=20 初始化時啟動子進程數量,數量越多,則服務端吞吐能力越強,最系統資源消耗越大 StartIPMIPollers=1 主要用於IPMI技術用於獲取硬件狀態場景,如果無相關監控項,建議設置為0 StartDiscoverers=1 用於設置自動發現主機的子進程數量 StartPingers=10 用於設置啟用icmp協議PING主機方式啟動子進程數量 StartHTTPPollers=1 HTTP主動監測的進程數 StartProxyPollers=1 啟用多少子進程與代理端通信 StartPollersUnreachable=10 默認情況下,zabbix會啟動指定進程用於探測某些不可達主機(含IPMI場景);若場景中含有代理端,建議使用默認,若直接agent較多,根據值調整 StartDBSyncers=4 DB同步進程數量
通過ps -ef |grep zabbix來看一下zabbix服務端的進程分別代表什么意思:

報警器(alerter) 該類型的進程是用來發送報警通知的; 配置同步器(configuration syncer) 用於將配置文件中的配置信息同步到內存中緩存; 數據發送器(data sender) 服務器代理節點用於發送數據的進程(服務器端沒有這類進程); 數據庫看門狗(db watchdog) 該進程用於監視zabbix系統的數據庫狀態,當數據庫狀態變為不可用時,發送警告信息(服務器代理端不支持這類型進程)。 自動發現器(discoverer) 用於自動發現設備的進程; 步驟(escalator) 用於處理動作中的步驟的進程; 心跳發送器(heartbeat sender) 服務器代理端用於發送心跳信息(服務器端沒有這類型的進程); 歷史數據同步器(history syncer) 用於寫歷史數據表; 管家(housekeeper) 用於清理過期的歷史數據的進程; HTTP 輪詢器(http poller) 用於輪詢web類的監控項目; Ping檢查器(icmp pinger) 用於定期的進行ICMP PING檢查; ipmi 輪詢器(ipmi poller) 用於定期進行ipmi監控項目的檢查; java 輪詢器(java poller) 用於輪詢java 監控項目; 分布式節點看守器(node watcher) 用於在不同的分布式節點發送歷史數據和配置信息更新的進程; 輪詢器(poller) 用於普通的被動監控項目的輪詢; 服務器代理輪詢(proxy poller) 用於服務器代理的被動輪詢; 自我監控(self-monitoring) 用於收集Zabbix系統內部的監控信息; 定時器(timer) 用於處理觸發器中也時間相關的函數和維護模式的進程; 陷入器(trapper) 用於處理主動采集、陷入以及分布式節點間或服務器代理的通信; 不可到達輪詢器(unreachable poller) 用於輪詢不可到達到的設備; vmware 收集器(vmware collector) 負責從vmware服務進程中收集數據(服務器代理端不支持這種類型的進程);
圖片版的:

然后根據自己的zabbix服務狀態,我把我的配置文件打開了這幾個配置項,並修改了參數值;
那么這些參數值具體調多少合適呢?
我的理解:這里得根據你的客戶端數,服務器性能,然后得慢慢調,去測試才行
StartPollers=20 StartIPMIPollers=1 StartPollersUnreachable=10 StartTrappers=20 StartPingers=10 StartDBSyncers=4
知識項
1)隊列(Queue)
在Adminstartion --> Queue 這里可以看到
這里的隊列表示的是正在等待刷新的監控項;這里的圖片越綠越好,綠色表示我們的zabbix 服務端運行良好;像前面的圖片中有其他顏色的,表明有等待,可以通過最右上角那里查看是什么具體的細節;如:

2)zabbix的NVPS(number of values processed per second)
每秒處理數值數,可以作為衡量zabbix服務端性能指標之一

參考文檔: