zabbix4.0的基礎性能調優和測試小工具

    如何衡量zabbix的性能情況?一臺基礎配置的zabbix到底能監控多少主機,能使用監控多少監控項?性能瓶頸出在哪裏?如何優化配置?

   參考官方手冊https://www.zabbix.com/documentation/4.0/zh/manual/appendix/performance_tuning


一、NVPS


在完成zabbix搭建後,zabbix首先監控的第一個主機就是自身。可以在儀表盤中看到這些。

image.png

每秒寫入的新值數量 (簡稱NVPS),是衡量zabbix主機性能的一個很重要的指標。

影響NVPS指標的主要是以下幾個因素

• 監控項類型, 數據類型, SNMPv3, triggers的數量和複雜度。

• Housekeeper 設置和數據庫大小。

• 同時在線WEB界面的用戶數量

說明:

1、更新頻率會直接影響到 NVPS的值.

2、計算時考慮來自監控設備的數據。

3、“Zabbix trapper” 和 “SNMP trap” 都是不在計算裏的.

關於zabbix中NVPS的大致估算,可以以此來衡量性能消耗

image.png

1)每個主機60個監控項,更新頻率一分鐘一次,100個主機產生的NVPS大致爲100

2)每個主機300個監控項,更新頻率一分鐘一次,100個主機產生的NVPS大致爲500



歷史數據分析也會影響zabbix性能,但是不會消耗太多

image.png


二、如何判斷zabbix性能下降


如果zabbix性能下降,會有如下現象

 

• Zabbix 隊列裏面太多的延遲的監控項 Administration->Queue

• 數據圖形裏經常出現的間隙斷層, 甚至有些監控項沒有數據。

• 觸發器包含nodata()表達式的誤報

• 無響應和響應遲鈍的WEB請求。

• 沒有告警或者是數以千計的告警


最明顯的就是列隊中,有很多主機延遲大於30秒甚至超過1分鐘

image.png



2.1一些很重要分析工具


top工具

使用top命令可以很直觀的看到cpu,內存的消耗和一些進程信息

image.png



iostat工具

iostat是查看Linux系統io是否存在瓶頸頂好用的一個命令

image.png


vmstat工具

Virtual Memory Statistics 虛擬內存統計 命令用來顯示Linux系統虛擬內存狀態,也可以報告關於進程、內存、I/O等系統整體運行狀態。

image.png


sar工具

sar 是非常強大性能分析命令,通過 sar 命令可以全面的獲取系統的 CPU、運行隊列、磁盤 I/O、交換區、內存、 cpu 中斷、網絡等性能數據。

image.png



watch工具

watch可以幫你監測一個命令的運行結果,來監測你想要的一切命令的結果變化,而且官方推薦使用這個工具

watch -tn 0.2 'ps -o cmd -C zabbix_server -C zabbix_proxy -C zabbix_agentd'

image.png

2.2 查看進程


可以查看zabbix-server進程,觀察子進程響應時延

ps aux |grep zabbix_server

image.png

也可以查看zabbix-server history同步的時延

ps aux |grep sync

image.png


3.3 查看zabbix自身監控圖形


對zabbix完成配置後,會對自己作爲第一個主機進行監控,最直接的方式就是查看監控圖形

image.png


image.png



三、問題分析

3.1打開日誌調試開關


當出現異常時,需要打開 zabbix日誌debug模式,通過日誌來判斷故障原因

 zabbix_server -R log_level_increase=alerter                #增加所有進程日誌級別
 
 tail -f /var/log/zabbix/zabbix_server.log                   #查看最新日誌

image.png


3.2 mysql數據庫分析

    zabbix推薦後端使用mysql,可以簡單對mysql進行分析。

    首先在zabbix_server.conf配置文件中修改 LogSlowQueries=3000

   image.png

   使用innotop命令查詢

   

  innotop是一個mysql數據庫實時監控工具,其功能強大,信息種類繁多,很能體現數據庫的狀態.它實際上是一個perl腳本,整合show status/show variables/show engine innodb status輸出結果並進行統計格式化輸出.

yum install innotop

image.png



image.png



然後可以簡單分析數據庫慢查詢日誌

grep slow /var/log/zabbix/zabbix_server.log

image.png


當數據庫出慢查詢時,會出現如下問題

image.png



四、web debug


可以在web前端開啓web debug模式,更加直接的分析問題


在用戶羣組下,找到“Enabled debug mode",開啓即可

image.png


然後隨意在"Enabled debug mode"羣組下創建一個用,如debug,可以將權限設置爲超級管理員然後登陸

image.png


登陸後,可以看到在每個頁面都有一個”調試“小按鈕,點擊可以看到測試腳本結果

image.png

按鈕將在頁面內容下方打開一個新窗口,其中包含頁面的SQL統計信息,以及API調用和各個SQL語句的列表如果頁面出現性能問題,可以使用此窗口搜索問題的根本原因。

image.png

如果數據查詢有異常,可以看到明顯的查詢時間過長

image.png


五、優化性能


5.1 配置文件zabbix_server.conf優化

建議按照如下方式調整zabbix_server.conf配置文件進行優化

#調整zabbix_server進程數量
StartPollers=80
StartPingers=10
StartPollersUnreachable=80
StartIPMIPollers=10
StartTrappers=20
StartDBSyncers=6
#調整內存大小
VMwareCacheSize=64M
CacheSize=32M
HistoryCacheSize=256M
TrendCacheSize=64M
HistoryIndexCacheSize = 32M
ValueCacheSize=64M


5.2mysql數據庫調優

zabbix推薦使用innodb引擎的mysql數據庫,所以要針對數據庫配置文件進行優化

mysqladmin status / variables    #檢查數據庫配置狀態


#調整數據庫innodb
innodb_file_per_table = 1
innodb_buffer_pool_size=<large> (~75% of total RAM)
innodb_buffer_pool_instances = 4 (MySQL 5.6 - 8)
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
innodb_log_file_size = 256M


5.3進一步優化

1)數據庫使用分區表

通過這種方式可以將一張大的表分成很多區.

只對那些數據量大的有歷史意義的表操作:

history_log,history_str,history_text,history_uint

trends,trends_uint

好處:

更快刪除過期數據

DB將擁有更好的性能


當zabbix-server頻繁出現“Zabbix housekeeper processes more than 75% busy”的告警時,此時housekeeper的性能正在下降

則需要使用分區表


2)web服務器使用nginx

nginx服務器的響應速度要明顯優於apache服務器


3)使用Zabbix Proxy

當監控主機過多,可以使用多個zabbix Proxy進行分佈式監控

Zabbix Proxy "轉換" 被動檢查成主動。

負載分佈在Zabbix Proxy代理之間如果一個Proxy高負載, 網絡節點可以切換到其他的Proxy上

簡單易維護當

Zabbix server出現故障時Proxy可以緩存數據保證數據不丟


4)數據庫分離或採用硬件

可以採用數據庫與 zabbix分離,zabbix-server和前端一臺服務器,數據庫一臺服務器,且數據庫服務的性能要高於前者,使用硬件服務器部署要優於使用虛擬機部署

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章