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

Promtail对接Grafana Loki Cloud时JSON日志字段未识别问题

解决Promtail解析JSON日志字段的问题

要让Promtail自动识别日志中的JSON字段,你需要在scrape配置中添加pipeline_stages启用JSON解析,同时确保Winston输出标准的单行JSON日志。

1. 修改Promtail的scrape_configs配置

在原有配置基础上增加JSON解析的pipeline阶段,提取日志内的字段:

scrape_configs:
  - job_name: system
    static_configs:
      - targets:
          - localhost
        labels:
          job: varlogs
          __path__: /var/log/sms-meeting/*.log
    # 新增JSON解析阶段
    pipeline_stages:
      # 解析日志中的JSON字段,映射到对应的变量
      - json:
          expressions:
            env: env
            file: file
            level: level
            message: message
            service: service
      # 可选:将常用字段转为Loki标签,方便查询过滤
      - labels:
          env:
          level:
          service:
  • json阶段:负责从日志行中提取指定的JSON字段,字段名要和日志内的key完全匹配。
  • labels阶段:如果需要把解析出的字段作为Loki的标签使用(比如按env或level过滤日志),可以添加这个阶段;不需要的话可以省略。

2. 确保Winston输出标准单行JSON日志

你的Winston当前配置没有指定日志格式,默认可能输出非JSON格式的日志,需要添加json格式配置:

const logger = winston.createLogger({
  level: "info",
  defaultMeta: { service: "myApp", env: process.env.NODE_ENV },
  // 强制输出单行JSON格式日志
  format: winston.format.json(),
  transports: [
    new winston.transports.File({ filename: "logs/error.log", level: "error" }),
    new winston.transports.File({ filename: "logs/combined.log" }),
  ],
});

修改后,Winston会将每条日志序列化为单行完整的JSON对象,确保Promtail能正确解析。

验证配置

重启Promtail容器后,在Loki Cloud中查询日志,就能看到解析后的JSON字段,也可以通过添加的标签进行过滤查询。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 08:52:18