如何衡量Zabbix的性能情況?一臺(tái)基礎(chǔ)配置的Zabbix到底能監(jiān)控多少主機(jī),能使用監(jiān)控多少監(jiān)控項(xiàng)?性能瓶頸出在哪里?如何優(yōu)化配置?
參考官方手冊(cè)https://www.zabbix.com/documentation/4.0/zh/manual/appendix/performance_tuning
一、NVPS
在完成zabbix搭建后,zabbix首先監(jiān)控的第一個(gè)主機(jī)就是自身??梢栽趦x表盤中看到這些。
每秒寫入的新值數(shù)量 (簡(jiǎn)稱NVPS),是衡量zabbix主機(jī)性能的一個(gè)很重要的指標(biāo)。
影響NVPS指標(biāo)的主要是以下幾個(gè)因素
• 監(jiān)控項(xiàng)類型, 數(shù)據(jù)類型, SNMPv3, triggers的數(shù)量和復(fù)雜度。
• Housekeeper 設(shè)置和數(shù)據(jù)庫(kù)大小。
• 同時(shí)在線WEB界面的用戶數(shù)量
說(shuō)明:
1、更新頻率會(huì)直接影響到 NVPS的值.
2、計(jì)算時(shí)考慮來(lái)自監(jiān)控設(shè)備的數(shù)據(jù)。
3、“Zabbix trapper” 和 “SNMP trap” 都是不在計(jì)算里的.
關(guān)于zabbix中NVPS的大致估算,可以以此來(lái)衡量性能消耗
1)每個(gè)主機(jī)60個(gè)監(jiān)控項(xiàng),更新頻率一分鐘一次,100個(gè)主機(jī)產(chǎn)生的NVPS大致為100
2)每個(gè)主機(jī)300個(gè)監(jiān)控項(xiàng),更新頻率一分鐘一次,100個(gè)主機(jī)產(chǎn)生的NVPS大致為500
歷史數(shù)據(jù)分析也會(huì)影響zabbix性能,但是不會(huì)消耗太多
二、如何判斷zabbix性能下降
如果zabbix性能下降,會(huì)有如下現(xiàn)象
• Zabbix 隊(duì)列里面太多的延遲的監(jiān)控項(xiàng) Administration->Queue
• 數(shù)據(jù)圖形里經(jīng)常出現(xiàn)的間隙斷層, 甚至有些監(jiān)控項(xiàng)沒有數(shù)據(jù)。
• 觸發(fā)器包含nodata()表達(dá)式的誤報(bào)
• 無(wú)響應(yīng)和響應(yīng)遲鈍的WEB請(qǐng)求。
• 沒有告警或者是數(shù)以千計(jì)的告警
最明顯的就是列隊(duì)中,有很多主機(jī)延遲大于30秒甚至超過(guò)1分鐘
2.1一些很重要分析工具
top工具
使用top命令可以很直觀的看到cpu,內(nèi)存的消耗和一些進(jìn)程信息
iostat工具
iostat是查看Linux系統(tǒng)io是否存在瓶頸頂好用的一個(gè)命令
vmstat工具
Virtual Memory Statistics 虛擬內(nèi)存統(tǒng)計(jì) 命令用來(lái)顯示Linux系統(tǒng)虛擬內(nèi)存狀態(tài),也可以報(bào)告關(guān)于進(jìn)程、內(nèi)存、I/O等系統(tǒng)整體運(yùn)行狀態(tài)。
sar工具
sar 是非常強(qiáng)大性能分析命令,通過(guò) sar 命令可以全面的獲取系統(tǒng)的 CPU、運(yùn)行隊(duì)列、磁盤 I/O、交換區(qū)、內(nèi)存、 cpu 中斷、網(wǎng)絡(luò)等性能數(shù)據(jù)。
watch工具
watch可以幫你監(jiān)測(cè)一個(gè)命令的運(yùn)行結(jié)果,來(lái)監(jiān)測(cè)你想要的一切命令的結(jié)果變化,而且官方推薦使用這個(gè)工具
watch -tn 0.2 'ps -o cmd -C zabbix_server -C zabbix_proxy -C zabbix_agentd'
2.2 查看進(jìn)程
可以查看zabbix-server進(jìn)程,觀察子進(jìn)程響應(yīng)時(shí)延
ps aux |grep zabbix_server
也可以查看zabbix-server history同步的時(shí)延
ps aux |grep sync
3.3 查看zabbix自身監(jiān)控圖形
對(duì)zabbix完成配置后,會(huì)對(duì)自己作為第一個(gè)主機(jī)進(jìn)行監(jiān)控,最直接的方式就是查看監(jiān)控圖形
三、問(wèn)題分析
3.1打開日志調(diào)試開關(guān)
當(dāng)出現(xiàn)異常時(shí),需要打開 zabbix日志debug模式,通過(guò)日志來(lái)判斷故障原因
zabbix_server -R log_level_increase=alerter #增加所有進(jìn)程日志級(jí)別 tail -f /var/log/zabbix/zabbix_server.log #查看最新日志
3.2 mysql數(shù)據(jù)庫(kù)分析
zabbix推薦后端使用mysql,可以簡(jiǎn)單對(duì)mysql進(jìn)行分析。
首先在zabbix_server.conf配置文件中修改 LogSlowQueries=3000
使用innotop命令查詢
innotop是一個(gè)mysql數(shù)據(jù)庫(kù)實(shí)時(shí)監(jiān)控工具,其功能強(qiáng)大,信息種類繁多,很能體現(xiàn)數(shù)據(jù)庫(kù)的狀態(tài).它實(shí)際上是一個(gè)perl腳本,整合show status/show variables/show engine innodb status輸出結(jié)果并進(jìn)行統(tǒng)計(jì)格式化輸出.
yum install innotop
然后可以簡(jiǎn)單分析數(shù)據(jù)庫(kù)慢查詢?nèi)罩?/p>
grep slow /var/log/zabbix/zabbix_server.log
當(dāng)數(shù)據(jù)庫(kù)出慢查詢時(shí),會(huì)出現(xiàn)如下問(wèn)題
四、web debug
可以在web前端開啟web debug模式,更加直接的分析問(wèn)題
在用戶群組下,找到“Enabled debug mode”,開啟即可
然后隨意在”Enabled debug mode”群組下創(chuàng)建一個(gè)用,如debug,可以將權(quán)限設(shè)置為超級(jí)管理員然后登陸
登陸后,可以看到在每個(gè)頁(yè)面都有一個(gè)”調(diào)試“小按鈕,點(diǎn)擊可以看到測(cè)試腳本結(jié)果
按鈕將在頁(yè)面內(nèi)容下方打開一個(gè)新窗口,其中包含頁(yè)面的SQL統(tǒng)計(jì)信息,以及API調(diào)用和各個(gè)SQL語(yǔ)句的列表,如果頁(yè)面出現(xiàn)性能問(wèn)題,可以使用此窗口搜索問(wèn)題的根本原因。
如果數(shù)據(jù)查詢有異常,可以看到明顯的查詢時(shí)間過(guò)長(zhǎng)
五、優(yōu)化性能
5.1 配置文件zabbix_server.conf優(yōu)化
建議按照如下方式調(diào)整zabbix_server.conf配置文件進(jìn)行優(yōu)化
#調(diào)整zabbix_server進(jìn)程數(shù)量 StartPollers=80 StartPingers=10 StartPollersUnreachable=80 StartIPMIPollers=10 StartTrappers=20 StartDBSyncers=6
#調(diào)整內(nèi)存大小 VMwareCacheSize=64M CacheSize=32M HistoryCacheSize=256M TrendCacheSize=64M HistoryIndexCacheSize = 32M ValueCacheSize=64M
5.2mysql數(shù)據(jù)庫(kù)調(diào)優(yōu)
zabbix推薦使用innodb引擎的mysql數(shù)據(jù)庫(kù),所以要針對(duì)數(shù)據(jù)庫(kù)配置文件進(jìn)行優(yōu)化
mysqladmin status / variables #檢查數(shù)據(jù)庫(kù)配置狀態(tài)
#調(diào)整數(shù)據(jù)庫(kù)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進(jìn)一步優(yōu)化
1)數(shù)據(jù)庫(kù)使用分區(qū)表
通過(guò)這種方式可以將一張大的表分成很多區(qū).
只對(duì)那些數(shù)據(jù)量大的有歷史意義的表操作:
history_log,history_str,history_text,history_uint
trends,trends_uint
好處:
更快刪除過(guò)期數(shù)據(jù)
DB將擁有更好的性能
當(dāng)zabbix-server頻繁出現(xiàn)“Zabbix housekeeper processes more than 75% busy”的告警時(shí),此時(shí)housekeeper的性能正在下降
則需要使用分區(qū)表
2)web服務(wù)器使用nginx
nginx服務(wù)器的響應(yīng)速度要明顯優(yōu)于apache服務(wù)器
3)使用Zabbix Proxy
當(dāng)監(jiān)控主機(jī)過(guò)多,可以使用多個(gè)zabbix Proxy進(jìn)行分布式監(jiān)控
Zabbix Proxy “轉(zhuǎn)換” 被動(dòng)檢查成主動(dòng)。
負(fù)載分布在Zabbix Proxy代理之間如果一個(gè)Proxy高負(fù)載, 網(wǎng)絡(luò)節(jié)點(diǎn)可以切換到其他的Proxy上
簡(jiǎn)單易維護(hù)當(dāng)
Zabbix server出現(xiàn)故障時(shí)Proxy可以緩存數(shù)據(jù)保證數(shù)據(jù)不丟
4)數(shù)據(jù)庫(kù)分離或采用硬件
可以采用數(shù)據(jù)庫(kù)與 zabbix分離,zabbix-server和前端一臺(tái)服務(wù)器,數(shù)據(jù)庫(kù)一臺(tái)服務(wù)器,且數(shù)據(jù)庫(kù)服務(wù)的性能要高于前者,使用硬件服務(wù)器部署要優(yōu)于使用虛擬機(jī)部署。