翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Application Load Balancer の接続ログ
Elastic Load Balancing は、ロードバランサーに送信されたリクエストに関する詳細情報をキャプチャする接続ログを提供します。各ログには、クライアントの IP アドレスとポート、リスナーポート、使用する TLS 暗号とプロトコル、TLS ハンドシェイクレイテンシー、接続ステータス、クライアント証明書の詳細などの情報が含まれます。これらの接続ログを使用して、リクエストパターンを分析し、問題をトラブルシューティングできます。
接続ログは、デフォルトで無効になっている Elastic Load Balancing のオプション機能です。ロードバランサーの接続ログを有効にすると、Elastic Load Balancing はログをキャプチャし、指定した 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
/conn_log.aws-account-id
_elasticloadbalancing_region
_app.load-balancer-id
_end-time
_ip-address
_random-string
.log.gz
- bucket (バケット)
-
S3 バケットの名前。
- prefix
-
(オプション)バケットのプレフィックス (論理階層)。指定するプレフィックスに文字列
AWSLogs
を含めることはできません。詳細については、「プレフィックスを使用してオブジェクトを整理する」を参照してください。 AWSLogs
-
指定したバケット名とオプションのプレフィックスの後に、
AWSLogs
で始まるファイル名部分が追加されます。 - aws-account-id
-
所有者の AWS アカウント ID。
- region
-
ロードバランサーおよび S3 バケットのリージョン。
- yyyy/mm/dd
-
ログが配信された日付。
- load-balancer-id
-
ロードバランサーのリソース ID。リソース ID にスラッシュ (/) が含まれている場合、ピリオド (.) に置換されます。
- end-time
-
ログ作成の間隔が終了した日時。たとえば、終了時間 20140215T2340Z には、UTC または Zulu 時間の 23:35~23:40 に行われたリクエストのエントリが含まれます。
- ip-address
-
リクエストを処理したロードバランサーノードの IP アドレス。内部ロードバランサーの場合、プライベート IP アドレスです。
- random-string
-
システムによって生成されたランダム文字列。
「」をプレフィックスとするログファイル名の例を次に示します。
s3://my-bucket/my-prefix/AWSLogs/123456789012/elasticloadbalancing/us-east-2/2022/05/01/conn_log.123456789012_elasticloadbalancing_us-east-2_app.my-loadbalancer.1234567890abcdef_20220215T2340Z_172.160.001.192_20sg8hgm.log.gz
プレフィックスが付いていないログファイル名の例は次のようになります。
s3://my-bucket/AWSLogs/123456789012/elasticloadbalancing/us-east-2/2022/05/01/conn_log.123456789012_elasticloadbalancing_us-east-2_app.my-loadbalancer.1234567890abcdef_20220215T2340Z_172.160.001.192_20sg8hgm.log.gz
必要な場合はログファイルを自身のバケットに保管できますが、ログファイルを自動的にアーカイブまたは削除するにように Amazon S3 ライフサイクルルールを定義することもできます。詳細については、Amazon Simple Storage Service ユーザーガイドの「オブジェクトのライフサイクルの管理」を参照してください。
接続ログエントリ
各接続試行には、接続ログファイルにエントリがあります。クライアントリクエストの送信方法は、接続が永続か非永続かによって決まります。非永続接続には 1 つのリクエストがあり、アクセスログと接続ログに 1 つのエントリが作成されます。永続接続には複数のリクエストがあり、アクセスログに複数のエントリを作成し、接続ログに 1 つのエントリを作成します。
構文
接続ログエントリは次の形式を使用します。
[timestamp] [client_ip] [client_port] [listener_port] [tls_protocol] [tls_cipher] [tls_handshake_latency] [leaf_client_cert_subject] [leaf_client_cert_validity] [leaf_client_cert_serial_number] [tls_verify_status]
次の表は、接続ログエントリのフィールドを順番にまとめたものです。すべてのフィールドはスペースで区切られています。新しいフィールドが導入されると、ログエントリの最後に追加されます。予期していなかったログエントリの最後のフィールドは無視する必要があります。
フィールド | 説明 |
---|---|
timestamp |
ロードバランサーが接続の確立に成功または失敗した ISO 8601 形式の時間。 |
client_ip |
リクエストを送信したクライアントの IP アドレス。 |
client_port |
リクエスト元のクライアントのポート。 |
listener_port |
クライアントリクエストを受信するロードバランサーリスナーのポート。 |
tls_protocol |
[HTTPS リスナー] ハンドシェイク中に使用される SSL/TLS プロトコル。このフィールドは、SSL/TLS 以外のリクエスト |
tls_cipher |
[HTTPS リスナー] ハンドシェイク中に使用される SSL/TLS プロトコル。このフィールドは、SSL/TLS 以外のリクエスト |
tls_handshake_latency |
[HTTPS リスナー] ハンドシェイクが成功するまでに経過した、ミリ秒精度の合計時間を秒単位で表したものです。このフィールドは、次の
|
leaf_client_cert_Subject |
[HTTPS リスナー] リーフクライアント証明書のサブジェクト名。このフィールドは、次の
|
leaf_client_cert_validity |
[HTTPS リスナー] リーフクライアント証明書の有効性。
|
leaf_client_cert_serial_number |
[HTTPS リスナー] リーフクライアント証明書のシリアル番号。このフィールドは、次の
|
tls_verify_status |
[HTTPS リスナー] 接続リクエストのステータス。この値は、接続が正常に確立 |
conn_trace_id |
接続のトレーサビリティ ID は、各接続を識別するために使用される一意の不透明な ID です。クライアントとの接続が確立されると、このクライアントからの後続のリクエストには、それぞれのアクセスログエントリにこの ID が含まれます。この ID は、接続ログとアクセスログ間のリンクを作成するための外部キーとして機能します。 |
エラー理由コード
ロードバランサーが接続を確立できない場合、ロードバランサーは次のいずれかの理由コードを接続ログに保存します。
Code | 説明 |
---|---|
|
クライアント証明書チェーンの最大深度を超えました |
|
クライアント証明書の最大サイズを超えました |
|
クライアント証明書が CA によって取り消されました |
|
CRL 処理エラー |
|
クライアント証明書が信頼されていない |
|
クライアント証明書はまだ有効ではありません |
|
クライアント証明書の有効期限が切れている |
|
クライアント証明書タイプはサポートされていません |
|
クライアント証明書が無効です |
|
クライアント証明書がカスタムサーバー検証によって拒否されました |
|
マッピングされていないランタイム接続エラー |
ログエントリの例
接続ログエントリの例を次に示します。
以下は、ポート 443 で相互 TLS 検証モードが有効になっている HTTPS リスナーとの正常な接続のログエントリの例です。
2023-10-04T17:05:15.514108Z 203.0.113.1 36280 443 TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 4.036 "CN=amazondomains.com,O=endEntity,L=Seattle,ST=Washington,C=US" NotBefore=2023-09-21T22:43:21Z;NotAfter=2026-06-17T22:43:21Z FEF257372D5C14D4 Success
以下は、ポート 443 で相互 TLS 検証モードが有効になっている HTTPS リスナーとの接続に失敗したログエントリの例です。
2023-10-04T17:05:15.514108Z 203.0.113.1 36280 443 TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 - "CN=amazondomains.com,O=endEntity,L=Seattle,ST=Washington,C=US" NotBefore=2023-09-21T22:43:21Z;NotAfter=2026-06-17T22:43:21Z FEF257372D5C14D4 Failed:ClientCertUntrusted
接続ログファイルの処理
接続ログファイルは圧縮されます。Amazon S3 コンソールを使用してファイルを開くと、ファイルは解凍され、情報が表示されます。ファイルをダウンロードする場合、情報を表示するには解凍する必要があります。
ウェブサイトの需要が大きい場合は、ロードバランサーによって数 GB のデータ量のログファイルが生成されることがあります。処理を使用して、このような大量のデータを line-by-line 処理できない場合があります。このため、場合によっては、並列処理ソリューションを提供する分析ツールを使用する必要があります。例えば、次の分析ツールを使用して接続ログを分析および処理できます。
-
「Amazon Athena」は、Amazon S3 内のデータを標準 SQL を使用して簡単に分析できるインタラクティブなクエリサービスです。