ELB(ALB)のアクセスログ設定

7月 17, 2019AWS,ELB

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 文字列。
  • その他のフィールドの説明については、下記ドキュメントを参照ください。

AWS,ELB

Posted by takaaki