grafana-loki - 如何在 Promtail 中解析嵌套的 json
问题描述
我有以下嵌套 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 中尝试过如下 JSON 表达式。我尝试解析 JSON,我能够提取 req,但我不知道如何解析在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
解决方案
您需要添加另一个 json 阶段。对于嵌套 json 的每一层,您都添加一个阶段来解析从上一层提取的数据中的数据。例如:
- json:
expressions:
req:
- json:
expressions:
method:
source: req
更多信息:https ://grafana.com/docs/loki/latest/clients/promtail/stages/json/#using-extracted-data
推荐阅读
- autodesk-forge - 如何在伪造查看器中获得模型的正确坐标
- c - 通过仅发送更改的值来减少 Firebase 延迟?
- python - 提高梯度下降的速度
- elasticsearch - 在具有特殊字符的自定义关键字字段上使用术语查询时出现意外结果
- python - 使用 Textblob 从文本中删除所有名词短语
- stackexchange-api - 如何通过 1 个调用从不同对象获取信息?
- javascript - 如何根据我的变量的范围选择通过 Ajax 更新价格?
- apache-spark - 是否可以使用 YARN 容量调度程序在 Spark 上运行 Hive?
- java - JTable 列的标题不会显示
- c# - Linq with EF core 2.2 Condition with where Clause FK and PK