Author mogd 2022-06-14
Update mogd 2022-06-14
AdageLife is like riding a bicycle. To keep your balance you must keep moving.
目录
zabbix 使用 elasticsearch 来存储历史数据
一、前言
需求
目前 zabbix 使用 mysql 作为存储,很占用数据盘,磁盘不易于扩容,并且数据量很大导致查找的效率不高。设想通过 elasticsearch 来展示监控图表,能够快速检索想要查看的信息
坑点
笔者是实验完才意识到的,其实这个坑点在认真阅读官方文档说明并且了解 zabbix 的历史数据表结构就很容易意识到
Elasticsearch setup
zabbix 支持使用 elasticsearch 替代数据库存储历史数据,但其他数据还是存储在数据库。
如果读者看过 zabbix 历史数据的表结果就会很快意识到:
- elasticsearch 只是存储了历史数据,那么索引记录的只是 itemid、clock、value 和 ns,这样在 Kibana 上做图表时,还是不清楚对应的 item 名称和 key,只是知道一个 itemid,反而更加不利于运维人员管理了
- elasticsearch 存储了历史数据后,数据库里面将不再存有历史数据,也就是 zabbix 前端的图表监控基本上都无法正常使用
新方案
- 写一个转换程序,建立新索引,将 zabbix server 发送到 elasticsearch 的索引按指定格式重写到新索引
监控的主机成千上万台,一分钟的数据量都很大,重写索引,速度慢,会导致 Kibana 图表的数据不是最新的,而在停机维护时,需要很精确的数据来检测
- zabbix 的监控项使用 Prometheus check
官方有说明,待测试,下一篇文章会整理部署过程、测试结果和一些坑点
- 修改 zabbix_server 源码,将发送的格式更改为指定格式
指定格式: 主机名,item项,clock,value, ns
指定格式需要联合查询数据库,数据量太多,频繁查询数据库会加大数据库负担,并且多表查询也会导致延迟
源码是 C 语言写的,笔者不太熟悉,不好改,还不如重写
二、zabbix 配置
2.1 zabbix server
修改 zabbix server 的配置文件 zabbix_server.conf
,修改完成后重启 zabbix server
### Option: HistoryStorageURL