最近在三台樹莓派使用 Docker 架設服務
但是查看 log 真的不是很方便
最近剛完 Prometheus 看到 Loki
跟 Prometheus 很像,又是跟 Container 很有關係
看了一下部署流程,並不是非常難
所以就食做看看
使用官方 docker-compose loki/docker-compose.yaml at master · grafana/loki · GitHub
grafana 帳號密碼為 admin/admin
進去新加 datasource 為 loki
這樣就算部屬完成
Grafana 要點選 expore
才能看到日誌
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
version: "3"
networks:
loki:
services:
loki:
image: grafana/loki:2.0.0
ports:
- "3100:3100"
command: -config.file=/etc/loki/local-config.yaml
networks:
- loki
promtail:
image: grafana/promtail:2.0.0
volumes:
- /var/log:/var/log
command: -config.file=/etc/promtail/config.yml
networks:
- loki
grafana:
image: grafana/grafana:latest
ports:
- "3000:3000"
networks:
- loki
|
本機是linux 的話, /var/log/底下都會傳到 loki 日誌去
可以用 volume 把日誌掛到 containr 那邊去
應該也有一樣的效果
不過我下面還有比較好的方法
加 loki datasource 和 explore操作
Loki轻量级日志系统_Kammingo的博客-CSDN博客
輕量級日誌系統Loki原理簡介和使用_平凡人筆記 - MdEditor
docker 實作 Loki 日誌
再 container 把日誌輸出來不是很方便
所以我們是使用 docker 直接輸出日誌
可算非常方便
參考來源:
loki收集docker容器里运行服务的日志,loki+grafana_十个菜-CSDN博客
docker swarm结合loki搭建轻量级日志监控系统 - 琴弦上的尼古丁
安裝 docker loki driver
Docker driver | Grafana Labs
1
2
3
|
docker plugin install grafana/loki-docker-driver:latest --alias loki --grant-all-permissions
# 完成可用這個指令
docker plugin ls
|
相關升級、移除可以在官網看到
其他
Loki | 数据过期自动删除策略设计 - 华为云
比較有趣看到yaml 模板寫法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
version: "3.4"
x-logging:
&loki-logging
driver: loki
options:
loki-url: "http://YOUR_IP:3100/loki/api/v1/push"
max-size: "50m"
max-file: "10"
services:
host:
container_name: grafana
image: grafana/grafana
environment:
- TZ=Asia/Shanghai
- LANG=zh_CN.UTF-8
logging: *loki-logging
# ————————————————
# 版权声明:本文为CSDN博主「2018_like菜」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
# 原文链接:https://blog.csdn.net/u014756339/article/details/111992382
|
樹莓派安裝法
參考:docker plugin enable Loki gives an error · Issue #974 · grafana/loki · GitHub
- 嚐試安裝
1
|
docker plugin install grafana/loki-docker-driver:latest --alias loki --grant-all-permissions
|
- 看到錯誤
1
|
Error response from daemon: dial unix /run/docker/plugins/61d4906b35d0d106db69561446160ba63bddb5f9a30d765293ddc75d11a6935b/loki.sock: connect: no such file or directory
|
- git clone loki
1
|
git clone --depth=1 https://github.com/grafana/loki.git
|
- 在 loki 資料夾輸入
1
2
3
4
5
|
# 安裝 golang
sudo apt install golang
# 編譯
GOOS=linux GOARCH=arm GOARM=7 go build ./cmd/docker-driver
|
樹莓派 build 一直失敗,後來發想到 Golang 也是跨平台
所以我在x86主機編譯順利。
- 編譯檔案(docker-driver)複製到/var/lib/docker/plugins/<ALPHA_NUMERIC_FOLDER>/rootfs/bin
把編譯好的 docker-driver,
1
2
|
sudo ls /var/lib/docker/plugins/
# 有一個很長編碼資料夾就是
|
- 啟動 docker plugin
1
|
docker plugin enable loki
|
這邊之前啟動的 docker containr 要刪掉重新起新的 container 才會有用
全局設定
編輯daemon.json。linux下默認路徑是/etc/docker/daemon.json (需要sudo), windows則默認是%userprofile%.docker\daemon.json
1
2
3
4
5
6
7
8
9
|
{
"log-driver": "loki",
"log-opts": {
"loki-url": "http://YOUR_IP:3100/loki/api/v1/push",
"max-size": "50m",
"max-file": "10"
},
"registry-mirrors": ["https://registry.docker-cn.com"]
}
|
參考:loki收集docker容器裡運行服務的日誌,loki+grafana_十個菜-CSDN博客
各自設定
在 docker-compose 裡面加 logging
1
2
3
4
5
6
7
8
|
version: "3.7"
services:
logger:
image: grafana/grafana
logging:
driver: loki
options:
loki-url: "http://localhost:3100/loki/api/v1/push"
|
就可以完成
指令可以用
1
2
3
4
5
6
|
docker run --rm --name=grafana --log-driver=loki --log-opt loki-url="http://YOUR_IP:3100/loki/api/v1/push" --log-opt max-size=50m --log-opt max-file=10 grafana/grafana
# --log-driver=loki指定日志驱动器为loki
# --log-opt loki-url则指定了loki的url
# --log-opt max-size日志最大大小
# --log-opt max-file日志文件最大数量
|
參考:* loki收集docker容器里运行服务的日志,loki+grafana_十个菜-CSDN博客
使用 Loki 做 Traefik Acess Log 分析
loki 架好後,相關 docker log 設定完
Grafana 設定好 loki 資源
這邊記得把 traefik access log 改成 json
1
2
|
#traefik
- "--accesslog.format=json"
|
import 這個 dashboard Traefik Via Loki dashboard for Grafana | Grafana Labs
還要把 json 內容裡面 label 改掉
1
|
{job=\"/var/log/traefik.log\"}
|
換成(這邊換成你電腦相對位置)
1
|
{container_name=\"rpi-traefik_traefik_1\",host=\"PI202\"}
|
Traefik 2 监控系统之Grafana Prometheus Promtail Loki完美结合 - 简书
詳細也可以看這篇,也寫得很完整
也有看到非常強的 dashboard
Loki v2 Web Analytics Dashboard for NGINX dashboard for Grafana | Grafana Labs