mirror of
https://github.com/kevwan/tproxy.git
synced 2026-05-23 07:40:35 +00:00
3.9 KiB
3.9 KiB
tproxy
なぜこのツールを書いたのか
バックエンドサービスを開発し、go-zeroを書くとき、ネットワークトラフィックを監視する必要がよくあります。例えば:
- gRPC接続の監視、接続のタイミングと再接続のタイミング
- MySQL接続プールの監視、接続数とライフタイムポリシーの把握
- 任意の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に設定
MySQL接続の監視
$ tproxy -p 3307 -r localhost:3306
接続の信頼性の確認(再送率とRTT)
$ tproxy -p 3307 -r remotehost:3306 -s -q
接続プールの動作を学ぶ
$ tproxy -p 3307 -r localhost:3306 -q -s
スターを付けてください! ⭐
このプロジェクトが気に入ったり、使用している場合は、スターを付けてください。ありがとうございます!
