本文教你一步步配置clash tracing,也讲了关于 clash tracing里的各个模块的作用:grafana/vector/loki/websocat。
TABLE OF CONTENT
D大clash-tracing项目提供可视化的dashboard,但如何使用介绍的比较少,本文做下折腾记录:
- 如果docker已经成功运行,可直接跳转到6. 设置grafana进行配置。
- 如果想自定义websocat服务,可直接跳转到4.修改traffic_scraper进行配置
1. 必备条件
- 保证clash core为premium版本,因为只有premium版本才提供/profile/tracing的api,具体可访问「http://clash_host:9090/ui/」查看左下角的版本;
- clash的config.yaml增加如下代码,打开/profile/tracing的API接口,再重启clash
profile:
# open tracing exporter API
tracing: true
2. 文件准备
- clone原始项目到「项目目录」中;
- 修改loki目录权限,否则启动loki container的时候会报错。如果报错信息提示无法创建某个目录,则手工在.loki/data/下面创建出错的目录,例如:.loki/data/wal、.loki/data/chunks,这里坑很大,jeager在这里卡了很久;
$ chown -R 10001:10001 ./loki/data
3. 修改docker-compose.yml文件
介绍文件之前,先简单说一下这些service的功能,如下图:
- 改动点:grafana service中增加配置,防止创建容器时权限报错。文件大部分与原始文件相同,只是在line 10,增加「user: “0”」。
version: '3'
services:
loki:
image: grafana/loki:2.5.0
container_name: loki
volumes:
- ./loki/data:/loki
- ./loki/config.yaml:/etc/loki/local-config.yaml
grafana:
image: grafana/grafana-oss:latest
user: "0" # root权限运行,否则grafana启动会报错
volumes:
- ./grafana:/var/lib/grafana
ports:
- "3000:3000"
container_name: grafana
vector:
image: timberio/vector:0.X-alpine
volumes:
- ./vector/vector.toml:/etc/vector/vector.toml
container_name: vector
depends_on:
- loki
traffic_scraper:
image: vi0oss/websocat:0.10.0
container_name: traffic_scraper
command: -v --autoreconnect-delay-millis 15000 autoreconnect:ws://$CLASH_HOST/traffic?token=$CLASH_TOKEN autoreconnect:tcp:vector:9000
depends_on:
- vector
tracing_scraper:
image: vi0oss/websocat:0.10.0
container_name: tracing_scraper
command: -v --autoreconnect-delay-millis 15000 autoreconnect:ws://$CLASH_HOST/profile/tracing?token=$CLASH_TOKEN autoreconnect:tcp:vector:9000
depends_on:
- vector
4. 修改traffic_scraper【可选配置】
注意:本模块为可选配置:
原始docker-compose配置中,启动了两个traffic_scraper service,比较冗余;如果我们部署了多个clash应用,需要同时监听多个clash core的api上报,按照现有的配置模式得增加多个tracing_scraper。
jeager在这里教大家一个新的方法:
1. 修改docker-compose.yml文件
- 改动点:删除docker-compose.yml文件中的两个traffic_scraper service,合并成一个websocat。
BEFORE
traffic_scraper:
image: vi0oss/websocat:0.10.0
container_name: traffic_scraper
command: -v --autoreconnect-delay-millis 15000 autoreconnect:ws://$CLASH_HOST/traffic?token=$CLASH_TOKEN autoreconnect:tcp:vector:9000
depends_on:
- vector
tracing_scraper:
image: vi0oss/websocat:0.10.0
container_name: tracing_scraper
command: -v --autoreconnect-delay-millis 15000 autoreconnect:ws://$CLASH_HOST/profile/tracing?token=$CLASH_TOKEN autoreconnect:tcp:vector:9000
depends_on:
- vector
AFTER
websocat:
image: vi0oss/websocat:0.10.0
container_name: websocat
volumes:
- ./websocat:/home
entrypoint:
- "/home/run.sh"
command:
- ""
depends_on:
- vector
注意:
- 挂载了一个本地./websocat的目录到容器的/home目录下
- 将websocat service的command置空,并且容器的entrypoint改为"/home/run.sh"
下面一节将介绍如何配置./websocat/run.sh
修改后的拓扑图
2. 文件准备
- 「项目目录」下新建websocat文件夹,并新建run.sh文件。./websocat/run.sh的内容如下:
#!/bin/sh
/usr/local/bin/websocat -v --autoreconnect-delay-millis 15000 autoreconnect:ws://$CLASH_HOST/traffic?token=$CLASH_TOKEN autoreconnect:tcp:vector:9000 &
/usr/local/bin/websocat -v --autoreconnect-delay-millis 15000 autoreconnect:ws://$CLASH_HOST/profile/tracing?token=$CLASH_TOKEN autoreconnect:tcp:vector:9000
注意:$CLASH_HOST需要替换成自己clash的controller服务地址,例如:192.168.3.1:9090,$CLASH_TOKEN需要替换成api的密钥(跟~/.config/clash/config.xml中保持一致)
- 修改文件为可执行
$ sudo chmod +x run.sh
5. 运行docker
docker compose up
- 查看容器是否都正常启动
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
69bfb1d64e30 vi0oss/websocat:0.10.0 "/home/run.sh " 18 hours ago Up 18 hours websocat
2796dc6bac73 timberio/vector:0.X-alpine "/usr/local/bin/vect…" 18 hours ago Up 18 hours vector
27610fd5c6f4 grafana/loki:2.5.0 "/usr/bin/loki -conf…" 18 hours ago Up 18 hours 3100/tcp loki
fa4e52592a95 grafana/grafana-oss:latest "/run.sh" 18 hours ago Up 18 hours 0.0.0.0:3000->3000/tcp grafana
- 查看是否启动正常,但有异常日志:排错小技巧,如下代码检查container日志是否包含error关键词
$ docker logs 69bfb1d64e30 2&1 | grep -i error
6. 设置grafana
如果一切运行正常,则可以通过http://主机ip:3000,访问grafana后台,默认账号密码均为admin
import dashboard
- + => import,将panels/dashboard.json和panels/logs.json分别导入
设置loki数据源
- configuration => datasource
- 搜索loki数据源
- 修改URL为http://loki:3100
查看dashboard
- 在四方格=>Browse里面查看导入的dashboard,点击其中的Clash为图形化大盘,Logs为原始采集日志
7. 未完待续
如何自定义Clash图形化大盘?











0 Comments