Zabbix对接Elasticsearch(ES)数据库(未成功)

0.需求分析

不管zabbix的后端数据库是oracle还是mysql,当zabbix监控的量级达到了一定程度后,那么对数据库的性能是一个非常严峻的挑战。特别是对历史数据的查询,将会变得非常非常的慢,别告诉我可以建索引优化,当量级达到一定的程度的时候,索引真的没啥效果了。如果再不继续寻找合适的解决方案,那么就一定会引发数据库层面的问题,最终导致服务不可用。当监控数据越来越大的时候,存储不足的时候,怎么办?那就删历史数据呗,但如果要求至少要保存半年甚至1年以上的历史数据,且又高端存储磁阵紧缺面临扩容难题的时候怎么办?而且又同时面临着单个历史表非常庞大的时候怎么办?分库、分表、分区?做读写分离?不!一切都是浮云,还有一个更值得推荐的解决方案,那就是利用Zabbix本身对ES支持的机制来将历史数据存储到ES集群。目前,官方虽然表示Zabbix对Elasticsearch的支持仍处于试验阶段,但笔者认为还是值得一试,且在测试阶段未发现有啥不妥。"生产环境"上也改造了几套对接ES的架构,目前运行均一切正常,ES可快速横向扩展的能力是人尽皆知啊!谁用谁知道。

1.架构图

2.环境搭建

这里只演示zabbix server对接ES的过程,其他集群将省略。

zabbix server :192.168.99.180

ES集群node1:192.168.99.111:9200

3.配置zabbix:

配置插件以便它可以连接到你的Elasticsearch实例。打开Zabbix服务器的配置文件zabbix_server.conf并添加以下行:

bash 复制代码
vim /etc/zabbix/zabbix_server.conf
bash 复制代码
HistoryStorageURL=http://192.168.99.111:9200
HistoryStorageTypes=uint,dbl,str,log,text

配置es前端页面

bash 复制代码
vim /etc/zabbix/web/zabbix.conf.php

添加

php 复制代码
global $DB,$HISTORY;
...... 
// Elasticsearch url (can be string if same url is used for all types).
 
$HISTORY['url'] = 'http://192.168.99.111:9200';
 
// Value types stored in Elasticsearch.
 
$HISTORY['types'] = ['uint', 'text', 'log', 'str', 'dbl'];

4.配置Elasticsearch模板:

设置sysctl.conf

bash 复制代码
vim /etc/sysctl.conf

vm.max_map_count=655360

sysctl -p
 

设置limits.conf

bash 复制代码
#vim /etc/security/limits.conf

elasticsearch soft memlock unlimited
 
elasticsearch hard memlock unlimited
 
elasticsearch soft nofile 65536
 
elasticsearch hard nofile 131072
 
elasticsearch soft nproc 65536
 
elasticsearch hard nproc 65536
 
/etc/elasticsearch/jvm.option

禁用swap

bash 复制代码
#vi /etc/fstab

#/dev/mapper/cryptswap1 none swap sw 0 0 注释

添加Elasticsearch mapping

Zabbix监控项数据类型

bash 复制代码
curl -H "Content-Type:application/json" -XPUT http://192.168.99.111:9200/uint -d ' { "settings" : { "index" : { "number_of_replicas" : 1, "number_of_shards" : 5 } }, "mappings" : { "values" : { "properties" : { "itemid" : { "type" : "long" }, "clock" : { "format" : "epoch_second", "type" : "date" }, "value" : { "type" : "long" } } } } } '


curl -H "Content-Type:application/json" -XPUT http://192.168.99.111:9200/dbl -d ' { "settings" : { "index" : { "number_of_replicas" : 1, "number_of_shards" : 5 } }, "mappings" : { "values" : { "properties" : { "itemid" : { "type" : "long" }, "clock" : { "format" : "epoch_second", "type" : "date" }, "value" : { "type" : "double" } } } } } '
 

curl -H "Content-Type:application/json" -XPUT http://192.168.99.111:9200/log -d ' { "settings" : { "index" : { "number_of_replicas" : 1, "number_of_shards" : 5 } }, "mappings" : { "values" : { "properties" : { "itemid" : { "type" : "long" }, "clock" : { "format" : "epoch_second", "type" : "date" }, "value" : { "fields" : { "analyzed" : { "index" : true, "type" : "text", "analyzer" : "standard" } }, "index" : false, "type" : "text" } } } } } '
 

curl -H "Content-Type:application/json" -XPUT http://192.168.99.111:9200/text -d ' { "settings" : { "index" : { "number_of_replicas" : 1, "number_of_shards" : 5 } }, "mappings" : { "values" : { "properties" : { "itemid" : { "type" : "long" }, "clock" : { "format" : "epoch_second", "type" : "date" }, "value" : { "fields" : { "analyzed" : { "index" : true, "type" : "text", "analyzer" : "standard" } }, "index" : false, "type" : "text" } } } } } '
 

curl -H "Content-Type:application/json" -XPUT http://192.168.99.111:9200/str -d ' { "settings" : { "index" : { "number_of_replicas" : 1, "number_of_shards" : 5 } }, "mappings" : { "values" : { "properties" : { "itemid" : { "type" : "long" }, "clock" : { "format" : "epoch_second", "type" : "date" }, "value" : { "fields" : { "analyzed" : { "index" : true, "type" : "text", "analyzer" : "standard" } }, "index" : false, "type" : "text" } } } } } '

5. 重启Zabbix服务器:

最后,重启Zabbix服务器以使更改生效。

bash 复制代码
 systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm

多台elasticsearch集群可按以下格式配置

php 复制代码
$HISTORY['url'] = [ 'uint' => 'http://192.168.1.230:9200 ', 'text' => 'http://192.168.1.234:9200 '

'log' => 'http://192.168.1.235:9200 ' ];

$HISTORY['types'] = ['uint', 'text','log'];
相关推荐
梦想平凡33 分钟前
百游棋牌源代码开发搭建教程(五):房间创建、座位分配与请求幂等实现
前端·javascript·数据库·源代码管理
凤山老林43 分钟前
Spring Boot 整合 Flowable 的企业级落地指南
数据库·spring boot·后端·flowable·工作流
企业数字化笔记1 小时前
AI写的系统出现504怎么办?接口超时和数据库慢查询排查
数据库·后端
2601_962218611 小时前
万象生鲜系统订单全生命周期状态同步技术实现业务可视
大数据·数据库·人工智能·python·算法
Wang's Blog2 小时前
Java框架快速入门:Spring Security+OAuth2之用户注册与唯一性校验实现
java·数据库·spring
跨境生态圈2 小时前
2026谷歌SEO快速排名深度解析:合规起量、避坑指南与实战落地策略
数据库·人工智能·爬虫·搜索引擎·chatgpt
JavaPub-rodert3 小时前
Docker 安装 MySQL 完整教程:从零部署数据库,到生产环境持久化配置
数据库·mysql·docker
隔窗听雨眠3 小时前
MySQL整库迁移至KaiwuDB完全指南:从数据类型映射到生产切换的系统性实践
数据库·mysql
xhbh6663 小时前
中小企业 Redis 运维,如何安全归档 RDB、AOF 备份文件?
运维·数据库·缓存·数据备份·文件备份·同步备份·号码备份
彧azz3 小时前
Git 入门实操实例:从安装到远程仓库全流程
大数据·笔记·git·学习·elasticsearch