How to set up clash tracing? | Step-by-step

本文教你一步步配置clash tracing,也讲了关于 clash tracing里的各个模块的作用:grafana/vector/loki/websocat。

setup clash tracing

TABLE OF CONTENT


D大clash-tracing项目提供可视化的dashboard,但如何使用介绍的比较少,本文做下折腾记录:

  1. 如果docker已经成功运行,可直接跳转到6. 设置grafana进行配置。
  2. 如果想自定义websocat服务,可直接跳转到4.修改traffic_scraper进行配置

1. 必备条件

  1. 保证clash core为premium版本,因为只有premium版本才提供/profile/tracing的api,具体可访问「http://clash_host:9090/ui/」查看左下角的版本;
  1. clash的config.yaml增加如下代码,打开/profile/tracing的API接口,再重启clash
profile:
  # open tracing exporter API
  tracing: true

2. 文件准备

  1. clone原始项目到「项目目录」中;
  2. 修改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

注意:

  1. 挂载了一个本地./websocat的目录到容器的/home目录下
  2. 将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图形化大盘?

Post a Comment

0 Comments