

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

# Network Load Balancer のアクセスログ
<a name="load-balancer-access-logs"></a>

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

**重要**  
 従来の「レガシー」アクセスログ (このセクションで説明) は引き続き使用できますが、Network Load Balancer は CloudWatch Logs を通じた拡張ログ記録オプションの提供を開始しました。CloudWatch Logs は、Amazon CloudWatch Logs、Amazon Data Firehose、Amazon Simple Storage Service などへの、より柔軟な配信オプションを提供します。これらの改善されたログ記録オプションを設定するには、ロードバランサーの ***[統合]*** タブにアクセスしてください。CloudWatch Logs の詳細については、「[Network Load Balancer の CloudWatch ログ](load-balancer-cloudwatch-logs.md)」を参照してください。

**重要**  
アクセスログが作成されるのは、ロードバランサーに 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暗号化 (SSE-S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/specifying-s3-encryption.html) の指定」および[AWS KMS 「 (SSE-KMS) を使用したサーバー側の暗号化の指定](https://docs.aws.amazon.com/AmazonS3/latest/userguide/specifying-kms-encryption.html)」を参照してください。 *Amazon S3 *

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

**Topics**
+ [アクセスログファイル](#access-log-file-format)
+ [アクセスログのエントリ](#access-log-entry-format)
+ [アクセスログファイルの処理](#log-processing-tools)
+ [アクセスログの有効化](enable-access-logs.md)
+ [アクセスログの無効化](disable-access-logs.md)

## アクセスログファイル
<a name="access-log-file-format"></a>

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 ユーザーガイド*の「[ストレージのライフサイクルの管理](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html)」を参照してください。

## アクセスログのエントリ
<a name="access-log-entry-format"></a>

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


| フィールド | 説明 | 
| --- | --- | 
| 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` フィールドに含まれます。TLS ハンドシェイクまたは TLS ハンドシェイクの失敗がない場合、この値は `-` に設定されます。 | 
| received\_bytes | クライアントからロードバランサーによって受信されたバイト数 (復号後)。 | 
| sent\_bytes | ロードバランサーからクライアントに送信されたバイト数 (復号前)。 | 
| incoming\_tls\_alert | クライアントからロードバランサーによって受信された TLS アラートの整数値 (存在する場合)。それ以外の場合、この値は `-` に設定されます。 | 
| chosen\_cert\_arn | クライアントに提供された証明書の ARN。有効なクライアント hello メッセージが送信されない場合、この値は `-` に設定されます。 | 
| chosen\_cert\_serial | 将来の利用のために予約されています。この値は常に `-` に設定されます。 | 
| tls\_cipher | クライアントとネゴシエートされた暗号スイート (OpenSSL 形式)。TLS ネゴシエーションが完了しない場合、この値は `-` に設定されます。 | 
| tls\_protocol\_version | クライアントとネゴシエートされた TLS プロトコル (文字列形式)。指定できる値は、`tlsv10`、`tlsv11`、`tlsv12`、`tlsv13` です。TLS ネゴシエーションが完了しない場合、この値は `-` に設定されます。 | 
| tls\_keyexchange | TLS または PQ-TLS のハンドシェイク中に使用されるキー交換。TLS または PQ-TLS ネゴシエーションが完了しない場合、この値は に設定されます`-`。 | 
| domain\_name | クライアント hello メッセージの server\_name 拡張機能の値。この値は URL でエンコードされます。有効なクライアント hello メッセージが送信されない場合、または拡張機能が存在しない場合、この値は `-` に設定されます。 | 
| alpn\_fe\_protocol | クライアントとネゴシエートされたアプリケーションプロトコル (文字列形式)。指定できる値は、`h2`、`http/1.1`、および `http/1.0` です。TLS リスナーで ALPN ポリシーが設定されていない場合、一致するプロトコルが見つからない場合、または有効なプロトコルリストが送信されない場合、この値は `-` に設定されます。 | 
| alpn\_be\_protocol | ターゲットとネゴシエートされたアプリケーションプロトコル (文字列形式)。指定できる値は、`h2`、`http/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 形式)。 | 

### ログエントリの例
<a name="access-log-entry-examples"></a>

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

次に、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
```

## アクセスログファイルの処理
<a name="log-processing-tools"></a>

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

ウェブサイトの需要が大きい場合は、ロードバランサーによって数 GB のデータ量のログファイルが生成されることがあります。このような大容量のデータは、行単位で処理できない場合があります。このため、場合によっては、並列処理ソリューションを提供する分析ツールを使用する必要があります。例えば、次の分析ツールを使用するとアクセスログの分析と処理を行うことができます。
+ Amazon Athena はインタラクティブなクエリサービスで、Amazon S3 内のデータを標準 SQL を使用して簡単に分析できるようになります。詳細については、*Amazon Athena ユーザーガイド*の[Network Load Balancer ログのクエリ](https://docs.aws.amazon.com/athena/latest/ug/networkloadbalancer-classic-logs.html)を参照してください。
+ [Loggly](https://documentation.solarwinds.com/en/success_center/loggly/content/admin/s3-ingestion-auto.htm)
+ [Splunk](https://splunk.github.io/splunk-add-on-for-amazon-web-services/)
+ [Sumo Logic](https://www.sumologic.com/application/elb/)