zabbix數據存儲


一、zabbix數據庫

 

zabbix-server將采集到的數據存儲在數據庫中,最常用的Mysql,數據存儲的大小和每秒處理的數據量有關,數據存儲取決於每秒處理的數據量和Housekeeper的刪除數據。

zabbix-server講采集到的數據主要存儲在History和Trends表中

clip_image001

History表主要存儲收集到的歷史數據,而Trends主要存儲經過計算的歷史數據,如每小時數據的最小值、最大值和平均值。

對於超過期限的數據,zabbix用Housekeeper進程進行數據清理,其原理主要是執行SQL中的delete語句執行刪除數據庫,隨着監控項的增多,數據存儲也越來越大,執行Housekeeper嚴重影響DB的性能,從而影響zabbix監控服務器。

對於很大的表優化有橫向擴展和縱向擴展,要么用足夠好的硬件要么進行數據分布式,分表可以看做數據分布式一種,將數據按一定規則划分區間避免全表掃描帶來的問題,最大限度提高了性能。可以按天划分也可以按月划分表。采用表分區后需要關閉Housekeeper的功能,此時需要清理歷史數據只需要對表分區對應的歷史數據進行刪除即可。關閉Housekeeper方法:Administration->General->Housekeeper,去掉勾選狀態即可。

clip_image002

 

二、備份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多)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM