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

Loki Promtail模板无法读取变量问题排查求助

Promtail模板变量为空问题解决

你的问题出在Promtail的template阶段默认读取的是extracted字段集合,而非labels集合。

你通过regex提取了level、user等字段后,立刻用labels阶段把这些字段转移到了标签中,但这个操作不会自动保留extracted里的原始字段值,导致后续template阶段找不到对应的变量,所以输出为空。

两种解决方法:

方法1:直接引用标签变量

修改template阶段的变量引用,明确指向labels集合中的值:

pipeline_stages:
  - cri: {}
  - regex:
      expression: '^(?P<time>.*?)\|(?P<level>.*?)\|(?P<process>.*?)\|(?P<logger>.*?)\|(?P<thread>.*?)\|(?P<client>.*?)\|(?P<user>.*?)\|(?P<message>(?s:.*))$'
  - labels:
      level:
      logger:
      thread:
      client:
      user:
  - labeldrop:
      - filename
  - template:
      source: testo2
      template: '{{ .labels.level }} - {{ .labels.user }}'
  - output:
      source: testo2

方法2:保留extracted字段的值

如果希望继续使用{{ .level }}这类简洁引用,可以在labels阶段后添加copy阶段,把标签中的值复制回extracted集合:

pipeline_stages:
  - cri: {}
  - regex:
      expression: '^(?P<time>.*?)\|(?P<level>.*?)\|(?P<process>.*?)\|(?P<logger>.*?)\|(?P<thread>.*?)\|(?P<client>.*?)\|(?P<user>.*?)\|(?P<message>(?s:.*))$'
  - labels:
      level:
      logger:
      thread:
      client:
      user:
  - copy:
      source: labels.level
      target: extracted.level
  - copy:
      source: labels.user
      target: extracted.user
  - labeldrop:
      - filename
  - template:
      source: testo2
      template: '{{ .level }} - {{ .user }}'
  - output:
      source: testo2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 21:33:17