V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dadagogogo
V2EX  ›  Grafana

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

  •  
  •   dadagogogo · 168 天前 · 518 次点击
    这是一个创建于 168 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我采集了 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
    

    但我得到了这样的图:

    grafana graph

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

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

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

    right graph

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

    2 条回复    2024-06-03 17:04:42 +08:00
    gabon
        1
    gabon  
       168 天前 via iPhone
    看下 range vector 和 instant vector 的概念
    dadagogogo
        2
    dadagogogo  
    OP
       157 天前
    @gabon 了解过了 我这个是因为执行 json 语句后 提取了 log 里面的所有内容 各个字段都成了标签了 导致每一个 log 都被认定位一个独立流( nginx log 里面有一个时间戳字段),这就是为什么 sum_over_time 有一系列的点
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4120 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 10:15 · PVG 18:15 · LAX 02:15 · JFK 05:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.