Zabbix調優不完全指南(共12個優化案例)
Zabbix調優不完全指南(共12個優化案例)
字數 4105閱讀 6915評論 2贊 17 轉載於https://www.talkwithtrend.com/Article/245203從學習搭建zabbix到完成各類監控、調優、二次開發已經過去了兩年,期間通過QQ學習群、zabbix官方社群、各個技術部落格整理學習了不少關於各種報錯的處理方法,現在將常見的一些報錯處理方法整理出來分享給大家。 現在開始介紹常見報錯處理方法:
問題一、Zabbix server記憶體溢位,無法啟動
問題原因:
這是由於zabbix預設的快取配置只有8M,當你zabbix正常執行一段時間後,大批量新增一些被監控裝置就會出現這種情況。
解決方法:
開啟zabbix_server.conf檔案,將CacheSize改一個較大的值,我現在給自己配的是1024M。
vim /etc/zabbix/zabbix_server.conf
CacheSize=1024M #第385行
問題二、Zabbix housekeeper processes more than 75% busy
問題原因:
由於zabbix每天都會產生大量資料(比如我現在監控項有20K+,每30s-5min每個監控項會產生一條資料,一天會產生非常多資料),為了防止資料庫爆炸,zabbix會自動定期清理歷史資料(這個歷史資料保留時間值你可以在監控項中自己配置),但清理歷史資料會影響mysql效能,就會出現上面的報錯。
解決方法:
這裡需要調整兩個引數,一個是清理時間間隔、一個是清理的最大刪除量。
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採集資料的裝置宕機或其他原因導致zabbix agent死掉server獲取不到資料。
2、server向agent獲取資料時時間過長,超過了server設定的timeout時間。
解決方法:
1、增加zabbix server啟動時初始化的程序數量:
vim /etc/zabbix/zabbix_server.conf
StartPollers=12 #第165行,視自己伺服器效能改,上限是1000,如果改完發現啟不起來可以改小一點。
2、修改模板自動發現規則中的保留失去的資源期間為0。
問題四:Zabbix discoverer processes more than 75% busy
問題原因:
看問題報警字面意思是自動發現程序忙碌數超過75%,這是因為我們用的監控模版中帶著大量自動發現項,每一個自動發現項都會產生一個程序,所以一般我們新增多臺被監控裝置時就會出現這樣的報錯。
解決辦法:
修改自動發現程序數。
vim /etc/zabbix/zabbix_server.conf
StartDiscoverers=10 #第219行,取掉#號,預設為1,改為10,上限為250請視自己的需求和伺服器配置而定
其次還可以通過執行定期重啟server指令碼來清理程序,釋放記憶體。
[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
問題原因:
這個問題通常是因為郵件告警程序過於繁忙導致的,如果郵件動作間隔設定過短,在一些極端情況下(比如核心網路宕了)會發生大量郵件(比如上萬條郵件)告警,則會導致郵件程序繁忙或者郵件程序直接掛了。
解決方法:
修改郵件指令碼,將郵件的動作改為列印時間,等待郵件完全釋放再改回來,如下:
[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消耗的記憶體過多。
2、某個程序卡住了。
3、殭屍程序太多、出錯、導致慢了。
4、網路延時。
解決方案:
這裡有兩個解決方案,第一是修改zabbix_server.conf檔案調優效能,第二是簡單粗暴定期重啟server釋放程序。
vim /etc/zabbix/zabbix_server.conf
StartPollers=12 #第165行,我現在設定為12,如果你伺服器效能夠強可以繼續增加,上限是1000
其次是簡單粗暴定期重啟
service zabbix-server restart
crontab -e 調出Cron編輯器中增加一個計劃:
@daily service zabbix-server restart > /dev/null 2>&1
問題七:server端日誌中出現大量first network error, wait for 15 seconds
問題原因:
產生這個問題的主要原因是你的監控項執行時間過長,超過了預設配置的timeout=15s時間,這裡只要將你的server、proxy和agent的conf檔案中的timeout時間改長一點即可,上限是30s,如果30s還不夠那就要改系統原始碼來突破這個上限了。
解決方法:
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
問題原因:
這兩個問題的主要原因是你配置的快取或者程序數太少,導致監控項很多時伺服器來不及處理。
解決方法:
直接增加server端程序數和快取即可。
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 #這裡把關於該問題的可能效能項配置一起給到大家
問題九:connection to database 'zabbix' failed: [1040] Too many connections
問題原因:
從字面意思上可以看出資料庫的連線數已經超出最大限制。
解決方法:
直接修改mysql的最大連線數即可。
vim /etc/my.cnf
max_connections=1000 #將最大連結數調整為1000
systemctl restart mariadb.service #重啟SQL
問題十:批量新增大量被監控裝置後出現服務端直接宕機,報警提示Zabbix value cache working in low memory mode Less than 25% free in the configuration cache。
問題原因:
由於大量新增被監控裝置,導致伺服器記憶體溢位。
解決方案:
vim /etc/zabbix/zabbix_server.conf
CacheSize=1024M #第385行
問題十一:Zabbix alerter processes more than 75% busy
問題原因:
從字面意思可以看出當你產生大量告警是即會出現這個報錯,告警程序過多。
解決方案:
調整conf檔案中的最大告警程序數即可。
vim /etc/zabbix/zabbix_server.conf
StartAlerters=3 #第254行,去掉#註釋,修改為10,上限為100。
問題十二:zabbix unreachable poller processes more than 75 busy
問題原因:
產生這個問題的主要原因是zabbix server端輪詢的不可達裝置(被監控裝置處於宕機狀態、agent與server資料傳輸超過timeout時間、mysql或zabbix server的io卡住了)過多導致。
解決方案:
vim /etc/zabbix/zabbix_server.conf
StartPingers=12 #第165行,修改為12,上限是1000
以上這些基本都是因為zabbix的zabbix_server.conf檔案中的預設效能配置過低導致的錯誤,在日常使用中經常會遇到,只要進行簡單配置後重新啟動zabbix server即可解決。