zabbix默認的配置即使機器128核心,256內存,只能抗住10-20台的監控,如果再多就需要修改配置了。
一.配置文件
server端配置文件添加如下
StartPollers=160
StartPollersUnreacheable=80
StartTrappers=20
StartPingers=100
StartDiscoverers=120
Cachesize=1024M
startDBSyncers=16
HistoryCacheSize=1024M
TrendCacheSize=1024M
HIstoryTextCacheSize-512M
二.數據庫
如果數據庫和zabbix在一台機器,可以使用socket連接,速度會提高。
數據庫zabbix來說,選擇InnoDB引擎,效率是其它引擎的1.5倍
對history類型的(history、history_uint等)大表進行拆分操作,關閉housekeeper禁止自動定期清除歷史記錄數據,因為對於數據庫特別是對於InnoDB引擎大數據刪除貌似很蛋疼。
可以對數據庫配置文件調優,因為都要提交到數據庫中,當機器很多時,數據庫壓力會很大
如果還是太多,可以考慮將mysql單獨一台,並設置讀寫分離,可以用中間件實現。
三.服務端配置
#####1.關閉服務端的housekeep
housekeep是清理歷史的機制,配置文件中,默認是每小時啟動一次,然后清除監控項設置之外的多余歷史記錄。比如mysql監控項默認保存90天,他會清除90天以外的,這會導致經常去清理,有時會報錯:Zabbix housekeeper processes more than 75% busy
2種方法
A:
編輯server端的配置文件,修改或添加如下2行,一天清理一次,並每次清理最多500行
HousekeepingFrequency=24 zabbix執行Housekeeping的頻率,單位為hours MaxHousekeeperDelete=500 每次最多刪除歷史數據的行
B:
關閉housekeep,並手動清理日志
2.2版本以下,server端配置文件添加
DisableHousekeeping=1 設置為1
2.2以上,到web界面修改
"Administration" -> "General" ,選擇"Housekeeping" ,確保history和trends欄的"Enable internal housekeeping"的對勾去掉。
或者
2.調整監控項
很多監控項都是無用的或者目前用不到的,像redis監控模板中的調閱/發布監控項應該去掉。
監控項的類型最好使用數字,盡量避免使用字符。字符在數據庫中的存儲空間使用較大,在設置trigger時也相對麻煩,並且zabbix本身處理數字的效率要相對高。如果業務需要字符類型的監控項,可以適當的降低數據采集的時間間隔以提高處理效率
Trigger中,正則表達式函數last(),nodata()的速度最快,min()、max()、avg()的速度最慢。在使用過程中,盡量選擇速度較快的函數。配置Trigger時,也應注意使用正確的邏輯,錯誤的邏輯可能導致數據庫查詢較慢的現象。
item監控性默認大部分都是保留90d(天)或者1w(周)的歷史數據,趨勢圖數據保留365天。
其實有趨勢圖數據即可,歷史數據保留7天足夠了,采集頻率,像磁盤,文件大小等很久才變化的,采集頻率可以加大,以達到緩解壓力和節省空間的作用
3.如果主機數量太多,采用代理
如果主機數量太多,可以考慮分機房,分業務,分組的方式來用代理中轉。zabbix_proxy可以代替服務端收集數據和監控,但是監控結果還是發送到服務端匯總,代理是沒有web界面的。
如果機器太多,可以用主動模式,當前所有默認都是被動模式的,客戶端啟動10051端口,服務端需要去10051取數據。
a) 減少 history 保存時間
b) 減少 item 獲取間隔時間
c) 減少不必要的監控項