Zabbix 是一个流行的开源监控解决方案,随着zabbix监控运行时间的推移,其数据库中的历史数据可能会不断增长,影响系统性能。为了解决这个问题,可以定期自动清理数据库中的旧数据。
一、Zabbix几个历史表的分析
history表。浮点历史数据表。与items表相关联。
history_log表。 历史日志表,与itmes表相关联
history_str表。 字符串的历史数据表。
history_text表。 长文本历史数据表,支持255字符以上的文本,与items表相关联
history_uint表。 长整型历史数据表,与items表相关联
trends表。 趋势表,浮点型,每个小时统计数
trends_uint表。 趋势长整型表,每个小时。与items表相关联。
events表。动作日志。
alerts表。告警统计。
auditlog表。审计日志。
这几个历史表里面,通常最占用空间的是 history和history_uint 表,因为我们大多数的监控项的值都是整型。假设我们的zabbix有1000个监控项目是整型的,每分钟采集一次,历史数据保留10天。那么这个表10天的数据量有 602410*1000=14400000 ,1440万行的数据。很明显这个表太大了,实际情况下一个监控系统监控项目远超1000项,有些item的采集频率可能更高,数据量超过1亿行也很常见。
同理,trends_uint表的数据量也不会太小。按照上面的计算,该表10天的数据量大概为24万行。当然历史趋势数据我们通常会保留更久,默认会保留90天,也就是大概216万行。
二、清空部分历史数据
1、首先需要关闭zabbix、http服务
root@zabbix-01:~# systemctl stop zabbix-server.service
root@zabbix-01: