翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Network Load Balancer のアクセスログ
Elastic Load Balancing は、Network Load Balancer で確立されたTLS接続に関する詳細情報をキャプチャするアクセスログを提供します。これらのアクセスログを使用して、トラフィックパターンを分析し、問題のトラブルシューティングを行えます。
重要
アクセスログは、ロードバランサーにTLSリスナーがあり、ログにTLSリクエストに関する情報のみが含まれている場合にのみ作成されます。アクセスログは、ベストエフォートベースでリクエストを記録します。アクセスログは、すべてのリクエストを完全に報告するためのものではなく、リクエストの本質を把握するものとして使用することをお勧めします。
アクセスログの作成は、Elastic Load Balancing のオプション機能であり、デフォルトでは無効化されています。ロードバランサーのアクセスログの作成を有効にすると、Elastic Load Balancing はログを圧縮ファイルとしてキャプチャし、指定した Amazon S3 バケット内に保存します。アクセスログの作成はいつでも無効にできます。
Amazon S3-managedされた暗号化キー (SSE-S3)、または S3 S3バケットのカスタマーマネージドキー (SSE-KMSCMK) で Key Management Service を使用して、サーバー側の暗号化を有効にできます。各アクセスログファイルは 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 |
リスナーの種類。サポートされる値は |
バージョン |
ログエントリのバージョン。現在のバージョンは 2.0 です。 |
時系 |
TLS 接続の最後に記録された 8601 ISO 形式の時刻。 |
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 |
クライアントとネゴシエートされた暗号スイートは、オープンSSL形式でネゴシエートされます。TLS ネゴシエーションが完了しない場合、この値は - に設定されます。 |
tls_protocol_version |
クライアントとネゴシエートされたTLSプロトコルは、文字列形式でネゴシエートされます。指定できる値は、 |
tls_named_group |
将来の利用のために予約されています。この値は常に - に設定されます。 |
domain_name |
クライアント hello メッセージの server_name 拡張機能の値。この値は URLでエンコードされます。有効なクライアント hello メッセージが送信されない場合、または拡張機能が存在しない場合、この値は - に設定されます。 |
alpn_fe_protocol |
クライアントとネゴシエートされたアプリケーションプロトコル (文字列形式)。指定できる値は、 |
alpn_be_protocol |
ターゲットとネゴシエートされたアプリケーションプロトコル (文字列形式)。指定できる値は、 |
alpn_client_preference_list |
クライアントの hello メッセージ内の application_layer_protocol_negotiation 拡張機能の値。この値は URLでエンコードされます。各プロトコルは二重引用符で囲まれ、プロトコルはカンマで区切られます。TLS リスナーにALPNポリシーが設定されていない場合、有効なクライアント hello メッセージが送信されない場合、または拡張機能が存在しない場合、この値は - に設定されます。文字列は、256 バイトを超える場合は切り捨てられます。 |
tls_connection_creation_time |
TLS 接続の開始時に記録された 8601 ISO 形式の時刻。 |
ログエントリの例
以下にログエントリの例を示します。読みやすくするためだけの目的で、テキストは複数の行に表示されています。
以下は、 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
、ログを生成するリソースARNsのリストを の形式で指定しますarn:aws:logs:
。source-region
:source-account-id
:*
暗号化
Amazon S3 アクセスログバケットのサーバー側の暗号化は、次のいずれかの方法で有効にできます。
-
Amazon S3-Managedキー (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 バケットを指定する必要があります。このバケットを所有していること、およびこのバケットに必要なバケットポリシーを設定したことを確認します。詳細については、「バケットの要件」を参照してください。
コンソールを使用してアクセスログの作成を有効にするには
で Amazon EC2コンソールを開きますhttps://console.aws.amazon.com/ec2/
。 -
ナビゲーションペインで、[ロードバランサー] を選択します。
-
ロードバランサーの名前を選択して、その詳細ページを開きます。
-
[属性] タブで、[編集] を選択します。
-
[Edit load balancer attributes] ページで、以下を実行します。
-
[モニタリング] で [アクセスログ] をオンにします。
-
[S3 をブラウズ] を選択し、使用するバケットを選択します。または、プレフィックスを含めて S3 バケットの場所を入力します。
-
[Save changes] (変更の保存) をクリックします。
-
を使用してアクセスログ記録を有効にするには AWS CLI
modify-load-balancer-attributes コマンドを使用します。
アクセスログの作成の無効化
ロードバランサーのアクセスログの作成は、いつでも無効にできます。アクセスログの作成を無効にした後は、削除するまでアクセスログは S3; バケットに残されたままです。詳細については、Amazon Simple Storage Service ユーザーガイドでバケットの使用について参照してください。
コンソールを使用してアクセスログの作成を無効にするには
で Amazon EC2コンソールを開きますhttps://console.aws.amazon.com/ec2/
。 -
ナビゲーションペインで、[ロードバランサー] を選択します。
-
ロードバランサーの名前を選択して、その詳細ページを開きます。
-
[属性] タブで、[編集] を選択します。
-
[モニタリング] で [アクセスログ] をオフにします。
-
[Save changes] (変更の保存) をクリックします。
を使用してアクセスログ記録を無効にするには AWS CLI
modify-load-balancer-attributes コマンドを使用します。
アクセスログファイルの処理
アクセスログファイルは圧縮されます。Amazon S3 コンソールを使用してファイルを開くと、ファイルは解凍され、情報が表示されます。ファイルをダウンロードする場合、情報を表示するには解凍する必要があります。
ウェブサイトの需要が大きい場合は、ロードバランサーによって数 GB のデータ量のログファイルが生成されることがあります。処理を使用して、このような大量のデータを line-by-line 処理できない場合があります。このため、場合によっては、並列処理ソリューションを提供する分析ツールを使用する必要があります。例えば、次の分析ツールを使用するとアクセスログの分析と処理を行うことができます。
-
Amazon Athena は、標準 を使用して Amazon S3 内のデータを簡単に分析できるインタラクティブなクエリサービスですSQL。詳細については、Amazon Athena ユーザーガイドのNetwork Load Balancer ログのクエリを参照してください。