如何在 Promtail 中解析嵌套的 json

Posted

技术标签:

【中文标题】如何在 Promtail 中解析嵌套的 json【英文标题】:How to parse nested json in Promtail 【发布时间】:2021-10-06 03:20:42 【问题描述】:

我有以下嵌套 JSON 格式的日志

"level":30,"time":1627625600625,"pid":15676,"hostname":"admin-hp-elitebook-840-g2","reqId":"req-2","req":"method":"POST","url":"/v1/login","hostname":"127.0.0.1:3000","remoteAddress":"127.0.0.1","remotePort":55884,"msg":"incoming request"

由此,我想为方法、URL、主机创建标签解析promtail中的嵌套

scrape_configs:
- job_name: plainlog
  pipeline_stages:
  - json:
      expressions:
        req: req
  - labels:
      req:
  - output:
      source: req
  static_configs:
  - targets:
      - localhost
    labels:
      job: plainlog
      __path__: /home/nidhin/Desktop/plainlog/*log

【问题讨论】:

【参考方案1】:

您需要添加另一个 json 阶段。对于嵌套 json 的每一层,您都添加了一个阶段来解析从上一层提取的数据中的数据。 例如:

  - json:
      expressions:
        req: 
  - json:
      expressions:
        method: 
      source: req

更多信息在这里:https://grafana.com/docs/loki/latest/clients/promtail/stages/json/#using-extracted-data

【讨论】:

以上是关于如何在 Promtail 中解析嵌套的 json的主要内容,如果未能解决你的问题,请参考以下文章

解析嵌套的 JSON 并将其保存到 SQLite 中,然后检索它

如何在java中解析复杂的嵌套JSON?

如何为 Hive 创建架构以使用 SerDe 解析深度嵌套的 json(Azure Application Insights 输出)?

如何在 Ios 中解析数组数据中的嵌套 Json 对象

如何解析嵌套的json?迅速

Promtail 和 Grafana - 来自 docker 容器的 json 日志文件未显示