You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Loki按service标签统计日志存储字节量?

解决方案

1. 使用LogQL统计日志总字节量

可以直接用Loki的bytes_over_time函数实现按service标签统计指定时间范围内的日志总字节数,替代原有的行数统计查询。

对应的LogQL查询语句:

sum by(service) (bytes_over_time({environment="live"}[24h]))
  • bytes_over_time会计算时间窗口内每条日志的原始字节大小总和
  • sum by(service)将结果按service标签分组聚合,得到每个服务在过去24小时内产生的日志总字节量
  • 保持使用Instant查询类型即可获取对应时间范围的统计结果

2. 其他成本分摊方案建议

如果上述LogQL查询无法满足需求(比如Loki版本过低不支持bytes_over_time),可以考虑以下方案:

  • 利用Promtail内置指标统计
    Promtail默认会暴露promtail_bytes_total指标,该指标记录了采集的日志总字节数,且带有service标签。可以在Prometheus中执行以下查询获取各服务24小时内的日志字节总量:

    sum by(service) (increase(promtail_bytes_total{environment="live"}[24h]))
    

    这种方式依赖Promtail的指标采集,统计结果和日志实际发送到Loki的字节量一致,无需修改Loki查询逻辑。

  • 基于存储实际占用分摊
    如果Loki使用对象存储(如S3、GCS)存储日志,且日志按service维度分片存储(需提前配置Loki的分片策略),可以直接通过对象存储的API或控制台统计每个service对应的存储桶/目录的占用空间,以此作为成本分摊的依据。这种方式最贴近实际存储成本,但需要调整Loki的存储架构来实现service级别的存储隔离。

  • 混合权重分摊模型
    对于日志内容大小差异极大的场景,可以建立混合权重模型:结合日志行数和字节数,或者为不同类型的日志设置自定义权重(比如大日志服务的权重系数更高),最终按加权后的数值分摊成本。该方案需要根据业务场景人工配置权重,适合需要灵活调整分摊规则的场景。

内容的提问来源于stack exchange,提问作者dayuloli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 04:10:00