このプロジェクトについて
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 は軽量でオーバーヘッドの低い分析レイヤーとなります。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.