zabbix性能優化記


以前用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的NVPSnumber of values processed per second)
 
每秒處理數值數,可以作為衡量zabbix服務端性能指標之一
 
 
 
參考文檔:
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM