1. 程式人生 > 實用技巧 >loki 收集docker swarm日誌.md

loki 收集docker swarm日誌.md

目錄

參考自

https://github.com/swarmstack/loki
https://www.yuque.com/wangtao-7pwni/ivs01l/eyavpl

思路

1. loki 收集docker swarm的日誌需要給docker daemon安裝一個loki plugin ,docker daemon將會把日誌推送給loki服務
2.  grafana上安裝Loki源  來展示資料

步驟

啟動一個loki服務

1. 下載配置檔案
wget https://raw.githubusercontent.com/grafana/loki/v1.5.0/cmd/loki/loki-local-config.yaml -O loki-config.yaml
2. 啟動loki服務  (在172.16.2.176節點上)
docker run --name loki -v /root/deploy/loki/loki-config.yaml:/mnt/config/loki-config.yaml -p 3100:3100 --restart=always -d grafana/loki:1.5.0 -config.file=/mnt/config/loki-config.yaml
在docker swarm 的每個node上安裝loki外掛
docker plugin install grafana/loki-docker-driver:latest --alias loki
修改docker配置檔案 /etc/docker/daemon.json
{
    "debug": true,
    "log-driver": "loki",
    "log-opts": {
        "loki-url": "http://172.16.2.176:3100/loki/api/v1/push",
        "max-size": "50m",
        "max-file": "10"
    },
    "insecure-registries" : ["172.16.2.176:5000"],
    "registry-mirrors": ["https://pqbap4ya.mirror.aliyuncs.com"]
}
重啟docker swarm各個節點

如果docker swarm叢集上已經有容器了,可以先驅逐容器,如果沒有可以直接重啟docker daemon程序

1. 驅逐容器
docker node update --availability drain ${nodeId}
2. 重啟對應docker 
systemctl daemon-reload
systemctl restart docker

gafana安裝

1. docker-compose.yaml檔案
version: "3"
services:
  grafana:
    image: grafana/grafana:master
    ports:
      - 3000:3000
    deploy:
      restart_policy:
        condition: on-failure
      placement:
        constraints: [node.hostname == app01]
2. 啟動
docker stack deploy -c docker-compose.yaml grafana

結果展示