zabbix性能優化記

之前用zabbix,都是簡簡單單的把服務端、客戶端一搭,模板監控項一弄就完了。沒怎麼真正去弄過優化啊之類的。如今有個場景就是獲取zabbix的數據賊慢,得對zabbix進行優化,開始動手分析一下。
 
先看如下幾張圖,這是優化先後的 對比圖
 
1)隊列數
 
優化前:
 
 
優化後:
 
 
經過grafna可視化圖形看:
 
 
 
二、zabbix-server上poller進程的性能監控
 
優化前:
 
 
 
優化後:
 
 
 
三、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服務端性能指標之一
 
 
 
參考文檔:
相關文章
相關標籤/搜索