sql-tap — リアルタイムSQLトラフィックビューア
概要
sql-tapは、アプリケーションとデータベース(PostgreSQL、MySQL)の間に差し込んで動作するプロキシデーモンと、キャプチャしたSQLを確認するためのTUIクライアントからなるツールです。全てのクエリをパケットレベルで取り込み、端末上でインタラクティブに表示・フィルタ・検索が行えます。トランザクション単位での追跡や、必要に応じてEXPLAINを実行して実行計画を確認することも可能で、アプリ側のコードを変更せずにリアルタイムな観測を実現します。デモGIFがREADMEにあり、HomebrewやGoでのインストール方法も用意されています。
リポジトリの統計情報
- スター数: 69
- フォーク数: 1
- ウォッチャー数: 69
- コミット数: 30
- ファイル数: 29
- メインの言語: Go
主な特徴
- アプリケーションコードを変更せずにSQLトラフィックをキャプチャして可視化
- PostgreSQLおよびMySQLをサポートするプロキシデーモン + TUIクライアント構成
- トランザクション追跡、クエリフィルタリング、EXPLAIN 実行機能
- Homebrewやgo installでの簡単なインストール手順を提供
技術的なポイント
sql-tapはGoで実装された軽量プロキシを使用して、クライアントとDBのセッションを中継しつつSQL文とそのメタ情報(接続、トランザクション境界、タイムスタンプなど)を抽出します。プロキシとしてTCPレベルで振る舞うため、アプリ側の接続文字列を書き換えるだけで導入でき、アプリケーションバイナリやライブラリを変更する必要がありません。クライアント側はTUIを採用しており、端末内でクエリ一覧のストリーミング表示、詳細ビュー、検索・フィルタリング、さらに選択したクエリに対してEXPLAINを実行して実行計画を確認できます。EXPLAIN実行はプロキシ経由でデータベースに接続し、実行計画の取得と表示を行う設計で、運用中の負荷やロック状態を観察しながら慎重に実行することを想定しています。Goらしいシンプルな依存関係の管理と並行処理(goroutine、channel)で多数の接続を効率的に扱い、ロギングや設定は軽量にまとめられています。また、goreleaserやgolangci-lint の設定ファイルが含まれており、CI/CDや静的解析を容易に組み込める点も運用上の利点です。TUI実装は端末での即時操作性を重視しており、デモGIFにあるようにインタラクティブなワークフローでクエリを掘り下げられます。
プロジェクトの構成
主要なファイルとディレクトリ:
- .dockerignore: file
- .github: dir
- .gitignore: file
- .golangci.yaml: file
- .goreleaser.yaml: file
…他 24 ファイル
まとめ
アプリ改修不要でSQLをリアルタイム監視できる、シンプルで実用的なTUIベースの観測ツールです(約50字)。
リポジトリ情報:
- 名前: sql-tap
- 説明: Watch SQL traffic in real-time with a TUI
- スター数: 69
- 言語: Go
- URL: https://github.com/mickamy/sql-tap
- オーナー: mickamy
- アバター: https://avatars.githubusercontent.com/u/11856337?v=4
READMEの抜粋:
sql-tap
Real-time SQL traffic viewer — proxy daemon + TUI client.
sql-tap sits between your application and your database (PostgreSQL or MySQL), capturing every query and displaying it in an interactive terminal UI. Inspect queries, view transactions, and run EXPLAIN — all without changing your application code.
demo
Installation
Homebrew
brew install --cask mickamy/tap/sql-tap
Go
go install github.com/mickamy/sql-tap@latest
go install...