数据聚合 & 分组:新一代系统监控的核心功能(数据聚合是什么意思)

网友投稿 944 2022-09-23

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

数据聚合 & 分组:新一代系统监控的核心功能(数据聚合是什么意思)

而今,我们就已经实现了这样的功能:

使用标签来实现数据的聚合和分组。

从而,就算线上系统发生了故障,要在短期内知道,到底是哪个模块的哪个部分出了哪样的问题,所需要的经验和时长都是很大的。

运维 2.0 时代

他们都不约而同地采用了同一种产品逻辑,也是 Cloud Insight 的产品逻辑,也是时间序列数据库的逻辑:

任何的性能指标,都作为时间序列数据被采集、被处理;任何的 Host 等归属于性能指标的属性,都作为指标的标签信息。

而在产品逻辑上,则表现为:

Cloud Insight 通过 3 个步骤达到操作系统、数据库、中间件,以及未来通过 Developer API 对接进来的所有 Metric 进行处理:

Cloud Insight Agent 采集并处理 Metric; 在平台服务仪表盘和自定义仪表盘中,提供 Metric 聚合、分组、统计运算、基本数学运算等操作; 针对操作的结果,提供曲线图、柱状图等多样化的展现形式。

数据聚合和分组

在 Beta v 0.2.1 中,我们实现了数据的聚合和分组。沿袭了 OpenTSDB 的查询方式:用一种类 SQL 的方式来查询指标。

接下来我们会介绍 Cloud Insight 已经实现的 Metric 的查询,以及其中的数据聚合和分组。

语法

Aggregation: MetricName {FromTag} by {TagKey}

在介绍语法前,我们先通过一组样本来解释 Metric 查询的语法。

SeriesMetricNameTagValue: HostTagValue: Owner
Asystem.cpu.idleChengMoMacAirchengmo
Bsystem.cpu.idleUbuntuChengMochengmo
Csystem.cpu.idleWZL-CentOSwangzhili
Series00:0001:0002:0003:0004:0005:00
A0.30.50.10.20.80.1
B0.80.30.70.80.90.3
C0.60.20.40.60.10.1

Aggregation 和 FromTag

Aggregation:聚合算子。指 Metric 查询范围 FromTag 所查询到的多条 series 通过 avg、max、min、sum 哪种方式聚合。FromTag:查询范围。指 Metric 所需聚合的 series 的查询条件。

如:

max: system.cpu.idle {host:ChengMoMacAir, host:UbuntuChengMO}

所得的结果是:

Series00:0001:0002:0003:0004:0005:00
A0.30.50.10.20.80.1
B0.80.30.70.80.90.3
Output0.80.50.70.80.90.3

同样,上述查询也可以简化成:

max: system.cpu.idle {owner:chengmo}

这就是标签管理在 Cloud Insight 的重要性啦。

by 其实就是 group_by

Cloud Insight 还支持类似 SQL 的 group_by 查询语法。这个在查看:

都是非常有用的。还是以上诉例子举例,如果我们想要看每个 host 的 CPU 空闲率:

avg: system.cpu.idle {} by {host}

此时,第一个 {FromTag} 缺省代表从所有 Metrics 中查询数据。如图所示,得到以下图表:

在实际的测试环境中,由于我们有 6 台测试主机,所以会得到如下的曲线。并且,当鼠标悬停至曲线时,下方的悬停窗口会分别显示 6 台主机的 system.cpu.idle。

灵活查询

聚合和分组并存

除开单纯的聚合和分组,Cloud Insight 还支持聚合和分组的复合查询。如:

avg: system.cpu.idle {} by {owner}

SeriesMetricNameTagValue: HostTagValue: Owner
Asystem.cpu.idleChengMoMacAirchengmo
Bsystem.cpu.idleUbuntuChengMochengmo
Csystem.cpu.idleWZL-CentOSwangzhili

此时,虽然有 3 个 host,但是分组是以 owner 来进行分组。所以,A 与 B 会聚合为一条曲线,而 C 和 A&B 的关系是分组的关系。

Series00:0001:0002:0003:0004:0005:00
A0.30.50.10.20.80.1
B0.80.30.70.80.90.3
C0.60.20.40.60.10.1
Output A&B0.550.40.40.50.850.2
Output C0.60.20.40.60.10.1

多条件查询

FromTag 可以承接多个条件,如上文提到的:

max: system.cpu.idle {host:ChengMoMacAir, host:UbuntuChengMO}

查询到是两个 Host 的聚合结果。那么,如果是以下查询呢:

max: system.cpu.idle {host:ChengMoMacAir, owner:wangzhili}

此时,查询到结果为 NULL。因为,Metric 查询遵循以下原则:

同一 Tag Key,Metric 查询求并集;不同 Tag Key,Metric 查询求交集。

也就是说,上述查询分别代表:

我想查询 host 为 ChengMoMacAir 和 host:UbuntuChengMO 的聚合结果我想查询 host 为 ChengMoMacAir 且 owner 为 wangzhili 的聚合结果

自然,根据表格,我们发现这样的 Host 是不存在的,故而结果为 NULL。

我们之所以这么设计,是因为此类思考更符合人的思维习惯:

当人们选择多个 host 时,自然而然想到的是这些 host 的求和结果,即:同一 Tag Key 求并集;当人们选择某个 host,又再次选择另一个 Tag 时,想到的是在这个 host 下满足这些 tag 的结果,即:不同 Tag Key 求交集。

参数查询

Cloud Insight 还添加了参数来提取出 {FromTag},可以让用户不用每次都修改 {FromTag} 来查看 Metric;而只需在参数下拉框中选择 {FromTag} 来动态查询 Metric。

上一篇:什么是运维告警?运维告警方式有哪些?
下一篇:程序员,你有多久没关爱自己了?(程序员关怀)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~