zabbix数据存储
一、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= 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 done [ "$?" == ] && echo "${DATE}: Backup zabbix succeed" >> ${MySQL_DUMP_PATH}/logs/ZabbixMysqlDump.log [ "$?" != ] && 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
三、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数据存储的更多相关文章
- Zabbix 数据清理
目录 Zabbix 数据清理的一系列操作 一.问题 二.解决办法 Zabbix 数据清理的一系列操作 基本信息: Zabbix 版本 4.0.9 MySQL 版本 5.5 一.问题 我们将 Zabbi ...
- Zabbix 历史数据存储到 Elasticsearch
Zabbix 历史数据存储到 Elasticsearch Zabbix 3.4.6 版本开始支持历史数据存储到 Elasticsearch, 早就想测试这个功能,最近有个需求需保存 zabbix 的历 ...
- DevOps专题 |监控,可观测性与数据存储
对于DevOps而言,监控是其中重要的一环,上一次的专题内容中,我们与大家分享了大型企业级监控系统的设计.今天我们将和大家从另一个角度进一步探讨互联网工程技术领域的监控设计(monitoring):系 ...
- Kooboo CMS技术文档之三:切换数据存储方式
切换数据存储方式包括以下几种: 将文本内容存储在SqlServer.MySQL.MongoDB等数据库中 将站点配置信息存储在数据库中 将后台用户信息存储在数据库中 将会员信息存储在数据库中 将图片. ...
- Android之数据存储的五种方法
1.Android数据存储的五种方法 (1)SharedPreferences数据存储 详情介绍:http://www.cnblogs.com/zhangmiao14/p/6201900.html 优 ...
- Android之网络数据存储
一.网络保存数据介绍 可以使用网络来保存数据,在需要的时候从网络上获取数据,进而显示在App中. 用网络保存数据的方法有很多种,对于不同的网络数据采用不同的上传与获取方法. 本文利用LeanCloud ...
- Android之文件数据存储
一.文件保存数据介绍 Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在J2SE环境中保存数据到文件中是一样的.文件可用来存放大量数据,如文本.图 ...
- Android之SharedPreferences数据存储
一.SharedPreferences保存数据介绍 如果有想要保存的相对较小键值集合,应使用SharedPreferences API.SharedPreferences对象指向包含键值对的文件并提供 ...
- Atitit 数据存储视图的最佳实际best practice attilax总结
Atitit 数据存储视图的最佳实际best practice attilax总结 1.1. 视图优点:可读性的提升1 1.2. 结论 本着可读性优先于性能的原则,面向人类编程优先于面向机器编程,应 ...
随机推荐
- 百度oauth2.0 WEB 链接
Source:http://developer.baidu.com/wiki/index.php?title=docs/oauth/authorization Webpage Function : A ...
- AD板层定义介绍(二)
1.顶层信号层(Top Layer):也称元件层,主要用来放置元器件,对于比层板和多层板可以用来布线: 2.中间信号层(Mid Layer): 最多可有30层,在多层板中用于布信号线. 3.底层信号层 ...
- 详解Objective-C的meta-class
比较简单的一篇英文,重点是讲解meta-class.翻译下,加深理解. 原文标题:What is a meta-class in Objective-C? 原文地址:http://www.cocoaw ...
- SQL Server中取两个表的交集,并集和差集
在项目中遇到要取两个表差集的情况 假设有两个表tblNZPostCodes, NZPostcode 两个表中存储的都是新西兰的post code信息,字段一致,只是数据上有所差异. 1. Union ...
- Windows下环境变量配置
JAVA_HOME=C:\Program Files\Java\jdk1.6.0_33 PATH+=%JAVA_HOME%\bin; CLASSPATH=.;%JAVA_HOME%\lib\d ...
- 有return的情况下try catch finally的执行顺序(最有说服力的总结)
结论:1.不管有木有出现异常,finally块中代码都会执行:2.当try和catch中有return时,finally仍然会执行:3.finally是在return后面的表达式运算后执行的(此时并没 ...
- 转载jquery $(document).ready() 与window.onload的区别
jquery $(document).ready() 与window.onload的区别 投稿:mdxy-dxy 字体:[增加 减小] 类型:转载 时间:2009-12-28我要评论 Jquery中$ ...
- IEnumerable、IEnumerator与yield的学习
我们知道数组对象可以使用foreach迭代进行遍历,同时我们发现类ArrayList和List也可以使用foreach进行迭代.如果我们自己编写的类也需要使用foreach进行迭代时该怎么办呢? IE ...
- 从最近MySQL的优化工作想到的
最近决定将以前同事写的存储过程查看一遍,寻找一些代码上写的不太好的地方,争取进行修改以后让这些过程达到一个很好的运行速度.下面是遇到的最多的几个问题. 我遇到了这样的一个SQL: select nam ...
- ALV可输入状态下输入金额字段变小数的问题
http://blog.163.com/mxb_sap@yeah/blog/static/10335262520167109022155/ 小数位数两位 当我在给ALV上给该字段输入整数 '12 ...