tatsumi403/kinsta-log-analyzer
GitHub: tatsumi403/kinsta-log-analyzer
Stars: 1 | Forks: 0
# Kinsta Access Log Analyzer
KinstaのNginxアクセスログを解析し、HTTPエラーの検知・分類、セキュリティ攻撃の検出、統計情報の生成を行うGo製の解析ツール。
## 特徴
- **包括的な分析**: HTTPエラー、セキュリティ攻撃、パフォーマンス、アクセスパターンを網羅的に分析
- **セキュリティ重視**: 27種類のSQLインジェクションと17種類のXSS攻撃パターンを検出
- **高速処理**: ストリーミング処理により大容量ログでもメモリ効率的に解析
- **柔軟な設定**: YAML設定ファイルで検出パターンや閾値をカスタマイズ可能
- **シンプルな実行**: Go環境のみで動作するローカル実行(依存ライブラリは最小限)
- **詳細なレポート**: Markdown形式の見やすいレポートと、実用的な推奨事項を提供
- **ログフォーマット互換**: Kinstaの旧形式(リクエスト全体が `"GET /path HTTP/1.1"` で囲まれる)と、Method/Protocol が unquoted で URI のみ quoted の新形式の両方をパース
- **JST表示**: レポートの生成日時・解析期間・時間別バケットを Asia/Tokyo (JST) で出力
- **エラー深掘り分析**: ステータスコード別エラーURL Top、エラー率の高いUA/IP、短時間エラーバースト検出、遅いリクエストURL Top を出力
## クイックスタート
### ローカル実行(Go環境が必要)
# 依存関係のダウンロード
go mod download
# アプリケーションのビルド
go build -o log-analyzer ./cmd/log-analyzer
# サンプルログの解析(config.yaml が自動的に読み込まれる)
./log-analyzer --input logs/sample-access.log --verbose
# 出力先を変更して実行(--config 省略時は config.yaml をデフォルトで使用)
./log-analyzer --input /path/to/access.log --output /custom/output
## 設定ファイル
`config.yaml` で解析パラメータをカスタマイズできます。`--config` を省略した場合、以下の順で `config.yaml` を自動検索します:
1. カレントディレクトリ
2. 実行ファイルと同じディレクトリ
3. `~/.config/kinsta-log-analyzer/config.yaml`(`go install` でどこからでも実行する場合はここに置く)
thresholds:
error_rate_warning: 5.0 # エラー率の警告閾値(%)
slow_request_time: 3.0 # 遅いリクエストの閾値(秒)
min_requests_for_error_rate: 50 # UA/IPエラー率算出時の最小総リクエスト数(ノイズ除外)
burst_window_seconds: 60 # エラーバースト検出のウィンドウ(秒)
burst_threshold: 20 # ウィンドウ内エラー数がこれを超えるとバースト
security:
sql_injection_patterns: # SQLインジェクション検出パターン(27種)
- "union select"
- "union all select"
- "or 1=1"
- "or '1'='1"
- "drop table"
- "insert into"
- "exec("
- "xp_cmdshell"
# ...他19種
xss_patterns: # XSS検出パターン(17種)
- "