Loki+Grafana监控docker容器日志

目标:最近开发人员时常需要查看各个环境项目中容器日志,而直接通过ssh终端使用docker logs命令查看日志不太安全,这会导致很多人员知道服务器的账户和密码,有没有一种可以收集所有容器日志的平台系统。那么这套系统就是Loki+Grafana组合。

重要提醒:不要用于生产环境,否则loki容器日志过多导致服务器CPU占满,生成环境会异常缓慢,博主在摸索过程中吃亏了,血淋淋的教训。

适用于生产环境的方法,移步至另一篇博客:http://t.csdn.cn/cOiqD

最终效果:与docker logs控制台的信息一致,可实时显示,也可以过滤。

需要的工具:Loki,loki-docker-driver,Grafana

通过安装 docker loki plugin 直接采集docker容器日志,并推送至loki。不需要promtail应用。

现在使用的环境和版本:grafana/loki:2.8.2

在安装之前可以了解这个信息,docker容器控制台包含了标准输出和错误输出,我在容器的log日志中只有少量的信息。通过logging driver驱动转发给对应的应用。docker容器默认是json-file。

Loki+Grafana监控docker容器日志_第1张图片

1、在需要监控的主机中,安装容器grafana/loki:2.8.2

创建目录:/home/apps/loki,

进入目录:cd /home/apps/loki,创建loki配置文件vi loki-config.yaml,并给权限chmod 777 ./*,不需要修改。

auth_enabled: false

server:
  http_listen_port: 3100
  grpc_listen_port: 3110
  grpc_server_max_recv_msg_size: 1073741824  #grpc最大接收消息值,默认4m
  grpc_server_max_send_msg_size: 1073741824  #grpc最大发送消息值,默认4m

ingester:
  lifecycler:
    address: 127.0.0.1
    ring:
      kvstore:
        store: inmemory
      replication_factor: 1
    final_sleep: 0s
  chunk_idle_period: 5m
  chunk_retain_period: 30s
  max_transfer_retries: 0
  max_chunk_age: 20m  #一个timeseries块在内存中的最大持续时间。如果timeseries运行的时间超过此时间,则当前块将刷新到存储并创建一个新块

schema_config:
  configs:
    - from: 2023-07-03
      store: boltdb
      object_store: filesystem
      schema: v11
      index:
        prefix: index_
        period: 168h

storage_config:
  boltdb:
    directory: /opt/loki/index #存储索引地址
  filesystem:
    directory: /opt/loki/chunks

limits_config:
  enforce_metric_name: false
  reject_old_samples: true
  reject_old_samples_max_age: 168h
  ingestion_rate_mb: 30  #修改每用户摄入速率限制,即每秒样本量,默认值为4M
  ingestion_burst_size_mb: 15  #修改每用户摄入速率限制,即每秒样本量,默认值为6M

chunk_store_config:
        #max_look_back_period: 168h   #回看日志行的最大时间,只适用于即时日志
  max_look_back_period: 0s

table_manager:
  retention_deletes_enabled: false #日志保留周期开关,默认为false
  retention_period: 0s  #日志保留周期

创建容器grafana/loki:2.8.2,容器挂载卷-v不要删除否则会报错

docker run -d \
--name loki \
--privileged=true \
-v /home/apps/loki:/mnt/config \
-v /home/apps/loki/wal:/wal \
-v /home/apps/loki/index:/opt/loki/index \
-v /home/apps/loki/chunks:/opt/loki/chunks \
-p 3100:3100 \
-p 9096:9096 \
--restart=always \
grafana/loki:2.8.2 -config.file=/mnt/config/loki-config.yaml

这个时候容器会报错重启,因为报错没有权限

Loki+Grafana监控docker容器日志_第2张图片

 解决:进入目录cd /home/apps/loki,授权chmod -R 777 *

删除容器后再执行创建。docker rm -f loki

2、安装loki-docker-driver驱动

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

3、安装Grafana

docker run -d -p 3000:3000 --name=grafana -v /etc/localtime:/etc/localtime:ro grafana/grafana

本地防火墙开放3100,和3000端口

访问http://主机IP:3000,用户名默认应该是admin/admin

4、为单个容器添加日志驱动

先停止删除原来你想监控的容器。

再重新创建容器:

docker run --log-driver=loki \
    --log-opt loki-url="http://你的主机IP:3100/loki/api/v1/push" \
    --log-opt loki-retries=5 \
    --log-opt loki-batch-size=400 \
    --log-opt max-size=50m \
    --log-opt max-file=3 \
    --restart=always --name 你的容器名 镜像名:镜像版本

5、添加数据源

更改grafana为中文界面

左侧点击connections,连接 

添加连接,搜索Loki,选中数据源

添加URL,地址为http://主机IP:3100,下方点save/test即可 

添加成功 

点击左侧探索, 进入查看页面。完成添加。

你可能感兴趣的:(docker,grafana,docker,loki)