上篇传送门介绍和搭建 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。