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種) - "3s): 1 Max Response Time: 5.120 seconds 95th Percentile: 1.230 seconds Top Error URLs: 1. /admin.php (1 errors) 2. /page.php (1 errors) 3. /very/slow/page (1 errors) Recommendations: • 🔒 Consider blocking 2 suspicious IP(s) detected • ⚡ Investigate 1 slow requests (>3s response time) • ❗ High error rate detected (33.33%) - investigate error causes • 🛡️ Implement additional security measures (WAF, rate limiting) 📊 Full report available at: ./output/analysis_report_20250708_143022.md ### Markdownレポート 生成されるMarkdownレポートには以下の情報が含まれます: - **サマリー**: 分析期間(JST)、総リクエスト数、エラー率など - **HTTPエラー**: 4xx/5xxエラーの詳細、エラー頻発URL、ステータスコード別エラーURL Top(404/500/502/503/504) - **セキュリティ分析**: 攻撃検出結果、ブロック推奨IP(攻撃観点/エラー観点)、エラー率の高いIP、エラー連発IP(バースト検出) - **統計情報**: 時間別アクセス(JST)、時間別 4xx/5xx エラー(該当ログがある場合のみ表示)、上位IP、レスポンスタイム分析、遅いリクエスト URL Top - **ユーザーエージェント分析**: クローラー、攻撃ツール、不審なUA、エラー頻発ユーザーエージェント ## プロジェクト構造 kinsta-log-analyzer/ ├── cmd/log-analyzer/ # メインアプリケーション ├── pkg/ │ ├── analyzer/ # ログ分析エンジン │ ├── config/ # 設定管理 │ ├── parser/ # ログパーサー │ └── report/ # レポート生成 ├── logs/ # ログファイル ├── output/ # 分析結果出力 └── config.yaml # 設定ファイル ## 分析内容 ### HTTPエラー分析 - 4xxエラー(クライアントエラー)の検出と分類 - 5xxエラー(サーバーエラー)の検出と分類 - エラー率の計算と警告 - **ステータスコード別エラーURL Top**: 404 / 500 / 502 / 503 / 504 ごとに発生件数の多いURL上位を出力 ### セキュリティ分析 - **SQLインジェクション検出**: 27種類の攻撃パターン - UNION SELECT、OR 1=1、DROP TABLE、xp_cmdshell等 - **XSS攻撃検出**: 17種類の攻撃パターン - `