前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Z投稿】基于Zabbix实现ETCD动态数据监控

【Z投稿】基于Zabbix实现ETCD动态数据监控

作者头像
Zabbix
发布2021-02-03 11:14:28
7910
发布2021-02-03 11:14:28
举报
文章被收录于专栏:Zabbix中国官方
杨帆

广州证券信息中心Zabbix监控系统建设与大数据日志分析系统管理负责人

Zabbix4.0认证ZCS专家

Zabbix大会优秀讲师

近期在开源社区日益火热的Kubernetes项目中用到一款重要组件etcd,渐渐为人们所关注。etcd 是一个分布式键值对存储,设计用来可靠而快速的保存关键数据并提供访问。通过分布式锁,leader选举和写屏障(write barriers)来实现可靠的分布式协作。etcd集群是为高可用,持久性数据存储和检索而准备,还可以用于配置共享和服务发现。Etcd相对于和它有类似功能的zookeeper来说更加轻量级。

在日常使用etcd过程中,存储在etcd的数据会随着应用程序各类操作而动态变化。我们做监控的人看到动态变化的数据,就会想哪能否通过Zabbix来监控这些数据从而实现应用程序的监控?下面我通过一个简单的例子演示一下,如何使用Zabbix把etcd里面存储数据监控起来。

1. Etcd的安装

a.首先我们把传说中etcd安装起来,依次运行以下命令或者整成脚本运行:

以上是测试环境安装过程,为方便我们使用。要上生产环境可以参照官方文档。

点击查看

对于etcd不太熟悉的小伙伴,可以去以下链接学习一下。基本操作都在里面了.

点击学习

b.启动etcd单机模式

运行以下命令启动etcd:

/tmp/etcd-download-test/etcd

/tmp/etcd-download-test/etcd

当看到embed: ready to serve client requests 你的etcd单机模式就已经启动成功了。

c.验证是否正常运行:

首先export一下环境变量:

export ETCDCTL_API=3

往etcd数据库写入数据:

/tmp/etcd-download-test/etcdctl put Zabbixtest 888888

从etcd读取数据:

2.Etcd客户端编写

到了这里测试环境的etcd就搭建完成,接下来我们通过go语言写一个读取etcd的客户端,并把数据通过Zabbix sender发送到Zabbix server。

这段代码中用到2个第三方库,一个是go.etcd.io/etcd/clientv3用于连接到etcd,另外一个是github.com/fujiwara/go-Zabbix-get/Zabbix 用于实现Zabbix sender协议的。通过go get url 可以从公共仓库取下来。

代码中有几个变量需要修改环境对应信息。HostName:主机名,Zabbix里面配置agent的主机名;

ZabbixServer:Zabbix server的ip地址;

endpoints:etcd的ip地址。

通过go run 命令把上面的代码运行起来。成功运行的话看到以下返回结果

3.Zabbix监控项配置

我们需要Zabbix添加一个监控项用于接收etcd客户端发过去的数据。

选择一台需要监控的主机(etcd客户端配置的主机名一致的主机),新建一个监控项,监控项的type选择【Zabbix trapper】(Zabbix采集器)。Key要和etcd客户端一致才能接收到数据。为方便调试,数据存储类型选择 Text类型。

4.数据发送测试

通过命令行往etcd写几条数据,模拟应用程序操作。看下Zabbix能否正常接收到数据。

往etcd写入数据:

Etcd命令行

写入2条数据,etcd检测数据的变化,自动发通知给Zabbix。如下下图:

Etcd客户端

Zabbix监控数据

把刚才写入进去数据删除:

Etcd命令行

Zabbix监控数据

5.小结

以上的例子基于etcd watch机制的客户端开发出来,可以实时检测到etcd数据变化并发送到Zabbix server。当然例子比较简单,只是把获取的结果直接返回Zabbix server。但只要在此基础上进行一些简单改造,就可以实现实时的应用程序的监控。下面我举几个可能实现的场景:

1.高可用集群监控,应用程序会把高可用的选举标志放在etcd中,通过监控这个标志状态来实现应用程序高可用集群监控;

2.分布式服务发现的监控,在实现分布式服务过程中,会把服务上线和下线信息注册到etcd中。通过监控etcd中的数据就可以实现分布式服务实时动态监控;

3.应用程序数据监控,例如kubernetes会把配置存储etcd中,比如网络配置数据,存储配置数据,pod的配置数据等等。同样可以把他们监控起来。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-04-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Zabbix开源社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档