「DataFlux」基于行协议实现软件自监控

简介:

在 DataFlux 的日常开发中,我们也会遇到其他开发者都会遇到的问题:怎么监控我们⾃己写的程序呢?

DataFlux ⼤概的模块如下:

image

在上图中,各种数据都是通过数据网关(DataWay)传入数据中心的,数据网关中收集的都是行协议形式的数据,所谓行协议,它大概形式如下:

指标集名称 标签列列表 指标列列表 时间戳 
AI 代码解读

比如:

其中,标签列表是相对固定的属性,如体检数据中的姓名和性别。而指标列表则是⼀些相对比较动态的属性,它们会随着时间推移而变化。最后就是以纳秒为单位的 Unix 时间戳。

在上图中,为了采集 k8s 集群内各个服务的指标数据,有两种⽅方式:

  • 开发专⽤的采集器,采集各个服务的数据,然后上报给数据网关
  • 各个服务⾃己报告⾃己感兴趣的指标,上报给数据⽹关
    image

第⼀种方式实现不太方便,首先,各个服务需要开放数据采集接口,然后还要单独开发采集器调用接口来采集运行⽇志,通常情况下,这些数据都是⾼度定制的,不太能使用现有的工具来采集。

第二种⽅式就很灵活,得益于行协议的简单设计,各个子服务只需要将⾃己感兴趣的运行指标,以行协议的方式上报给数据⽹关即可,⽆无需在采用其它的⼯具来收集运⾏⽇志。

下⾯是⼀段示例代码:查询 InfluxDB 时,我们希望能监控一些较慢(响应时间大于 1 秒)的查询:

start := time.Now()
sql := `SELECT * FROM "体检数据"` influx.Query(sql)
elapsed := time.Since(start)
if elapsed.Seconds() > 1.0 {
event := fmt.Sprintf(`influx_slow_query,集群ID=%s,DB=%s sql="%s",cost=%f %d`, influx.InstanceID,
                          influx.DB,
                          sql,
                          elapsed.Seconds(),
                          time.Now().Nanosecond())
     dataway.Send(event)
 }
AI 代码解读

这样一来,一旦有一个慢查询,就能在 Web 上看到这个慢查询记录,我们可以轻松定位是哪个查询语句、 在哪个实例上出现了慢查询。进一步通过对 SQL 以及 InfluxDB 本身的监控分析,我们就能确定,是 SQL 编写的问题(这里明显是因为没有 LIMIT 数据条数,数据量太大导致的),还是集群负载过高的问题。

通过这种⽅式,我们能收集数据中心、数据网关自身以及集群内其它子服务的运行日志(如上图中红线箭头所示),甚至,通过 Telegraf、Prometheus 等开源⼯具,我们还能将 k8s 集群本身的数据,通过数据网关汇聚,从而实现对它们的统一监控。
image

目录
打赏
0
0
0
0
326
分享
相关文章
网络协议解析:在员工上网监控软件中实现HTTP流量分析
随着企业对员工网络活动的监控需求不断增加,开发一套能够实现HTTP流量分析的网络协议解析系统变得愈发重要。本文将深入探讨如何在员工上网监控软件中实现HTTP流量分析,通过代码示例演示关键步骤。
310 0
局域网监控软件的实时通知系统:利用Node.js和WebSocket实现即时消息推送
本文介绍了如何使用Node.js和WebSocket构建局域网监控软件的实时通知系统。实时通知对于网络安全和家庭监控至关重要,能即时发送监控数据变化的通知,提高响应速度。通过Node.js创建WebSocket服务器,当数据变化时,监控软件发送消息至服务器,服务器随即推送给客户端。此外,还展示了如何利用Node.js编写API,自动将监控数据提交到网站,便于用户查看历史记录,从而提升监控体验。
230 3
JSF与WebSockets,打造实时通信魔法!让你的Web应用秒变聊天室,用户体验飞升!
【8月更文挑战第31天】在现代Web应用开发中,实时通信对于提升用户体验至关重要。本文探讨了如何在主要面向Web应用开发的JSF(JavaServer Faces)框架中引入WebSockets支持,以实现客户端与服务器之间的全双工通信。通过具体示例展示了在JSF应用中实现WebSockets的基本步骤:添加依赖、创建服务器端点以及在前端页面中嵌入JavaScript客户端代码。尽管这一过程中可能会遇到一些挑战,如复杂代码编写和额外配置需求,但借助AWS等云服务平台,开发者仍能高效地完成部署和管理工作,从而增强Web应用的实时通信能力。
72 0
【网络安全 | 网络协议】一文讲清HTTP协议
【网络安全 | 网络协议】一文讲清HTTP协议
186 0
利于群晖的File Station+SFTP实现第三方人员快速获取服务器应用日志
利于群晖的File Station+SFTP实现第三方人员快速获取服务器应用日志
251 0
网络游戏开发-客户端2(自定义websocket协议格式)
网络游戏开发-客户端2(自定义websocket协议格式)
227 0
Loadrunner脚本开发-基于HTTP协议的流媒体视频在线播放服务器性能测试
Loadrunner脚本开发-基于HTTP协议的流媒体视频在线播放服务器性能测试
200 0
火车头采集器如何设置http代理数据采集
在我们采集数据过程中,如果遇到对方网站限制了你的ip访问,就可以通过二级代理服务器的功能来实现更换ip。
火车头采集器如何设置http代理数据采集
安卓应用安全指南 5.4.2 通过 HTTPS 的通信 规则书
5.4.2 通过 HTTPS 的通信 规则书 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC BY-NC-SA 4.0 使用 HTTP/S 通信时,遵循以下规则: 5.4.2.1 必须通过 HTTPS 通信发送/接收敏感信息(必需) 在 HTTP 事务中,发送和接收的信息可能被嗅探或篡改,并且连接的服务器可能被伪装。
1057 0

热门文章

最新文章