BACKGROUND
マイクロサービスや分散システムから出力される大量のログを調査する際、クラウドの重いダッシュボードを開くまでのラグや、ローカルでの集計処理による端末のフリーズが課題でした。
APPROACH
非同期I/Oに強いRustでログの受信とUI描画を担当し、重いデータ集計処理はPolarsを活用したPythonプロセスへ分離。Redisをバッファとして挟むことで、高速かつ疎結合なパイプラインを構築しました。
HOW IT WORKS
- 01
集める
複数サービスからログをパイプラインへ注入
- 02
仲介する
Redisストリームでバッファリングと順序制御
- 03
集計する
Polarsにより秒単位のウィンドウ集計を実行
- 04
描画する
Ratatuiによりキーボード主体のTUIで可視化
ARCHITECTURE
DESIGN DECISIONS
表示と分析を分ける
非同期UIはRust、データ集計はPolarsを使うPythonへ分け、それぞれ得意な処理を担当させています。
Redisで疎結合にする
送信元、集計、表示が互いの実装を直接知らず、同じログストリームへ参加できる構成にしました。
調査操作をキーボードへ寄せる
正規表現入力、j/k移動、OSC 52コピーをTUIへ入れ、ターミナルから離れずに調査できます。
VERIFICATION
- Rust部分のビルドと起動用構成を確認
- Pythonファイルの構文と2つのCompose設定を確認
- サンプルアプリからVector、Redis、TUIまでの経路を用意
- ログ表示・フィルタ・集計が分かる実演デモを公開
STATUS & NEXT
主要な経路が動く技術プロトタイプです。一般向けの配布物ではなく、リアルタイム処理の設計と操作感を確かめる段階として公開しています。
今後の予定
- Redisの接続先を環境変数で切り替えられるようにする
- フィルタとログ選択のテストを追加する
- CI・ライセンス・一括起動の導線を整える
