1. 程式人生 > 其它 >Zabbix調優不完全指南(共12個優化案例)

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。

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

問題二、Zabbix housekeeper processes more than 75% busy

問題原因:

由於zabbix每天都會產生大量資料(比如我現在監控項有20K+,每30s-5min每個監控項會產生一條資料,一天會產生非常多資料),為了防止資料庫爆炸,zabbix會自動定期清理歷史資料(這個歷史資料保留時間值你可以在監控項中自己配置),但清理歷史資料會影響mysql效能,就會出現上面的報錯。

解決方法:

這裡需要調整兩個引數,一個是清理時間間隔、一個是清理的最大刪除量。

  1. vim /etc/zabbix/zabbix_server.conf
  2. HousekeepingFrequency=12 #原值是每一小時清理一次,建議改為12或24小時清理一次。第363行
  3. 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啟動時初始化的程序數量:

  1. vim /etc/zabbix/zabbix_server.conf
  2. StartPollers=12 #第165行,視自己伺服器效能改,上限是1000,如果改完發現啟不起來可以改小一點。

2、修改模板自動發現規則中的保留失去的資源期間為0。

問題四:Zabbix discoverer processes more than 75% busy

問題原因:

看問題報警字面意思是自動發現程序忙碌數超過75%,這是因為我們用的監控模版中帶著大量自動發現項,每一個自動發現項都會產生一個程序,所以一般我們新增多臺被監控裝置時就會出現這樣的報錯。

解決辦法:

修改自動發現程序數。

  1. vim /etc/zabbix/zabbix_server.conf
  2. StartDiscoverers=10 #第219行,取掉#號,預設為1,改為10,上限為250請視自己的需求和伺服器配置而定

其次還可以通過執行定期重啟server指令碼來清理程序,釋放記憶體。

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

問題五:Zabbix alerter processes more than 75% busy

問題原因:

這個問題通常是因為郵件告警程序過於繁忙導致的,如果郵件動作間隔設定過短,在一些極端情況下(比如核心網路宕了)會發生大量郵件(比如上萬條郵件)告警,則會導致郵件程序繁忙或者郵件程序直接掛了。

解決方法:

修改郵件指令碼,將郵件的動作改為列印時間,等待郵件完全釋放再改回來,如下:

  1. [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釋放程序。

  1. vim /etc/zabbix/zabbix_server.conf
  2. StartPollers=12 #第165行,我現在設定為12,如果你伺服器效能夠強可以繼續增加,上限是1000

其次是簡單粗暴定期重啟

  1. service zabbix-server restart
  2. crontab -e 調出Cron編輯器中增加一個計劃:
  3. @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還不夠那就要改系統原始碼來突破這個上限了。

解決方法:

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

問題八:More than 100 items having missing data for more than 10 minutes和Zabbix poller processes more than 75% busy

問題原因:

這兩個問題的主要原因是你配置的快取或者程序數太少,導致監控項很多時伺服器來不及處理。

解決方法:

直接增加server端程序數和快取即可。

  1. vim /etc/zabbix/zabbix_server.conf
  2. StartPollers=500
  3. StartPollersUnreachable=50
  4. StartTrappers=30
  5. StartDiscoverers=6
  6. CacheSize=1G
  7. CacheUpdateFrequency=300
  8. StartDBSyncers=20
  9. HistoryCacheSize=512M
  10. TrendCacheSize=256M
  11. HistoryTextCacheSize=80M
  12. ValueCacheSize=1G #這裡把關於該問題的可能效能項配置一起給到大家

問題九:connection to database 'zabbix' failed: [1040] Too many connections

問題原因:

從字面意思上可以看出資料庫的連線數已經超出最大限制。

解決方法:

直接修改mysql的最大連線數即可。

  1. vim /etc/my.cnf
  2. max_connections=1000 #將最大連結數調整為1000
  3. systemctl restart mariadb.service #重啟SQL

問題十:批量新增大量被監控裝置後出現服務端直接宕機,報警提示Zabbix value cache working in low memory mode Less than 25% free in the configuration cache。

問題原因:

由於大量新增被監控裝置,導致伺服器記憶體溢位。

解決方案:

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

問題十一:Zabbix alerter processes more than 75% busy

問題原因:

從字面意思可以看出當你產生大量告警是即會出現這個報錯,告警程序過多。

解決方案:

調整conf檔案中的最大告警程序數即可。

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

問題十二:zabbix unreachable poller processes more than 75 busy

問題原因:

產生這個問題的主要原因是zabbix server端輪詢的不可達裝置(被監控裝置處於宕機狀態、agent與server資料傳輸超過timeout時間、mysql或zabbix server的io卡住了)過多導致。

解決方案:

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

以上這些基本都是因為zabbix的zabbix_server.conf檔案中的預設效能配置過低導致的錯誤,在日常使用中經常會遇到,只要進行簡單配置後重新啟動zabbix server即可解決。