Jacky's Blog Jacky's Blog
  • 首页
  • 关于
  • 项目
  • 大事记
  • 留言板
  • 友情链接
  • 分类
    • 干货
    • 随笔
    • 项目
    • 公告
    • 纪念
    • 尝鲜
    • 算法
    • 深度学习
  • 0
  • 2

Docker 容器日志监控方案 Grafana + Loki + Promtail

Jacky
18 11 月, 2024

在前文中,我们安装了 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 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 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

文章最后修订于 2024年12月13日

0
23
上一篇
Home Assistant 自定义模板开关
下一篇

评论 (2)

再想想
  • Sean

    博主,方便留个联系方式吗?我最近也在部署 PLG,想问下你们实际生产应用了没?

    3 月前
    • Jacky

      @Sean: 实际应用了

      2 月前

近期评论

  • Jacky 发表在《留言板》
  • 菜鸟 发表在《留言板》
  • merlin 发表在《留言板》
  • orz 发表在《Xcode 中使用 Clang-format》
  • Jacky 发表在《关于》
2
Copyright © 2016-2025 Jacky's Blog. Designed by nicetheme.
粤ICP备16016168号-1
  • 首页
  • 关于
  • 项目
  • 大事记
  • 留言板
  • 友情链接
  • 分类
    • 干货
    • 随笔
    • 项目
    • 公告
    • 纪念
    • 尝鲜
    • 算法
    • 深度学习

搜索

  • Mac
  • Apple
  • OS X
  • iOS
  • macOS
  • Linux
  • 阿里云
  • WordPress
  • 运维
  • macOS Sierra

Jacky

Go Python C C++ | 弱冠之年 | 物联网工程
183
文章
192
评论
267
喜欢