惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

爱范儿
爱范儿
腾讯CDC
博客园 - 司徒正美
A
About on SuperTechFans
H
Help Net Security
J
Java Code Geeks
C
Check Point Blog
B
Blog RSS Feed
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
MongoDB | Blog
MongoDB | Blog
U
Unit 42
Hugging Face - Blog
Hugging Face - Blog
Last Week in AI
Last Week in AI
MyScale Blog
MyScale Blog
V
Visual Studio Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
I
InfoQ
H
Hackread – Cybersecurity News, Data Breaches, AI and More
F
Fortinet All Blogs
博客园 - 聂微东
酷 壳 – CoolShell
酷 壳 – CoolShell
GbyAI
GbyAI
博客园 - 【当耐特】
雷峰网
雷峰网

Jacky's Blog

2025 年终总结 – Jacky's Blog Cursor Tab – Jacky's Blog JetKVM 初体验 – Jacky's Blog 🎉 Nginx UI 获得 10k Stars – Jacky's Blog 2024 年终总结 – Jacky's Blog Home Assistant 自定义模板开关 – Jacky's Blog 23 – Jacky's Blog 2023 年终总结 – Jacky's Blog 22 – Jacky's Blog Drone Bark 通知发送插件 – Jacky's Blog 在 Drone CI 中使用 DooD – Jacky's Blog
Docker 容器日志监控方案 Grafana + Loki + Promtail – Jacky...
Jacky 18 11 月, 2024 · 2024-11-18 · via Jacky's Blog

在前文中,我们安装了 Grafana,请参考容器监控方案 cAdvisor + Prometheus + Grafana

安装 Loki 和 Promtail

1. 创建配置文件夹并进入

mkdir /etc/loki
cd /etc/loki

2. 下载配置文件

wget https://raw.githubusercontent.com/grafana/loki/v3.0.0/cmd/loki/loki-local-config.yaml -O loki-config.yaml
wget https://raw.githubusercontent.com/grafana/loki/v3.0.0/clients/cmd/promtail/promtail-docker-config.yaml -O promtail-config.yaml

3. 修改 Promatil Config

server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: /tmp/positions.yaml

clients:
  - url: http://172.17.0.1:3100/loki/api/v1/push

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

- job_name: containers
  static_configs:
  - targets:
      - localhost
    labels:
      job: containerlogs
      __path__: /var/lib/docker/containers/*/*log

  pipeline_stages:
  - json:
      expressions:
        output: log
        stream: stream
        attrs: attrs
  - json:
      expressions:
        tag: tag
      source: attrs
  - regex:
      expression: '(?P<image_name>[^|]+).(?P<container_name>[^|]+).(?P<image_id>[^|]+).(?P<container_id>[^|]+)'
      source: tag
  - labels:
      image_name: image_name
      container_name: container_name
      image_id: image_id
      container_id: container_id
  - output:
      source: output

4. 修改 Docker 日志选项

修改 /etc/docker/daemon.json,如不存在请创建。

{
   "log-driver": "json-file",
   "log-opts": {
      "tag": "{{.ImageName}}|{{.Name}}|{{.ImageFullID}}|{{.FullID}}"
   }
}

然后执行以下命令重启 Docker:

sudo systemctl daemon-reload
sudo systemctl restart docker

注意:容器需要使用 Docker 默认的 log driver,否则将无法获取到日志。

5. 启动 Loki 和 Promtail

docker run --name loki -d -v /etc/loki:/mnt/config -p 3100:3100 --restart=always grafana/loki:3.0.0 -config.file=/mnt/config/loki-config.yaml
docker run --name promtail -d -v /etc/loki:/mnt/config -v /var/log:/var/log -v /var/lib/docker/containers:/var/lib/docker/containers --link loki --restart=always grafana/promtail:3.0.0 -config.file=/mnt/config/promtail-config.yaml

配置 Grafana

1. 添加 Data sources

Docker 容器日志监控方案 Grafana + Loki + Promtail-Jacky's Blog

2. 使用 Explore 预览日志

选中数据源,这里以 local-loki 为例。

Docker 容器日志监控方案 Grafana + Loki + Promtail-Jacky's Blog

Label filters 中,选中 job = containerlogs, container_name = 需要监控容器名称,之后点击右上角的 Run query,即可在下方查看日志。

Docker 容器日志监控方案 Grafana + Loki + Promtail-Jacky's Blog
Docker 容器日志监控方案 Grafana + Loki + Promtail-Jacky's Blog

你还可以调整 Display results 实现正序或倒序显示日志。

3. 添加日志到新的 Dashboard

Docker 容器日志监控方案 Grafana + Loki + Promtail-Jacky's Blog

添加完成后修改 Dashboard,可在 Permission 中为用户或团队单独授权。

Docker 容器日志监控方案 Grafana + Loki + Promtail-Jacky's Blog

文章最后修订于 2025年5月15日