Nginxアクセスログの解析

Combined Log Formatに従うNginxアクセスログを解析して、リクエスト詳細、ステータスコード、クライアント情報を抽出します。

Nginx

詳細な説明

Nginxアクセスログフォーマット

デフォルトでは、Nginxはアクセスログにcombinedというフォーマットを使用します。これはApache Combined Log Formatと同一で、解析目的では互換性があります。

デフォルトのNginxログフォーマット

nginx.confのデフォルトcombinedフォーマット:

log_format combined '$remote_addr - $remote_user [$time_local] '
                    '"$request" $status $body_bytes_sent '
                    '"$http_referer" "$http_user_agent"';

ログ行の例

10.0.0.1 - - [15/Jan/2024:10:30:00 +0000] "GET /index.html HTTP/1.1" 200 612 "-" "Mozilla/5.0"
10.0.0.2 - admin [15/Jan/2024:10:30:01 +0000] "POST /api/login HTTP/1.1" 403 89 "https://example.com/login" "curl/8.1.2"
10.0.0.3 - - [15/Jan/2024:10:30:02 +0000] "GET /missing-page HTTP/1.1" 404 162 "-" "Googlebot/2.1"

カスタムNginxログフォーマット

多くのチームは追加変数を含めるようNginxログフォーマットをカスタマイズします。追加の$request_time$upstream_response_timeフィールドはパフォーマンス監視に有用です。

ボットトラフィックの識別

Nginxアクセスログ解析の実用的な用途の一つはボットトラフィックの識別です。ユーザーエージェントフィールドを調べることで、クローラー(Googlebotbingbot)、監視ツール(UptimeRobot)、潜在的なスクレイピングボットをフィルタリングできます。

ユースケース

Webアプリケーションのトラフィックパターンとレスポンスコードの監視、ボットトラフィックと人間の訪問者の識別、リクエストレートと帯域幅使用量の分析、4xxおよび5xxエラーのデバッグ、リクエストタイミングフィールドによるパフォーマンス追跡。

試してみる — Log Format Parser

フルツールを開く