一、zabbix數據庫
?
zabbix-server將采集到的數據存儲在數據庫中,最常用的Mysql,數據存儲的大小和每秒處理的數據量有關,數據存儲取決于每秒處理的數據量和Housekeeper的刪除數據。
zabbix-server講采集到的數據主要存儲在History和Trends表中
History表主要存儲收集到的歷史數據,而Trends主要存儲經過計算的歷史數據,如每小時數據的最小值、最大值和平均值。
對于超過期限的數據,zabbix用Housekeeper進程進行數據清理,其原理主要是執行SQL中的delete語句執行刪除數據庫,隨著監控項的增多,數據存儲也越來越大,執行Housekeeper嚴重影響DB的性能,從而影響zabbix監控服務器。
對于很大的表優化有橫向擴展和縱向擴展,要么用足夠好的硬件要么進行數據分布式,分表可以看做數據分布式一種,將數據按一定規則劃分區間避免全表掃描帶來的問題,最大限度提高了性能。可以按天劃分也可以按月劃分表。采用表分區后需要關閉Housekeeper的功能,此時需要清理歷史數據只需要對表分區對應的歷史數據進行刪除即可。關閉Housekeeper方法:Administration->General->Housekeeper,去掉勾選狀態即可。
?
二、備份zabbix數據庫
?
備份數據庫可以防止數據庫意外損壞到知道配置數據丟失,這是是對單表備份,而非全表除history*、trends*、Acknowledges、Alerts、Auditlog、Events、service_alarms表。
#!/bin/
bash
source
/etc/
bashrc
source
/etc/
profile
MySQL_USER
=
zabbix
MySQL_PASSWORD
=
zabbix
MySQL_HOST
=
localhost
MySQL_PORT
=
3306
MySQL_DUMP_PATH
=/
mysql_backup
MySQL_DATABASE_NAME
=
zabbix
DATE
=$(
date
'
+%Y-%m-%d
'
)
[
-d ${MySQL_DUMP_PATH} ] ||
mkdir
${MySQL_DUMP_PATH}
cd ${MySQL_DUMP_PATH}
[
-d logs ] ||
mkdir
logs
[
-d ${DATE} ] ||
mkdir
${DATE}
cd ${DATE}
TABLE_NAME_ALL
=$(mysql -u${MySQL_USER} -p${MySQL_PASSWORD} -P${MySQL_PORT} -h${MySQL_HOST} ${MySQL_DATABASE_NAME} -e
"
show tables
"
|
egrep
-v
"
(Tables_in_zabbix|history*|trends*|acknowledges|alerts|auditlog|events|service_alarms)
"
)
for
TABLE_NAME
in
${TABLE_NAME_ALL}
do
mysqldump
-u${MySQL_USER} -p${MySQL_PASSWORD} -P${MySQL_PORT} -h${MySQL_HOST} ${MySQL_DATABASE_NAME} ${TABLE_NAME} >
${TABLE_NAME}.sql
sleep
1
done
[
"
$?
"
==
0
] &&
echo
"
${DATE}: Backup zabbix succeed
"
>> ${MySQL_DUMP_PATH}/logs/
ZabbixMysqlDump.log
[
"
$?
"
!=
0
] &&
echo
"
${DATE}: Backup zabbix not succeed
"
>> ${MySQL_DUMP_PATH}/logs/
ZabbixMysqlDump.log
cd ${MySQL_DUMP_PATH}
/
rm
-rf $(
date
+%Y%m%d --
date
=
'
5 days ago
'
)
exit
0
?
三、zabbix的磁盤容量大小:
?
1、歷史數據的保存
zabbix的數據庫大小取決于NVPS(每秒處理的平均數量),如果有60000個監控項,刷新周期60s,那么每秒處理的數據為6000/60=1000(條),說明此刻每秒將會向數據庫新增加1000條數據,每個歷史數據大小約為50Bytes,可以設置歷史數據庫保存天數,計算公式:
歷史數據大小=天數*每秒處理的數據*24h*3600s*50Bytes
例如:每秒處理1000條,保存三個月90天大小=90*24*3600*1000*50=388800000000(B)大概120G,如果存一年則362G*12=1448(GB)
2、趨勢數據的保存
每個Items趨勢的數據大約128B,大小取決于數據庫類型。計算公式:
趨勢數據大小=監控項*24h*3600s*128B
例如:60000個監控項,保存一年大小為60000*24*365*128=約67GB
3、事件數據的保存
每個事件數據大約130B,假如保存1年,需要1*24*3600*130=大約4GB
既6W個監控項,監控頻率60s,保存一年需要1448+67+4=1519GB磁盤空間,而實際中需要占用的空間比這更大。
總的占用空間大小=歷史數據大小+趨勢數據大小+事件數據大小+zabbix配置文件(10M多)
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

