为什么在 Loki 中要在使用 sum_over_time()后使用 sum()?

29 天前
 dadagogogo

我采集了 Nginx 的一些日志到 Loki 中,想在 Grafana 中展示,日志关键内容如下

{"bytes_sent": 1400, "uri":"/test"}
{"bytes_sent": 1300, "uri":"/test"}

我尝试使用下述 LogQL 。

sum_over_time({job="$job"} | json |  unwrap bytes_sent  [$__interval])

对应的 Query Inspector 是

Expr: sum_over_time({job="nginx_access_log"} | json |  unwrap bytes_sent  [1m])
Step: 1m0s

但我得到了这样的图:

在这个图中,每个点的 legend 是整个日志,内容是 bytes_send 的值,为什么 sum_over_time 返回的是这些内容呢?

当我尝试在其之前加多一个 sum()时,我得到了我想要的内容和图。

sum(sum_over_time({job="$job"} | json |  unwrap bytes_sent  [$__interval]))

我实在不知道为什么要在 sum_over_time 前要加 sum 方法,而不是只用 sum_over_time 就可以了。

331 次点击
所在节点    Grafana
2 条回复
gabon
29 天前
看下 range vector 和 instant vector 的概念
dadagogogo
17 天前
@gabon 了解过了 我这个是因为执行 json 语句后 提取了 log 里面的所有内容 各个字段都成了标签了 导致每一个 log 都被认定位一个独立流( nginx log 里面有一个时间戳字段),这就是为什么 sum_over_time 有一系列的点

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1043062

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX