上篇传送门介绍和搭建 GrafanaLoki,今天学习实战收集dockers容器的日志。

Grafana Loki 支持以下官方客户端发送日志:

  • Promtail
  • Docker Driver
  • Fluentd
  • Fluent Bit
  • Logstash
  • Lambda Promtail

其中我们关注比较多是:

  • Promtail 是运行 Kubernetes 时的首选客户端,因为您可以将其配置为自动从运行 Promtail 的同一节点上运行的 pod 中抓取日志
  • Docker Logging Driver 当使用 Docker 而不是 Kubernetes 时,应该使用 Loki 的 Docker 日志记录驱动程序,因为它会自动添加适合正在运行的容器的标签。

Docker Driver

Grafana Loki 官方支持一个 Docker 插件,该插件将从 Docker 容器中读取日志并将它们发送到 Loki

安装

在每台 Docker 主机安装插件

docker plugin install grafana/loki-docker-driver:latest –alias loki –grant-all-permissions

检查是否安装成功:

docker plugin ls

$ docker plugin ls
ID             NAME          DESCRIPTION           ENABLED
2aa05FooBar   loki:latest   Loki Logging Driver   true

插件的使用可以有两种方式:

  • 配置全局 daemon.json,收集此后创建的所有容器的日志。
  • 运行容器时指定logging类型为loki

这里我们采用第一种方式

配置全局 daemon.json

sudo vi /etc/docker/daemon.json

{
    "log-driver": "loki",
    "log-opts": {
        "loki-url": "http://127.0.0.1:3100/loki/api/v1/push"
    }
}

重启docker服务

sudo systemctl restart docker

查看是否生效

docker info

$docker info
...
Logging Driver: loki

说明配置生效。

测试

启动测试服务,打开grafana查看,数据源选择 “Loki”。 搜索选择 compose-service ,由于这边是使用docker-compose启动的服务。 选择 “你的测试服务”,显示如下。

至此,已经成功收集docker的日志。

小结

本篇主要介绍如何利用 Docker Driver插件和配置本地环境来收集dockers日志到loki。

reference