このプロジェクトについて

ngtop は Go ベースの CLI ユーティリティで、nginx アクセスログを分析します。ログエントリを SQLite データベースにパースし、フィルタリングされたクエリでリクエスト統計を取得できます。 インストール リリースからプリビルドバイナリをダウンロードするか、Go でインストールします: `go install github.com/facundoolano/ngtop@latest`。 動作の仕組み 各実行時に、ngtop は nginx アクセスログ(デフォルトでは `/var/log/nginx/access.log*`)を検出し、combined ログフォーマットでパースし、パース済みエントリを SQLite データベース(デフォルトでは `./ngtop.db`)に保存します。以降の実行では、まだ保存されていない新しいログエントリのみを処理します。 クエリ機能 次の複数の次元でフィルタリングと集計がサポートされます。 - パス: パターンマッチング(例: `/blog/%`)を使った最もリクエストされた URL - ユーザーエージェント: ブラウザ、OS、デバイス、ボット検出別にグループ化 - IP: 最もリクエストされた IP、または IP あたりのトップ URL - リファラー: 特定の URL パターンに対するトップリファラー - ステータスコード: HTTP ステータスごとのレスポンス数(例: `4%`, `5%` のようなパターンマッチングも含む) - 時間範囲: `--since`/`-s` で最後の秒、分、時間、日、週、月に制限し、オプションで `--until`/`-u` でウィンドウを指定可能 - フィルタ: `--where`/`-w` で複数条件を組み合わせ、`=`, `!=`, `LIKE` などの演算子を使用 設定 環境変数で動作を制御します。 - `NGTOP_LOGS_PATH`: ログファイルの場所を指定する glob パターン - `NGTOP_LOG_FORMAT`: カスタム nginx ログフォーマット文字列 - `NGTOP_DB`: SQLite データベースのパス - `NGTOP_DEBUG`: 内部ログを有効にする これにより、フルスタックのログ集約が実用的でない nginx デプロイにおいて、ngtop は軽量でオーバーヘッドの低い分析レイヤーとなります。