21 Zabbix系統性能優化建議
1. Zabbix性能變慢的可能表現:
- zabbix隊列有太多被延遲的item,可以通過administration-queue查看
- zabbix繪圖中經常出現斷圖,一些item沒有數據
- 帶有nodata()函數的觸發器出現flase
- 前端頁面無響應,或者響應慢
a.通過Zabbix agent采集數據的設備處於moniting的狀態但是此時機器死機或其他原因導致zabbix agent死掉server獲取不到數據,此時unreachable poller
就會升高。
b.通過Zabbix agent采集數據的設備處於moniting的狀態但是server向agent獲取數據時時間過長,經常超過server甚至的timeout時間,此時unreachable poller就會升高。
如何度量Zabbix性能:
通過Zabbix的NVPS(每秒處理數值數)來衡量其性能。在Zabbix的dashboard上有一個錯略的估值。

2. Zabbix性能優化的幾點原則:
- 確保zabbix內部組件性能處於被監控狀態(調優的基礎!)
- 使用硬件性能足夠好的服務器
- 不同角色分開,使用各自獨立的服務器
- 使用分布式部署
- 調整MySQL性能
- 調整Zabbix自身配置
3. Zabbix變慢的幾個原因總結如下:
- Zabbix server硬件配置,建議更好的CPU、更大的內存,更快的硬盤
- Zabbix架構,若整體架構過大,建議使用分布式proxy,各服務器功能獨立
- 數據量太大,vps太高,zabbix來不及處理
- Housekeeper設置不當,數據庫體積變大
- 前端主機太多,查詢過多的數據
- Item工作模式及Triggers優化,Triggers太過復雜


3.1 了解Zabbix目前的工作狀態
獲得zabbix內部狀態
zabbix[wcache,values,all]
zabbix[queue,1m] ----延遲超過1分鍾的item
獲得zabbix內部組件工作狀態(該組件處於BUSY狀態的時間百分比)
zabbix[process,type,mode,state]
其中可用的參數為:
- type: trapper,discoverer,escalator,alerter,etc
- mode: avg,count,min,max
- state: busy,idel
3.2 Zabbix性能優化---Item工作模式及Triggers優化
- 添加proxy節點,減少了server端的負荷。(下面方法無用,再使用此辦法)
- Zabbix中的item默認工作是被動模式,可以通過設置主動模式來提高server的性能。
主要講講采用主動模式,若采用active checks模式:
①zabbix_agentd.conf配置調整
LogFile=/tmp/zabbix_agentd.log Server=xxx.xxx.xxx.xxx server端ip ServerActive=xxx.xxx.xxx.xx 指定Agentd收集的數據往哪里發送 Hostname=yyy.yyy.yyy.yyy agent的hostname ,必須要和Server端添加主機時的主機名對應 RefreshActiveChecks=60 BufferSize=10000 MaxLinesPerSecond=200 Timeout=30
比較重要的參數是ServerActive和Hostname,ServerActive是指定Agentd收集的數據往哪里發送,Hostname是必須要和Server端添加主機時的主機名對應起來,這樣Server端接收到數據才能找到對應關系,這里為了兼容被動模式,沒有把StartAgents設為0,如果一開始就是使用主動模式的話建議把StartAgents設為0,關閉被動模式。
②zabbix_server.conf 配置調整
StartPollers=100 減少主動收集數據進程,由原來的500---100,減小
StartTrappers=200 負責處理Agentd推送過來的數據的進程,由原來的50---100 ,變大
③模板調整
a. 以任何一個現有模板為例,clone並重命名,假如重命名模板為TEST
b. 將模板TEST里所有items和discovery rules里的items都變更type為atvice agent

至此active-checks模式的agent部署完畢,可以在overview中查看模板中的監控項。
Tigger中正則表達式函數last()、nodata()的速度是最快的。。。Min()、max()、avg()是最慢的。。。盡量使用速度快的函數
3.3 數據量太大,vps太高,zabbix來不及處理
通過以下圖,可看出哪個item導致慢: 若more than 10 min 有數據則表示對應的Item數據量過大。

解決辦法:
- 修改監控項
- 調整Item的時間間隔(主要辦法) 將zabbix agent監控 timeout時間增大
備注:
調整unsupport items檢查時間的方法是:在Adiministration里選擇General然后在右側下拉菜單里選擇Other,然后修改Refresh unsupported items (in sec)的值,表示“每多少秒去重新檢查一下那些not_supported的值”。
3.4 調整MySQL性能
采用分布式架構,性能瓶頸的最大可能出現在數據庫中。
- 關閉housekeeper, 將history分區
- 將zabbix_server.conf中的StartDBSyncers參數上調,表示將數據從zabbix寫入數據庫的進程是多少

![[轉載]zabbix優化指南 [轉載]zabbix優化指南](/image/aHR0cDovL3M4LnNpbmFpbWcuY24vbXc2OTAvNzA0ODM2ZjR0ZDI2ZjY2MmYyYzk3JjY5MA==.png)
![[轉載]zabbix優化指南 [轉載]zabbix優化指南](/image/aHR0cDovL3M1LnNpbmFpbWcuY24vbXc2OTAvNzA0ODM2ZjR0ZDI2ZWFhNGRlYTM0JjY5MA==.png)
![[轉載]zabbix優化指南 [轉載]zabbix優化指南](/image/aHR0cDovL3MxMS5zaW5haW1nLmNuL213NjkwLzcwNDgzNmY0dGQyNmVhYTU0NDZiYSY2OTA=.png)