バックエンドサービスを開発し、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
上り速度制限(バイト/秒)
$ tproxy -p 8088 -r localhost:8081 -t grpc -d 100ms
- localhostとポート8088でリッスン
- トラフィックを
localhost:8081
にリダイレクト - プロトコルタイプをgRPCに設定
- 各パケットの遅延時間を100msに設定
$ tproxy -p 3307 -r localhost:3306
$ tproxy -p 3307 -r remotehost:3306 -s -q
$ tproxy -p 3307 -r localhost:3306 -q -s
このプロジェクトが気に入ったり、使用している場合は、スターを付けてください。ありがとうございます!