一招解决!Zabbix监控数据存储的性能问题
在线答疑:乐维社区
在zabbix的使用过程中,随着监控对象的增多,历史数据量逐日相应的增加,往往会造成前端页面卡顿、采集队列堆积、MySQL或POSTGRESQL数据库读写压力激增等情况。除了优化zabbix参数和数据库性能外,还有一个方法就是把监控数据从MySQL或POSTGRESQL中剥离出来,利用Elasticsearch存储历史监控数据。以下介绍如何使用Elasticsearch存储zabbix的历史监控数据。
1. Elasticsearch部署
Eticsearch 版本:7.10.0,端口:9200
1.1. 更新系统软件包到最新版本
[root@localhost ~]# dnf -y update
1.2. 安装Java 11运行时环境
1.3. 下载Elasticsearch的RPM安装包
1.4. 安装Elasticsearch
1.5. 启动Elasticsearch
1.6. 验证Elasticsearch是否正常运行
1.7. 配置Elasticsearch
l 配置 Java 内存限制
l 根据需要修改配置参数,例如修改监听地址、集群名称等
l 重启Elasticsearch
2. zabbix 安装
2.1. 组件安装
yum源安装
切换php版本
安装zabbix server、web、agent
l安装postgresql
2.1. Elasticsearch数据库配置
l Elasticsearch索引说明
Elasticsearch支持以下几种监控项类型
原来Zabbix 的数据是存储在 MySQL/POSTGRESQL 中的,按照数据格式的不同分别存储的五个表中:history、history_uint、history_str、history_log、history_text。这五个表和 es 中相对应的索引关系如下。
Elasticsearch索引创建
添加数字(无符号)类型的索引
添加数字(浮点型)类型的索引
添加字符类型的索引
添加日志类型的索引
¡ 添加文本类型的索引
2.3. 修改 Zabbix 的配置文件
l 修改zabbix server配置
l 修改zabbix web配置
重启服务
检查所有索引和文档数量
l 登录web查看监控数据
此后历史监控数据都会录入elasticsearch,而不会存放在postgresql数据库了,这样可以有效解决数据库的读写性能瓶颈问题。