Zabbix調(diào)優(yōu)不完全指南

image.png

從學(xué)習(xí)搭建zabbix到完成各類監(jiān)控、調(diào)優(yōu)、二次開發(fā)已經(jīng)過去了兩年,期間通過QQ學(xué)習(xí)群、zabbix官方社區(qū)、各個技術(shù)博客整理學(xué)習(xí)了不少關(guān)于各種報(bào)錯的處理方法,現(xiàn)在將常見的一些報(bào)錯處理方法整理出來分享給大家。
在這先貼幾個鏈接,給自己過去的簡書增加些流量:
Centos7安裝Zabbix server3.4
zabbix通過SNMP監(jiān)控路由器,交換機(jī)
zabbix通過IPMI監(jiān)控服務(wù)器硬件
zabbix agent部署及自定義SQL server監(jiān)控模版
Zabbix+Raspberry pi監(jiān)控機(jī)房溫濕度
Zabbix監(jiān)控服務(wù)器系統(tǒng)時間
zabbix監(jiān)控Vmware運(yùn)行
好了,廣告打完,現(xiàn)在開始介紹常見報(bào)錯處理方法:
問題一、Zabbix server內(nèi)存溢出,無法啟動
問題原因:
這是由于zabbix默認(rèn)的緩存配置只有8M,當(dāng)你zabbix正常運(yùn)行一段時間后,大批量添加一些被監(jiān)控設(shè)備就會出現(xiàn)這種情況。
解決方法:
打開zabbix_server.conf文件,將CacheSize改一個較大的值,我現(xiàn)在給自己配的是1024M。

vim /etc/zabbix/zabbix_server.conf
CacheSize=1024M  #第385行

問題二、Zabbix housekeeper processes more than 75% busy
問題原因:
由于zabbix每天都會產(chǎn)生大量數(shù)據(jù)(比如我現(xiàn)在監(jiān)控項(xiàng)有20K+,每30s-5min每個監(jiān)控項(xiàng)會產(chǎn)生一條數(shù)據(jù),一天會產(chǎn)生非常多數(shù)據(jù)),為了防止數(shù)據(jù)庫爆炸,zabbix會自動定期清理歷史數(shù)據(jù)(這個歷史數(shù)據(jù)保留時間值你可以在監(jiān)控項(xiàng)中自己配置),但清理歷史數(shù)據(jù)會影響mysql性能,就會出現(xiàn)上面的報(bào)錯。
解決方法:
這里需要調(diào)整兩個參數(shù),一個是清理時間間隔、一個是清理的最大刪除量。

vim /etc/zabbix/zabbix_server.conf
HousekeepingFrequency=12  #原值是每一小時清理一次,建議改為12或24小時清理一次。第363行
MaxHousekeeperDelete=100000  #原值為每次清理5000條,建議改為上限100000條。 第376行

問題三、Zabbix poller processes more than 75% busy
問題原因:
這里可能有如下兩個原因:
1、通過Zabbix agent采集數(shù)據(jù)的設(shè)備死機(jī)或其他原因?qū)е聑abbix agent死掉server獲取不到數(shù)據(jù)。
2、server向agent獲取數(shù)據(jù)時時間過長,超過了server設(shè)置的timeout時間。
解決方法:
1、增加zabbix server啟動時初始化的進(jìn)程數(shù)量:

vim /etc/zabbix/zabbix_server.conf
StartPollers=12  #第165行,視自己服務(wù)器性能改,上限是1000,如果改完發(fā)現(xiàn)啟不起來可以改小一點(diǎn)。

2、修改模板自動發(fā)現(xiàn)規(guī)則中的保留失去的資源期間為0。
問題四:Zabbix discoverer processes more than 75% busy
問題原因:
看問題報(bào)警字面意思是自動發(fā)現(xiàn)進(jìn)程忙碌數(shù)超過75%,這是因?yàn)槲覀冇玫谋O(jiān)控模版中帶著大量自動發(fā)現(xiàn)項(xiàng),每一個自動發(fā)現(xiàn)項(xiàng)都會產(chǎn)生一個進(jìn)程,所以一般我們添加多臺被監(jiān)控設(shè)備時就會出現(xiàn)這樣的報(bào)錯。
解決辦法:
修改自動發(fā)現(xiàn)進(jìn)程數(shù)。

vim /etc/zabbix/zabbix_server.conf
StartDiscoverers=10  #第219行,取掉#號,默認(rèn)為1,改為10,上限為250請視自己的需求和服務(wù)器配置而定

其次還可以通過執(zhí)行定期重啟server腳本來清理進(jìn)程,釋放內(nèi)存。

[root@m01 ~]# grep 'StartDiscoverers' /etc/zabbix/zabbix_server.conf2 3 ### Option: StartDiscoverers4 5 StartDiscoverers=56 7 [root@m01 ~]# systemctl restart zabbix-server.service
[root@m01 ~]# crontab -e2 3 @daily service zabbix-server restart > /dev/null 2>&14 5

