zabbix数据存储

系统 2090 0

一、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多)

zabbix数据存储


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论