Promtail 和 Grafana - 来自 docker 容器的 json 日志文件未显示
Posted
技术标签:
【中文标题】Promtail 和 Grafana - 来自 docker 容器的 json 日志文件未显示【英文标题】:Promtail and Grafana - json log file from docker container not displayed 【发布时间】: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 容器的日志没有给出任何信息。
我错过了什么?
提前谢谢你!
【问题讨论】:
我猜标题中缺少一个动词 【参考方案1】:在您的管道阶段,您需要存储提取的值:
pipeline_stages:
- json:
expressions:
level: level
message: message
timestamp: timestamp
context: context
- timestamp:
source: timestamp
- labels:
level:
context:
- output:
source: message
这将设置时间戳,标签context
、level
和message
将成为日志行。
可以在here找到文档。
【讨论】:
时间戳、标签和输出键缺少“:”。花了半个小时弄清楚为什么我的 YAML 无效。 很抱歉,它现在已修复。虽然比错误的空格无效更好:)以上是关于Promtail 和 Grafana - 来自 docker 容器的 json 日志文件未显示的主要内容,如果未能解决你的问题,请参考以下文章
promtail-loki-grafana轻量日志监控系统(转载)
Linux搭建Promtail + Loki + Grafana 轻量日志监控系统