如何使用Loki通过标签获取日志量/存储大小?

问题描述 投票:0回答:1

背景: 我有各种服务,由不同的团队管理,将日志发送到单个 Loki 实例。日志带有与服务名称相对应的标签

service
。我们还运行 Prometheus 和 Grafana。

目标:每个团队都有一个运营预算,我想根据每个服务生成的日志量来分配 Loki 实例的运营成本 + 存储成本,并从每个团队的预算中扣除。

我拥有的:我在 Grafana 上使用 LogQL 查询

count by(service) (rate({environment="live"} [24h]))
和“即时”查询类型来获取日志行总数,按
service
标签分组。

问题:有些服务的日志很小,而另一些服务的日志很大。根据日志行数来分配成本是不准确的。

问题: 是否有 LogQL 查询来获取按 service 标签分组的日志 (以字节为单位)

 的总大小?如果没有,是否有其他方法将日志成本归因于每个团队的建议?

grafana grafana-loki logql
1个回答
0
投票

要获取一段时间内 Loki 中所有行的总长度,您可以使用以下查询:

sum by (service) (
    sum_over_time(
        {environment="live"}
        | label_format length=`{{ __line__  | len }}`
        | unwrap length
    [24h])
)

这里:

  • label_format length=`{{ __line__  | len }}` 
    添加标签
    length
    ,其值等于整个日志行的长度。
  • unwrap length
    将此标签展开为值,以便与
    sum_over_time
  • 进行聚合

请注意,虽然此查询提供了您所描述的结果,但这只是对资源如何在服务之间分配的估计。它不考虑每个服务的系列号,我相信每个系列都有自己的存储开销。
*我不知道如何(或者即使)可以通过查询或任何其他方式来解释它

© www.soinside.com 2019 - 2024. All rights reserved.