我采集了 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 就可以了。
1
gabon 211 天前 via iPhone
看下 range vector 和 instant vector 的概念
|
2
dadagogogo OP @gabon 了解过了 我这个是因为执行 json 语句后 提取了 log 里面的所有内容 各个字段都成了标签了 导致每一个 log 都被认定位一个独立流( nginx log 里面有一个时间戳字段),这就是为什么 sum_over_time 有一系列的点
|