如何在 AWS 洞察中可视化由多个维度聚合的时间序列数据?

eve*_*992 8 amazon-web-services amazon-cloudwatchlogs aws-cloudwatch-log-insights

我想使用 cloudwatch 洞察来可视化主机随时间变化的平均延迟的多线图。每个主机一行。

此统计查询提取延迟并按主机将其聚合到 10 分钟的存储桶中,但它不会生成任何可视化效果。

stats avg(latencyMS) by bin(10m), host

bin(10m) | host | avg(latencyMS)
0m       |    1 |           120
0m       |    2 |           220
10m      |    1 |           130
10m      |    2 |           230
Run Code Online (Sandbox Code Playgroud)

文档称这是一个常见的错误,但没有提供任何替代方案。

以下查询不会生成可视化,因为它包含多个分组字段。

stats avg(myfield1) by bin(5m), myfield4
Run Code Online (Sandbox Code Playgroud)

aws 文档

实验上,如果每条记录有多个键,cloudwatch 会生成一个多线图。生成折线图的查询必须返回如下结果:

bin(10m) | host-1 avg(latencyMS) | host-2 avg(latencyMS)
0m       |    120                |                   220
10m      |    130                |                   230
Run Code Online (Sandbox Code Playgroud)

我不知道如何编写输出该查询的查询。

Olu*_*ule 8

解析每个主机的单独消息,然后计算它们的统计信息。

例如,要获得来自PID=11PID=13 的进程的响应的平均延迟。

parse @message /\[PID:11\].* duration=(?<pid_11_latency>\S+)/
| parse @message /\[PID:13\].* duration=(?<pid_13_latency>\S+)/
| display @timestamp, pid_11_latency, pid_13_latency
| stats avg(pid_11_latency), avg(pid_13_latency) by bin(10m)
| sort @timestamp desc
| limit 20
Run Code Online (Sandbox Code Playgroud)

正则表达式提取持续时间为ID的过程1113对参数pid_11_latencypid_13_latency分别和填充null不存在匹配一系列明智的。

您可以通过创建匹配正则表达式来构建此示例,该表达式从您关心的主机的消息中提取指标。

  • 如何使PID动态化?例如,主机可以随着时间的推移而增长,所以每次我都可以拥有更多,甚至想象你有一百个。放置一百个解析行效率不高 (5认同)
  • 有人知道如何动态处理这个问题吗?我有一个用例,我不知道数据集中有多少个“主机”或者它们的值是什么,但我希望看到随着时间的推移会有不同的值。 (4认同)