ASYNC LOG PROCESSOR / TUI

Rust Log Analyzer

大量のログをリアルタイムに集約・集計し、ターミナル上で対話的にフィルタリング・観察するための非同期ストリーム処理プロトタイプです。

  • Rust
  • Python
  • Polars
  • Redis
  • Ratatui
Rust Log AnalyzerのTUIでリアルタイムにログストリームを監視している画面
非同期ストリームから集計したログのTUI表示画面

BACKGROUND

マイクロサービスや分散システムから出力される大量のログを調査する際、クラウドの重いダッシュボードを開くまでのラグや、ローカルでの集計処理による端末のフリーズが課題でした。

APPROACH

非同期I/Oに強いRustでログの受信とUI描画を担当し、重いデータ集計処理はPolarsを活用したPythonプロセスへ分離。Redisをバッファとして挟むことで、高速かつ疎結合なパイプラインを構築しました。

HOW IT WORKS

  1. 01

    集める

    複数サービスからログをパイプラインへ注入

  2. 02

    仲介する

    Redisストリームでバッファリングと順序制御

  3. 03

    集計する

    Polarsにより秒単位のウィンドウ集計を実行

  4. 04

    描画する

    Ratatuiによりキーボード主体のTUIで可視化

ARCHITECTURE

Rust Log AnalyzerのVector、Redis、Pythonによる集計、Rust/RatatuiによるTUIの連携を示したアーキテクチャ図
横にスクロールして全体を確認できます

DESIGN DECISIONS

表示と分析を分ける

非同期UIはRust、データ集計はPolarsを使うPythonへ分け、それぞれ得意な処理を担当させています。

Redisで疎結合にする

送信元、集計、表示が互いの実装を直接知らず、同じログストリームへ参加できる構成にしました。

調査操作をキーボードへ寄せる

正規表現入力、j/k移動、OSC 52コピーをTUIへ入れ、ターミナルから離れずに調査できます。

VERIFICATION

  • Rust部分のビルドと起動用構成を確認
  • Pythonファイルの構文と2つのCompose設定を確認
  • サンプルアプリからVector、Redis、TUIまでの経路を用意
  • ログ表示・フィルタ・集計が分かる実演デモを公開

STATUS & NEXT

主要な経路が動く技術プロトタイプです。一般向けの配布物ではなく、リアルタイム処理の設計と操作感を確かめる段階として公開しています。

今後の予定

  • Redisの接続先を環境変数で切り替えられるようにする
  • フィルタとログ選択のテストを追加する
  • CI・ライセンス・一括起動の導線を整える