Network Load Balancer のアクセスログ - Elastic Load Balancing

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Network Load Balancer のアクセスログ

Elastic Load Balancing は、Network Load Balancer で確立された TLS 接続に関する詳細情報をキャプチャするアクセスログを提供します。これらのアクセスログを使用して、トラフィックパターンを分析し、問題のトラブルシューティングを行えます。

重要

アクセスログは、Network Load Balancer に TLS リスナーがあり、TLS 接続のみに関する情報が含まれている場合にのみ作成されます。

アクセスログの作成は、Elastic Load Balancing のオプション機能であり、デフォルトでは無効化されています。ロードバランサーのアクセスログの作成を有効にすると、Elastic Load Balancing はログを圧縮ファイルとしてキャプチャし、指定した Amazon S3 バケット内に保存します。アクセスログの作成はいつでも無効にできます。

Amazon S3 が管理する暗号化キー (SSE-S3) によって、または S3 バケットのカスタマーマネージドキーを使用する Key Management Service (SSE-KMS CMK) を使用して、サーバー側の暗号化を有効にできます。各アクセスログファイルは S3 バケットに保存される前に自動的に暗号化され、アクセス時に復号化されます。暗号化あるいは復号化されたログファイルにアクセスする方法に違いがないため、特別なアクションを実行する必要はありません。各ログファイルは一意のキーで暗号化され、それ自体は定期的にローテーションされる KMS キーで暗号化されます。詳細については、Amazon S3 ユーザーガイド」の「Amazon S3 暗号化 (SSE-S3) の指定」および AWS KMS 「 (SSE-KMS) によるサーバー側の暗号化の指定」を参照してください。 Amazon S3

アクセスログに対する追加料金はありません。Amazon S3 のストレージコストは発生しますが、Amazon S3 にログファイルを送信するために Elastic Load Balancing が使用する帯域については料金は発生しません。ストレージコストの詳細については、Amazon S3 の料金を参照してください。

アクセスログファイル

Elastic Load Balancing は各ロードバランサーノードのログファイルを 5 分ごとに発行します。ログ配信には結果整合性があります。ロードバランサーでは、同じ期間について複数のログが発行されることがあります。これは通常、サイトに高トラフィックがある場合に発生します。

アクセスログのファイル名には次の形式を使用します。

bucket[/prefix]/AWSLogs/aws-account-id/elasticloadbalancing/region/yyyy/mm/dd/aws-account-id_elasticloadbalancing_region_net.load-balancer-id_end-time_random-string.log.gz
bucket (バケット)

S3 バケットの名前。

prefix

バケットのプレフィックス (論理階層)。プレフィックスを指定しない場合、ログはバケットのルートレベルに配置されます。

aws-account-id

所有者の AWS アカウント ID。

region

ロードバランサーおよび S3 バケットのリージョン。

yyyy/mm/dd

ログが配信された日付。

load-balancer-id

ロードバランサーのリソース ID。リソース ID にスラッシュ (/) が含まれている場合、ピリオド (.) に置換されます。

end-time

ログ作成の間隔が終了した日時。たとえば、終了時間 20181220T2340Z には、23:35~23:40 に行われたリクエストのエントリが含まれます。

random-string

システムによって生成されたランダム文字列。

ログファイル名の例は次のようになります。

s3://my-bucket/prefix/AWSLogs/123456789012/elasticloadbalancing/us-east-2/2020/05/01/123456789012_elasticloadbalancing_us-east-2_net.my-loadbalancer.1234567890abcdef_20200501T0000Z_20sg8hgm.log.gz

必要な場合はログファイルを自身のバケットに保管できますが、ログファイルを自動的にアーカイブまたは削除するにように Amazon S3 ライフサイクルルールを定義することもできます。詳細については、Amazon S3 ユーザーガイドの「ストレージのライフサイクルの管理」を参照してください。

アクセスログのエントリ

次の表は、アクセスログのエントリのフィールドを順に示しています。すべてのフィールドはスペースで区切られています。新しいフィールドが導入されると、ログエントリの最後に追加されます。ログファイルの処理中に、予期していなかったログエントリの最後のフィールドは無視する必要があります。

フィールド 説明

type

リスナーの種類。サポートされる値は tls です。

バージョン

ログエントリのバージョン。現在のバージョンは 2.0 です。

time

TLS 接続の最後に記録された時間 (ISO 8601 形式)。

elb

ロードバランサーのリソース ID。

リスナー

接続の TLS リスナーのリソース ID。

client:port

クライアントの IP アドレスとポート。

destination:port

送信先の IP アドレスとポート。クライアントがロードバランサーに直接接続する場合、送信先はリスナーです。クライアントが VPC エンドポイントサービスを介して接続する場合、送信先は VPC エンドポイントです。

