/clash-exporter

A prometheus exporter for clash

Primary LanguageGoMIT LicenseMIT

Clash Exporter

This is an exporter for Clash, for used by the Prometheus to monitor clash network traffic.

Usage

run in command

Go to https://github.com/zxh326/clash-exporter/releases download latest release binary file

➜  ./clash-exporter -h
Usage of ./clash-exporter:
  -collectDest
        enable collector dest
        Warning: if collector destination enabled, will generate a large number of metrics, which may put a lot of pressure on Prometheus. (default true)
  -collectTracing
        enable collector tracing.
        It must be the Clash premium version, and the profile.tracing must be enabled in the Clash configuration file. (default false)
  -port int
        port to listen on (default 2112)

deploy with docker compose

git clone https://github.com/zxh326/clash-exporter

# check docker-compose.yml and update environment
cat docker-compose.yml
docker compose up -d

tips: grafana default username / password is admin/admin

Prometheus Example Config

- job_name: "clash"
  metrics_path: /metrics
  scrape_interval: 1s
  static_configs:
    - targets: ["127.0.0.1:2112"]

Record Rule Config

groups:
  - name: discard_destination
    rules:
      - record: source_policy_type:clash_network_traffic_bytes_total:sum
        expr: sum without (destination, job) (clash_network_traffic_bytes_total)

Grafana Example Dashboard

  • You can import clash-dashboard.json to obtain the example effect, or you can create one yourself based on the following metrics introduction.

  • or Import via grafana.com with id 18530

Metrics

Metric name Metric type Labels
clash_info Gauge version, premium
clash_download_bytes_total Gauge
clash_upload_bytes_total Gauge
clash_active_connections Gauge
clash_network_traffic_bytes_total Counter source,destination(if enabled),policy,type(download,upload)
clash_tracing_rule_match_duration_milliseconds Histogram
clash_tracing_dns_request_duration_milliseconds Histogram type(dnsType)
clash_tracing_proxy_dial_duration_milliseconds Histogram policy

FAQ

  • tracing metrics is empty

    • Required clash premium version
    • Follow clash profile docs enable profile tracing
    • Add -collectTracing=true flag in clash-exporter start script
  • high Prometheus Memory

    This may be caused by the default enable of collector destination traffic, which can generate a large number of metrics. Try use -collectDest=false disable it.

TODO

  • dns query metrics
  • proxy dial metrics