問題五:Zabbix alerter processes more than 75% busy
問題原因:
這個問題通常是因?yàn)猷]件告警進(jìn)程過于繁忙導(dǎo)致的,如果郵件動作間隔設(shè)置過短,在一些極端情況下(比如核心網(wǎng)絡(luò)宕了)會發(fā)生大量郵件(比如上萬條郵件)告警,則會導(dǎo)致郵件進(jìn)程繁忙或者郵件進(jìn)程直接掛了。
解決方法:
修改郵件腳本,將郵件的動作改為打印時間,等待郵件完全釋放再改回來,如下:

[root@m01 ~]# cat /usr/lib/zabbix/alertscripts/sms 2 3 #!/bin/bash 4 5 echo `date` >>/tmp/sms.txt 

問題六:Zabbix poller processes more than 75% busy
問題原因:
1、zabbix消耗的內(nèi)存過多。
2、某個進(jìn)程卡住了。
3、僵尸進(jìn)程太多、出錯、導(dǎo)致慢了。
4、網(wǎng)絡(luò)延時。
解決方案:
這里有兩個解決方案,第一是修改zabbix_server.conf文件調(diào)優(yōu)性能,第二是簡單粗暴定期重啟server釋放進(jìn)程。

vim /etc/zabbix/zabbix_server.conf
StartPollers=12 #第165行,我現(xiàn)在設(shè)置為12,如果你服務(wù)器性能夠強(qiáng)可以繼續(xù)增加,上限是1000

其次是簡單粗暴定期重啟

service zabbix-server restart
crontab -e 調(diào)出Cron編輯器中增加一個計(jì)劃:
@daily service zabbix-server restart > /dev/null 2>&1

問題七:server端日志中出現(xiàn)大量first network error, wait for 15 seconds
問題原因:
產(chǎn)生這個問題的主要原因是你的監(jiān)控項(xiàng)執(zhí)行時間過長,超過了默認(rèn)配置的timeout=15s時間,這里只要將你的server、proxy和agent的conf文件中的timeout時間改長一點(diǎn)即可,上限是30s,如果30s還不夠那就要改系統(tǒng)源碼來突破這個上限了。
解決方法:

vim /etc/zabbix/zabbix_server.conf #這里以修改server端conf文件為例,其他兩個類似的就不列舉了
Timeout=30  #第448行

問題八:More than 100 items having missing data for more than 10 minutes和Zabbix poller processes more than 75% busy
問題原因:
這兩個問題的主要原因是你配置的緩存或者進(jìn)程數(shù)太少,導(dǎo)致監(jiān)控項(xiàng)很多時服務(wù)器來不及處理。
解決方法:
直接增加server端進(jìn)程數(shù)和緩存即可。

vim /etc/zabbix/zabbix_server.conf
StartPollers=500
StartPollersUnreachable=50
StartTrappers=30
StartDiscoverers=6
CacheSize=1G
CacheUpdateFrequency=300
StartDBSyncers=20
HistoryCacheSize=512M
TrendCacheSize=256M
HistoryTextCacheSize=80M
ValueCacheSize=1G  #這里把關(guān)于該問題的可能性能項(xiàng)配置一起給到大家

問題九:connection to database 'zabbix' failed: [1040] Too many connections
問題原因:
從字面意思上可以看出數(shù)據(jù)庫的連接數(shù)已經(jīng)超出最大限制。
解決方法:
直接修改mysql的最大連接數(shù)即可。

vim /etc/my.cnf
max_connections=1000  #將最大鏈接數(shù)調(diào)整為1000
systemctl restart mariadb.service  #重啟SQL

問題十:批量添加大量被監(jiān)控設(shè)備后出現(xiàn)服務(wù)端直接宕機(jī),報(bào)警提示Zabbix value cache working in low memory mode Less than 25% free in the configuration cache。
問題原因:
由于大量添加被監(jiān)控設(shè)備,導(dǎo)致服務(wù)器內(nèi)存溢出。
解決方案:

vim /etc/zabbix/zabbix_server.conf
CacheSize=1024M  #第385行

問題十一:Zabbix alerter processes more than 75% busy
問題原因:
從字面意思可以看出當(dāng)你產(chǎn)生大量告警是即會出現(xiàn)這個報(bào)錯,告警進(jìn)程過多。
解決方案:
調(diào)整conf文件中的最大告警進(jìn)程數(shù)即可。

vim /etc/zabbix/zabbix_server.conf
StartAlerters=3  #第254行,去掉#注釋,修改為10,上限為100。

問題十二:zabbix unreachable poller processes more than 75 busy
問題原因:
產(chǎn)生這個問題的主要原因是zabbix server端輪詢的不可達(dá)設(shè)備(被監(jiān)控設(shè)備處于死機(jī)狀態(tài)、agent與server數(shù)據(jù)傳輸超過timeout時間、mysql或zabbix server的io卡住了)過多導(dǎo)致。
解決方案:

vim /etc/zabbix/zabbix_server.conf
StartPingers=12  #第165行,修改為12,上限是1000

以上這些基本都是因?yàn)閦abbix的zabbix_server.conf文件中的默認(rèn)性能配置過低導(dǎo)致的錯誤,在日常使用中經(jīng)常會遇到,只要進(jìn)行簡單配置后重新啟動zabbix server即可解決。該貼會持續(xù)不定期更新我日常工作中遇到的各種問題。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容