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

为了快速定位、排查问题的,那么需要一个日志聚合、搜索的工具或者系统。

简介

Loki是一个受普罗米修斯启发的水平可伸缩、高可用性、多租户日志聚合系统。它的设计是非常有效的成本和易于操作。它不索引日志的内容,而是为每个日志流设置一组标签。

相关组件

  • Loki是主服务器,负责存储日志和处理查询。
  • Promtail是代理,负责收集日志并将其发送给 loki 。
  • Grafana用于 UI 展示。

部署

这里在Linux环境下,使用docker-compose的方式部署, 采集os的日志,主要分以下几个步骤:

  1. 启动 loki 、promtail、grafana
  2. 配置日志收集方式
  3. 观测日志是否采集、聚合

启动 loki 、promtail、grafana

在工作目录底下创建 docker-compose.yaml

version: "3"

networks:
  loki:

services:
  loki:
    image: grafana/loki:latest
    ports:
      - "3100:3100"
    command: -config.file=/etc/loki/local-config.yaml
    networks:
      - loki

  promtail:
    image: grafana/promtail:latest
    volumes:
      - /var/log:/var/log
    command: -config.file=/etc/promtail/config.yml
    networks:
      - loki

  grafana:
    image: grafana/grafana:latest
    ports:
      - "3000:3000"
    networks:
      - loki

查看是否启动:

docker-compose ls

输出:

smartgo$ docker-compose ls
NAME                STATUS              CONFIG FILES
xloki               running(3)          /home/smartgo/xloki/docker-compose.yaml

配置数据源

访问Grafana: yournode:3000 ,选择数据源:Explore–DataSource 可以看到Grafana支持的数据源,点击选择 Loki 设置地址为:

http://loki:3100

保存即可,点击 SaveAndTest

观测日志是否采集、聚合

搜索日志,选择数据源Loki,选择文件类型和文件路径,具体如下

小结

本文主要初步介绍日志聚合、搜索系统Loki,以及如何docker部署,Grafana配置,搜索日志。

ToDo

reference

jefffff

Stay hungry. Stay Foolish COOL

Go backend developer

China Amoy