溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

處理Zabbix歷史數(shù)據(jù)庫辦法一

發(fā)布時間:2020-07-20 18:22:17 來源:網(wǎng)絡(luò) 閱讀:17146 作者:自由linux 欄目:數(shù)據(jù)庫

一 問題描述

隨著Zabbix監(jiān)控的主機和監(jiān)控項目增多,Zabbix的歷史數(shù)據(jù)會越來越多,MySQL數(shù)據(jù)庫磁盤空間很容易就爆滿,同時Zabbix前端查詢數(shù)據(jù)會變得越來越慢。特別是通過Zabbix的API生成自定義Screen的情況下,打開每個Screen非常慢

查看Zabbix數(shù)據(jù)庫目錄文件

# ls -lh|grep G
total 248G
-rw-rw---- 1 mysql mysql 4.7G May  5 21:34 alerts.ibd
-rw-rw---- 1 mysql mysql 3.4G May  5 21:34 events.ibd
-rw-rw---- 1 mysql mysql  95G May  5 21:34 history.ibd
-rw-rw---- 1 mysql mysql  25G May  5 21:34 history_text.ibd
-rw-rw---- 1 mysql mysql 112G May  5 21:34 history_uint.ibd
-rw-rw---- 1 mysql mysql 2.9G May  5 21:34 trends.ibd
-rw-rw---- 1 mysql mysql 4.3G May  5 21:34 trends_uint.ibd


整個Zabbix數(shù)據(jù)庫目錄大小為248G,history和history_text以及history_uint幾張表就占用了大部分磁盤空間



二 解決辦法

如果不想保留太長時間的歷史數(shù)據(jù),例如只保留一個月的歷史數(shù)據(jù)可以使用以下方法

1.停掉zabbix server

service zabbix-server stop


這里需要特別注意一下,在部署Zabbix架構(gòu)的時候最好選擇Zabbix server ---- Zabbix proxy --- Zabbix --- agent的架構(gòu)。即使只有幾臺主機最好也部署一個proxy,根據(jù)不同應(yīng)用或者不同的機房可以部署多個proxy。部署zabbix有以下幾個好處:

proxy專門收集和暫存agent發(fā)來的數(shù)據(jù),可以減輕server端的壓力

使用proxy可以實現(xiàn)分布式監(jiān)控,例如監(jiān)控不同網(wǎng)絡(luò)互相不通的服務(wù)器

增強安全性,不直接暴露zabbix server的信息

維護的時候很方便,例如清理zabbix的歷史數(shù)據(jù),zabbix停掉后的監(jiān)控數(shù)據(jù)可以設(shè)置在proxy端保留時間長些,等維護好后proxy會同步數(shù)據(jù)到server端,盡量減少數(shù)據(jù)丟失。


處理Zabbix歷史數(shù)據(jù)庫辦法一


在停掉zabbix server之前需要注意zabbix proxy的兩個參數(shù)

ProxyLocalBuffer=3

設(shè)置zabbix proxy暫存在本地mysql的監(jiān)控數(shù)據(jù)的時間。默認是0,不暫存。即使zabbix proxy已經(jīng)把數(shù)據(jù)發(fā)送給了zabbix server,還是會暫存數(shù)據(jù)在本地設(shè)置的時間。取值范圍是0~720小時


ProxyOfflineBuffer=5

設(shè)置當zabbix proxy與zabbix server無法連接時保留監(jiān)控數(shù)據(jù)的時間間隔。默認是1小時,取值是1~720小時。這個參數(shù)特別有用,我就是在之前的幾次維護中,停掉zabbix server后沒有設(shè)置zabbix proxy的這個參數(shù),所以當維護結(jié)束后啟動zabbix server,會發(fā)現(xiàn)有段時間內(nèi)的數(shù)據(jù)沒有。這是因zabbix proxy按照默認的保留時間執(zhí)行housekeeper把過期的數(shù)據(jù)刪除了。

這個時間根據(jù)最好根據(jù)要維護的時間來設(shè)定,比如要維護10個小時,那么就要設(shè)置ProxyOfflineBuffer=10

這樣就不至于這10個小時之間的數(shù)據(jù)都丟失了。也有一個問題,如果時間間隔太大的話,zabbix proxy重新推送數(shù)據(jù)到zabbix server會導(dǎo)致雙方的服務(wù)器壓力都會增大。








2.創(chuàng)建新表

create table history_new like history;

create table history_uint_new like history_uint;

create table history_text_new like history_text;


3.將近期(一個月)的數(shù)據(jù)插入到新的表中

insert into history_new select * from history where clock > '1459785600';

insert into history_text_new SELECT * FROM history_text WHERE clock > '1461945600';

insert into history_uint_new SELECT * FROM history_uint WHERE clock > '1461945600';


這里的clock是UNIX時間戳



這里根據(jù)數(shù)據(jù)量的大小可以能會花費好幾個小時的時間




4.重新更改表名

alter table history rename history_old;

alter table history_new rename  history;


alter table history_uint rename history_uint_old;

alter table history_uint_new rename history_uint;


alter table history_text rename  history_text_old;

alter table history_text_new rename  history_text;


5.重新啟動zabbix server

重新啟動zabbix后,有段時間會不停地報zabbix agent不可用的報警信息,過段時間就會恢復(fù)正常。


6.刪除舊表

drop table history_old;

drop table history_text_old;

drop table history_uint_old;



另外可以更改items表的history字段

UPDATE items SET history = '15' WHERE history > '30'


這樣就將每個item的history保留時間設(shè)置為15天。但是這樣設(shè)置的話如果想看幾個月之前的數(shù)據(jù)就看不到了。




這種方法處理起來效率非常低,必須要停掉zabbix server,然后導(dǎo)入一個月內(nèi)的數(shù)據(jù)到新的表,如果數(shù)據(jù)量很大會很花時間。



向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI