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

如何在Promtail配置中添加level标签以提取日志级别适配Grafana Loki

解决方法

方法1:采集阶段提前提取为静态标签(推荐)

这种方式查询性能最好,适合长期使用,以Loki生态最常用的Promtail采集组件为例,修改采集配置的pipeline_stages即可实现:

  • 新增regex解析阶段,匹配你的Spring Boot格式日志提取level字段,配置示例:
scrape_configs:
  - job_name: springboot-log
    pipeline_stages:
    - regex:
        expression: '^(?P<timestamp>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3})\s+(?P<level>\w+)\s+.*'
    - labels:
        level:

配置生效后新采集的日志就会自动带上level标签,可直接用于分组统计。如果使用Fluentd/Fluent Bit采集,可使用对应grok/正则解析插件提取level字段,作为标签上报到Loki即可。

方法2:查询时动态提取标签

如果不想修改现有采集配置,可直接在LogQL中用正则表达式实时提取level字段:

  • 基础查询语句(提取level字段用于过滤):
{job="你的日志采集任务名"} | regexp "^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}\\.\\d{3}\\s+(?P<level>\\w+)\\s+.*"
  • 按日志级别分组统计的查询语句(可直接用于图表生成):
sum by (level) (count_over_time({job="你的日志采集任务名"} | regexp "^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}\\.\\d{3}\\s+(?P<level>\\w+)\\s+.*" [$__interval]))

注意事项

  • 正则表达式可根据实际日志格式调整,确保能匹配DEBUG、INFO、WARN、ERROR等所有可能的日志级别
  • 静态标签方案的查询性能远高于动态提取方案,建议生产环境优先使用
  • level属于低基数标签(取值仅3-5种),作为索引标签不会导致Loki索引压力过高,完全符合官方最佳实践

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 10:36:08