connection_time

接続が完了するまでの合計時間 (開始から終了まで) (ミリ秒単位)。

tls_handshake_time

TCP 接続が確立された後に TLS ハンドシェイクが完了するまでの合計時間 (クライアント側の遅延時間を含む) (ミリ秒単位)。この時間は connection_time フィールドに含まれています。

received_bytes

クライアントからロードバランサーによって受信されたバイト数 (復号後)。

sent_bytes

ロードバランサーからクライアントに送信されたバイト数 (復号前)。

incoming_tls_alert

クライアントからロードバランサーによって受信された TLS アラートの整数値 (存在する場合)。それ以外の場合、この値は - に設定されます。

chosen_cert_arn

クライアントに提供された証明書の ARN。有効なクライアント hello メッセージが送信されない場合、この値は - に設定されます。

chosen_cert_serial

将来の利用のために予約されています。この値は常に - に設定されます。

tls_cipher

クライアントとネゴシエートされた暗号スイート (OpenSSL 形式)。TLS ネゴシエーションが完了しない場合、この値は - に設定されます。

tls_protocol_version

クライアントとネゴシエートされた TLS プロトコル (文字列形式)。指定できる値は、tlsv10tlsv11tlsv12tlsv13 です。TLS ネゴシエーションが完了しない場合、この値は - に設定されます。

tls_named_group

将来の利用のために予約されています。この値は常に - に設定されます。

domain_name

クライアント hello メッセージの server_name 拡張機能の値。この値は URL でエンコードされます。有効なクライアント hello メッセージが送信されない場合、または拡張機能が存在しない場合、この値は - に設定されます。

alpn_fe_protocol

クライアントとネゴシエートされたアプリケーションプロトコル (文字列形式)。指定できる値は、h2http/1.1、および http/1.0 です。TLS リスナーで ALPN ポリシーが設定されていない場合、一致するプロトコルが見つからない場合、または有効なプロトコルリストが送信されない場合、この値は - に設定されます。

alpn_be_protocol

ターゲットとネゴシエートされたアプリケーションプロトコル (文字列形式)。指定できる値は、h2http/1.1、および http/1.0 です。TLS リスナーで ALPN ポリシーが設定されていない場合、一致するプロトコルが見つからない場合、または有効なプロトコルリストが送信されない場合、この値は - に設定されます。

alpn_client_preference_list

クライアントの hello メッセージ内の application_layer_protocol_negotiation 拡張機能の値。この値は URL でエンコードされます。各プロトコルは二重引用符で囲まれ、プロトコルはカンマで区切られます。TLS リスナーで ALPN ポリシーが設定されていない場合、有効なクライアント hello メッセージが送信されない場合、または内線番号が存在しない場合、この値は - に設定されます。文字列は、256 バイトを超える場合は切り捨てられます。

tls_connection_creation_time

TLS 接続の最初に記録された時間 (ISO 8601 形式)。

ログエントリの例

以下にログエントリの例を示します。読みやすくするためだけの目的で、テキストは複数の行に表示されています。

次に、ALPN ポリシーを使用しない TLS リスナーの例を示します。

tls 2.0 2018-12-20T02:59:40 net/my-network-loadbalancer/c6e77e28c25b2234 g3d4b5e8bb8464cd 72.21.218.154:51341 172.100.100.185:443 5 2 98 246 - arn:aws:acm:us-east-2:671290407336:certificate/2a108f19-aded-46b0-8493-c63eb1ef4a99 - ECDHE-RSA-AES128-SHA tlsv12 - my-network-loadbalancer-c6e77e28c25b2234.elb.us-east-2.amazonaws.com - - - 2018-12-20T02:59:30

次に、ALPN ポリシーを使用する TLS リスナーの例を示します。

tls 2.0 2020-04-01T08:51:42 net/my-network-loadbalancer/c6e77e28c25b2234 g3d4b5e8bb8464cd 72.21.218.154:51341 172.100.100.185:443 5 2 98 246 - arn:aws:acm:us-east-2:671290407336:certificate/2a108f19-aded-46b0-8493-c63eb1ef4a99 - ECDHE-RSA-AES128-SHA tlsv12 - my-network-loadbalancer-c6e77e28c25b2234.elb.us-east-2.amazonaws.com h2 h2 "h2","http/1.1" 2020-04-01T08:51:20

バケットの要件

アクセスログの作成を有効にするときは、アクセスログの S3 バケットを指定する必要があります。バケットは、ロードバランサーを所有するアカウントとは別のアカウントが所有するものでもかまいません。バケットは、次の要件を満たしている必要があります。

