【问题标题】:Promtail and Grafana - json log file from docker container not displayedPromtail 和 Grafana - 来自 docker 容器的 json 日志文件未显示
【发布时间】:2021-06-20 11:23:20
【问题描述】:

我的应用程序的服务是通过 docker-compose 部署的。目前,我还在同一个 docker-compose 网络中部署了 Grafana、Loki 和 Promtail。

按照入门指南,使用配置收集和显示来自/var/log 的日志文件

- job_name: system
entry_parser: raw
static_configs:
- targets:
    - localhost
  labels:
    job: varlogs
    __path__: /var/log/*log

工作正常。

但是,我的后端日志 (NestJS) 到存储在 docker 卷中的日志文件中。 示例日志条目:

{"message":"Mapped {/api/drink, POST} route","context":"RouterExplorer","level":"info","timestamp":"2021-03-23T17:08:16.334Z"}

日志的路径是

/var/lib/docker/volumes/my_volume/_data/general.log

当我将以下配置添加到 Promtail 时

 - job_name: backend
pipeline_stages:
- json:
    expressions:
      level: level
      message: message
      timestamp: timestamp
      context: context
static_configs:
- targets:
    - localhost
  labels:
    job: backend
    __path__: /var/lib/docker/volumes/my_volume/_data/general.log

并在 Grafana 中使用查询 {job="backend"}什么都不显示。 此外,promtail 容器的日志没有给出任何信息。

我错过了什么?

提前谢谢你!

【问题讨论】:

  • 我猜标题中缺少一个动词

标签: docker logging docker-compose grafana grafana-loki


【解决方案1】:

在您的管道阶段,您需要存储提取的值:

pipeline_stages:
- json:
    expressions:
      level: level
      message: message
      timestamp: timestamp
      context: context
- timestamp:
    source: timestamp
- labels:
    level:
    context:
- output:
    source: message

这将设置时间戳,标签contextlevelmessage 将成为日志行。

可以在here找到文档。

【讨论】:

  • 时间戳、标签和输出键缺少“:”。花了半个小时弄清楚为什么我的 YAML 无效。
  • 很抱歉,它现在已修复。虽然比错误的空格无效更好:)
猜你喜欢
  • 1970-01-01
  • 2022-07-05
  • 1970-01-01
  • 1970-01-01
  • 2022-06-17
  • 2021-06-09
  • 2020-06-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多