Skip to content

Latest commit

 

History

History
107 lines (76 loc) · 3.86 KB

readme-ja.md

File metadata and controls

107 lines (76 loc) · 3.86 KB

tproxy

English | 简体中文 | 日本語

Go Go Report Card Release License: MIT

Buy Me A Coffee

なぜこのツールを書いたのか

バックエンドサービスを開発し、go-zeroを書くとき、ネットワークトラフィックを監視する必要がよくあります。例えば:

  1. gRPC接続の監視、接続のタイミングと再接続のタイミング
  2. MySQL接続プールの監視、接続数とライフタイムポリシーの把握
  3. 任意のTCP接続のリアルタイム監視

インストール

$ go install github.com/kevwan/tproxy@latest

または、dockerイメージを使用します:

$ docker run --rm -it -p <listen-port>:<listen-port> -p <remote-port>:<remote-port> kevinwan/tproxy:v1 tproxy -l 0.0.0.0 -p <listen-port> -r host.docker.internal:<remote-port>

arm64の場合:

$ docker run --rm -it -p <listen-port>:<listen-port> -p <remote-port>:<remote-port> kevinwan/tproxy:v1-arm64 tproxy -l 0.0.0.0 -p <listen-port> -r host.docker.internal:<remote-port>

Windowsの場合、scoopを使用できます:

$ scoop install tproxy

使用方法

$ tproxy --help
Usage of tproxy:
  -d duration
    	パケットを中継する遅延時間
  -down int
    	下り速度制限(バイト/秒)
  -l string
    	リッスンするローカルアドレス(デフォルトは "localhost")
  -p int
    	リッスンするローカルポート、デフォルトはランダムポート
  -q	静音モード、接続の開閉と統計のみを表示、デフォルトはfalse
  -r string
    	接続するリモートアドレス(ホスト:ポート)
  -s	統計を有効にする
  -t string
    	プロトコルの種類、現在サポートされているのはhttp2、grpc、redis、mongodb
  -up int
    	上り速度制限(バイト/秒)

gRPC接続の監視

$ tproxy -p 8088 -r localhost:8081 -t grpc -d 100ms
  • localhostとポート8088でリッスン
  • トラフィックをlocalhost:8081にリダイレクト
  • プロトコルタイプをgRPCに設定
  • 各パケットの遅延時間を100msに設定

image

MySQL接続の監視

$ tproxy -p 3307 -r localhost:3306

image

接続の信頼性の確認(再送率とRTT)

$ tproxy -p 3307 -r remotehost:3306 -s -q

image

接続プールの動作を学ぶ

$ tproxy -p 3307 -r localhost:3306 -q -s

image

スターを付けてください! ⭐

このプロジェクトが気に入ったり、使用している場合は、スターを付けてください。ありがとうございます!