ELB(ALB)のアクセスログ設定
ELB(ALB)のアクセスログ設定方法
概要
- 今回は、ロードバランサー(ALB: Application Load Balancer)にアクセスログを設定する方法を紹介します。
- 以下、AWSドキュメント Elastic Load Balancingからの引用です。ポイントはデフォルトは無効であることです。
Elastic Load Balancing は、ロードバランサーに送信されるリクエストについて、詳細情報を収集するアクセスログを提供します。各ログには、リクエストを受け取った時刻、クライアントの IP アドレス、レイテンシー、リクエストのパス、サーバーレスポンスなどの情報が含まれます。これらのアクセスログを使用して、トラフィックパターンの分析や、問題のトラブルシューティングを行うことができます。
アクセスログの作成は、Elastic Load Balancing のオプション機能であり、デフォルトでは無効化されています。ロードバランサーのアクセスログの作成を有効にすると、Elastic Load Balancing はログをキャプチャし、圧縮ファイルとして指定した Amazon S3 バケット内に保存します。アクセスログの作成はいつでも無効にできます。
アクセスログ設定方法
S3バケットポリシー設定
- アクセスログの出力先となるS3バケットにバケットポリシーを設定します。
- Principalには、東京リージョン(ap-northeast-1)を指すElastic Load Balancing アカウント ID(582318560864)を記載します。
- 対象となるALBとアクセスログの出力となるS3バケットは、異なるアカウントでも問題ありません(S3のクロスアカウント設定は必要)。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AlbWriteAccess",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::582318560864:root"
},
"Action": "s3:PutObject",
"Resource": [
"arn:aws:s3:::s3-bucket-name/alb_logs/*"
]
}
]
}
各リージョンのアカウントID
出典:Elastic Load Balancingドキュメント
リージョン | リージョン名 | Elastic Load Balancing アカウント ID |
---|---|---|
us-east-1 |
米国東部(バージニア北部) | 127311923021 |
eu-central-1 |
欧州 (フランクフルト) | 054676820928 |
ap-northeast-1 |
アジアパシフィック (東京) | 582318560864 |
ap-southeast-2 |
アジアパシフィック (シドニー) | 783225319266 |
ap-south-1 |
アジアパシフィック (ムンバイ) | 718504428378 |
cn-north-1 * |
中国 (北京) | 638102146993 |
アクセスログ作成の有効化
- EC2のロードバランサーより、対象のALBを選択します。
- ロードバランサー属性の編集(Edit attributes)より、「アクセスログの有効化(Enable access logs)」をチェックします。
- 「S3の場所(S3 location)」にS3バケットの名前をプレフィックスを含めて入力します。
- 保存ボタンを押し、S3バケットにログが記録されていることを確認します。
アクセスログのエントリ
- アクセスログのよく見るエントリは、下記の通り。
- 2フィールド目: ロードバランサーがクライアントに対してレスポンスを生成した時刻。
- 3フィールド目: ロードバランサーのリソース ID。
- 4フィールド目: リクエストを送信したクライアントの IP アドレスとポート。
- 5フィールド目: このリクエストを処理したターゲットの IP アドレスとポート。
- クライアントがリクエスト全体を送信しなかった場合、ロードバランサーはターゲットにリクエストをディスパッチできず、この値が – に設定されます。ターゲットが Lambda 関数の場合、この値は – に設定されます。
- 9フィールド目: ロードバランサーからの応答のステータスコード。
- 10フィールド目: ターゲットから応答のステータスコード。
- この値は、ターゲットへの接続が確立され、ターゲットが応答を送信した場合のみ記録されます。それ以外の場合は、- に設定されます。
- 13フィールド目: クライアントからのリクエスト。
- 次の形式を使用してログに記録されます。"HTTP メソッド + プロトコル://ホスト:ポート/uri + HTTP バージョン"。
- 14フィールド目: リクエスト元のクライアントを特定する User-Agent 文字列。
- その他のフィールドの説明については、下記ドキュメントを参照ください。