要件
  • バケットは、ロードバランサーと同じリージョンに配置されている必要があります。

  • 指定するプレフィックスに AWSLogs を含めることはできません。指定したバケット名とプレフィックスの後に、AWSLogs で始まるファイル名部分が追加されます。

  • このバケットは、バケットにアクセスログを書き込む許可を付与するバケットポリシーが必要です。バケットポリシーは、バケットのアクセス許可を定義するためにアクセスポリシー言語で記述された JSON ステートメントのコレクションです。ポリシーの例を次に示します。

    { "Version": "2012-10-17", "Id": "AWSLogDeliveryWrite", "Statement": [ { "Sid": "AWSLogDeliveryAclCheck", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::my-bucket", "Condition": { "StringEquals": { "aws:SourceAccount": ["012345678912"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1:012345678912:*"] } } }, { "Sid": "AWSLogDeliveryWrite", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::my-bucket/AWSLogs/account-ID/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": ["012345678912"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1:012345678912:*"] } } } ] }

前のポリシーでは、aws:SourceAccount にはこのバケットにログが配信されるアカウント番号のリストを指定します。aws:SourceArn には、ログを生成するリソースの ARN のリストを arn:aws:logs:source-region:source-account-id:* の形式で指定します。

暗号化

Amazon S3 アクセスログバケットのサーバー側の暗号化は、次のいずれかの方法で有効にできます。

  • Amazon S3 が管理するキー (SSE-S3)

  • AWS KMS AWS Key Management Service (SSE-KMS) に保存されている キー †

† Network Load Balancer アクセスログでは、 AWS マネージドキーを使用することはできません。カスタマーマネージドキーを使用する必要があります。

詳細については、Amazon S3 ユーザーガイド」の「Amazon S3 暗号化 (SSE-S3) の指定」および AWS KMS 「 (SSE-KMS) によるサーバー側の暗号化の指定」を参照してください。 Amazon S3

キーポリシーで、ログの暗号化および復号化する許可をサービスに与える必要があります。ポリシーの例を次に示します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" } ] }

アクセスログの作成の有効化

ロードバランサーのアクセスログの作成を有効にする場合は、ロードバランサーがログを保存する S3 バケットを指定する必要があります。このバケットを所有していること、およびこのバケットに必要なバケットポリシーを設定したことを確認します。詳細については、「バケットの要件」を参照してください。

コンソールを使用してアクセスログの作成を有効にするには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[ロードバランサー] を選択します。

  3. ロードバランサーの名前を選択して、その詳細ページを開きます。

  4. [属性] タブで、[編集] を選択します。

  5. [Edit load balancer attributes] ページで、以下を実行します。

    1. [モニタリング] で [アクセスログ] をオンにします。

    2. [S3 をブラウズ] を選択し、使用するバケットを選択します。または、プレフィックスを含めて S3 バケットの場所を入力します。

    3. [変更の保存] をクリックします。

を使用してアクセスログ記録を有効にするには AWS CLI

modify-load-balancer-attributes コマンドを使用します。

アクセスログの作成の無効化

ロードバランサーのアクセスログの作成は、いつでも無効にできます。アクセスログの作成を無効にした後は、削除するまでアクセスログは S3; バケットに残されたままです。詳細については、Amazon Simple Storage Service ユーザーガイドバケットの使用について参照してください。

コンソールを使用してアクセスログの作成を無効にするには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[ロードバランサー] を選択します。

  3. ロードバランサーの名前を選択して、その詳細ページを開きます。

  4. [属性] タブで、[編集] を選択します。

  5. [モニタリング][アクセスログ] をオフにします。

  6. [変更の保存] をクリックします。

を使用してアクセスログ記録を無効にするには AWS CLI

modify-load-balancer-attributes コマンドを使用します。

アクセスログファイルの処理

アクセスログファイルは圧縮されます。Amazon S3 コンソールを使用してファイルを開くと、ファイルは解凍され、情報が表示されます。ファイルをダウンロードする場合、情報を表示するには解凍する必要があります。

ウェブサイトの需要が大きい場合は、ロードバランサーによって数 GB のデータ量のログファイルが生成されることがあります。処理を使用して、このような大量のデータを line-by-line 処理できない場合があります。このため、場合によっては、並列処理ソリューションを提供する分析ツールを使用する必要があります。例えば、次の分析ツールを使用するとアクセスログの分析と処理を行うことができます。

  • Amazon Athena はインタラクティブなクエリサービスで、Amazon S3 内のデータを標準 SQL を使用して簡単に分析できるようになります。詳細については、Amazon Athena ユーザーガイドNetwork Load Balancer ログのクエリを参照してください。

  • Loggly

  • Splunk

  • Sumo Logic