一、zabbix數(shù)據(jù)庫
?
zabbix-server將采集到的數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫中,最常用的Mysql,數(shù)據(jù)存儲(chǔ)的大小和每秒處理的數(shù)據(jù)量有關(guān),數(shù)據(jù)存儲(chǔ)取決于每秒處理的數(shù)據(jù)量和Housekeeper的刪除數(shù)據(jù)。
zabbix-server講采集到的數(shù)據(jù)主要存儲(chǔ)在History和Trends表中
History表主要存儲(chǔ)收集到的歷史數(shù)據(jù),而Trends主要存儲(chǔ)經(jīng)過計(jì)算的歷史數(shù)據(jù),如每小時(shí)數(shù)據(jù)的最小值、最大值和平均值。
對(duì)于超過期限的數(shù)據(jù),zabbix用Housekeeper進(jìn)程進(jìn)行數(shù)據(jù)清理,其原理主要是執(zhí)行SQL中的delete語句執(zhí)行刪除數(shù)據(jù)庫,隨著監(jiān)控項(xiàng)的增多,數(shù)據(jù)存儲(chǔ)也越來越大,執(zhí)行Housekeeper嚴(yán)重影響DB的性能,從而影響zabbix監(jiān)控服務(wù)器。
對(duì)于很大的表優(yōu)化有橫向擴(kuò)展和縱向擴(kuò)展,要么用足夠好的硬件要么進(jìn)行數(shù)據(jù)分布式,分表可以看做數(shù)據(jù)分布式一種,將數(shù)據(jù)按一定規(guī)則劃分區(qū)間避免全表掃描帶來的問題,最大限度提高了性能??梢园刺靹澐忠部梢园丛聞澐直?。采用表分區(qū)后需要關(guān)閉Housekeeper的功能,此時(shí)需要清理歷史數(shù)據(jù)只需要對(duì)表分區(qū)對(duì)應(yīng)的歷史數(shù)據(jù)進(jìn)行刪除即可。關(guān)閉Housekeeper方法:Administration->General->Housekeeper,去掉勾選狀態(tài)即可。
?
二、備份zabbix數(shù)據(jù)庫
?
備份數(shù)據(jù)庫可以防止數(shù)據(jù)庫意外損壞到知道配置數(shù)據(jù)丟失,這是是對(duì)單表備份,而非全表除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、歷史數(shù)據(jù)的保存
zabbix的數(shù)據(jù)庫大小取決于NVPS(每秒處理的平均數(shù)量),如果有60000個(gè)監(jiān)控項(xiàng),刷新周期60s,那么每秒處理的數(shù)據(jù)為6000/60=1000(條),說明此刻每秒將會(huì)向數(shù)據(jù)庫新增加1000條數(shù)據(jù),每個(gè)歷史數(shù)據(jù)大小約為50Bytes,可以設(shè)置歷史數(shù)據(jù)庫保存天數(shù),計(jì)算公式:
歷史數(shù)據(jù)大小=天數(shù)*每秒處理的數(shù)據(jù)*24h*3600s*50Bytes
例如:每秒處理1000條,保存三個(gè)月90天大小=90*24*3600*1000*50=388800000000(B)大概120G,如果存一年則362G*12=1448(GB)
2、趨勢(shì)數(shù)據(jù)的保存
每個(gè)Items趨勢(shì)的數(shù)據(jù)大約128B,大小取決于數(shù)據(jù)庫類型。計(jì)算公式:
趨勢(shì)數(shù)據(jù)大小=監(jiān)控項(xiàng)*24h*3600s*128B
例如:60000個(gè)監(jiān)控項(xiàng),保存一年大小為60000*24*365*128=約67GB
3、事件數(shù)據(jù)的保存
每個(gè)事件數(shù)據(jù)大約130B,假如保存1年,需要1*24*3600*130=大約4GB
既6W個(gè)監(jiān)控項(xiàng),監(jiān)控頻率60s,保存一年需要1448+67+4=1519GB磁盤空間,而實(shí)際中需要占用的空間比這更大。
總的占用空間大小=歷史數(shù)據(jù)大小+趨勢(shì)數(shù)據(jù)大小+事件數(shù)據(jù)大小+zabbix配置文件(10M多)
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
