千家信息网

处理Zabbix历史数据库办法一

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,一 问题描述随着Zabbix监控的主机和监控项目增多,Zabbix的历史数据会越来越多,MySQL数据库磁盘空间很容易就爆满,同时Zabbix前端查询数据会变得越来越慢。特别是通过Zabbix的API
千家信息网最后更新 2025年01月23日处理Zabbix历史数据库办法一

一 问题描述

随着Zabbix监控的主机和监控项目增多,Zabbix的历史数据会越来越多,MySQL数据库磁盘空间很容易就爆满,同时Zabbix前端查询数据会变得越来越慢。特别是通过Zabbix的API生成自定义Screen的情况下,打开每个Screen非常慢

查看Zabbix数据库目录文件

# ls -lh|grep Gtotal 248G-rw-rw---- 1 mysql mysql 4.7G May  5 21:34 alerts.ibd-rw-rw---- 1 mysql mysql 3.4G May  5 21:34 events.ibd-rw-rw---- 1 mysql mysql  95G May  5 21:34 history.ibd-rw-rw---- 1 mysql mysql  25G May  5 21:34 history_text.ibd-rw-rw---- 1 mysql mysql 112G May  5 21:34 history_uint.ibd-rw-rw---- 1 mysql mysql 2.9G May  5 21:34 trends.ibd-rw-rw---- 1 mysql mysql 4.3G May  5 21:34 trends_uint.ibd


整个Zabbix数据库目录大小为248G,history和history_text以及history_uint几张表就占用了大部分磁盘空间



二 解决办法

如果不想保留太长时间的历史数据,例如只保留一个月的历史数据可以使用以下方法

1.停掉zabbix server

service zabbix-server stop


这里需要特别注意一下,在部署Zabbix架构的时候最好选择Zabbix server ---- Zabbix proxy --- Zabbix --- agent的架构。即使只有几台主机最好也部署一个proxy,根据不同应用或者不同的机房可以部署多个proxy。部署zabbix有以下几个好处:

proxy专门收集和暂存agent发来的数据,可以减轻server端的压力

使用proxy可以实现分布式监控,例如监控不同网络互相不通的服务器

增强安全性,不直接暴露zabbix server的信息

维护的时候很方便,例如清理zabbix的历史数据,zabbix停掉后的监控数据可以设置在proxy端保留时间长些,等维护好后proxy会同步数据到server端,尽量减少数据丢失。



在停掉zabbix server之前需要注意zabbix proxy的两个参数

ProxyLocalBuffer=3

设置zabbix proxy暂存在本地mysql的监控数据的时间。默认是0,不暂存。即使zabbix proxy已经把数据发送给了zabbix server,还是会暂存数据在本地设置的时间。取值范围是0~720小时


ProxyOfflineBuffer=5

设置当zabbix proxy与zabbix server无法连接时保留监控数据的时间间隔。默认是1小时,取值是1~720小时。这个参数特别有用,我就是在之前的几次维护中,停掉zabbix server后没有设置zabbix proxy的这个参数,所以当维护结束后启动zabbix server,会发现有段时间内的数据没有。这是因zabbix proxy按照默认的保留时间执行housekeeper把过期的数据删除了。

这个时间根据最好根据要维护的时间来设定,比如要维护10个小时,那么就要设置ProxyOfflineBuffer=10

这样就不至于这10个小时之间的数据都丢失了。也有一个问题,如果时间间隔太大的话,zabbix proxy重新推送数据到zabbix server会导致双方的服务器压力都会增大。








2.创建新表

create table history_new like history;

create table history_uint_new like history_uint;

create table history_text_new like history_text;


3.将近期(一个月)的数据插入到新的表中

insert into history_new select * from history where clock > '1459785600';

insert into history_text_new SELECT * FROM history_text WHERE clock > '1461945600';

insert into history_uint_new SELECT * FROM history_uint WHERE clock > '1461945600';


这里的clock是UNIX时间戳



这里根据数据量的大小可以能会花费好几个小时的时间




4.重新更改表名

alter table history rename history_old;

alter table history_new rename history;


alter table history_uint rename history_uint_old;

alter table history_uint_new rename history_uint;


alter table history_text rename history_text_old;

alter table history_text_new rename history_text;


5.重新启动zabbix server

重新启动zabbix后,有段时间会不停地报zabbix agent不可用的报警信息,过段时间就会恢复正常。


6.删除旧表

drop table history_old;

drop table history_text_old;

drop table history_uint_old;



另外可以更改items表的history字段

UPDATE items SET history = '15' WHERE history > '30'


这样就将每个item的history保留时间设置为15天。但是这样设置的话如果想看几个月之前的数据就看不到了。




这种方法处理起来效率非常低,必须要停掉zabbix server,然后导入一个月内的数据到新的表,如果数据量很大会很花时间。



数据 时间 监控 小时 历史 历史数据 数据库 不同 参数 最好 主机 信息 压力 大小 方法 时候 服务器 架构 目录 磁盘 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 如何提升服务器的防护 深圳市鼎商道网络技术有限公司 香港软件开发骗局 九义网络技术有限公司怎么样 管家婆经营历程数据库表字段 数据库动态切库 陈酿数据库微博微博 软件开发项目配置库 梦幻西游同区服务器可以一起玩吗 网络安全四字词 地瓜网络技术支持 关系数据库pk和fk 模拟农场19哪个是本地服务器 丰县网络营销软件开发常见问题 青岛唯米网络技术有限公司 视频教学用什么服务器 英雄联盟每个区的服务器位置 徐州运营软件开发供应商 巢湖品牌网络技术咨询怎么样 Wind数据库怎么看每日股价 软件开发企业定义 数据库管理系统框架结构 保密及网络安全宣贯总结 含有软件开发专科的本科大学 联想服务器怎么样关闭 亿林互联网科技有限公司 软件开发人员管理的特点 方舟为什么刷新不到服务器 医疗器械独立软件服务器 三明学院计算机网络技术
0