本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
您的 Network Load Balancer 的访问日志
Elastic Load Balancing 提供访问日志,用于捕获与您的网络负载均衡器建立的TLS连接的详细信息。您可以使用这些访问日志分析流量模式并解决问题。
重要
仅当负载均衡器具有TLS侦听器时,才会创建访问日志,并且日志仅包含有关TLS请求的信息。访问日志将尽力记录请求。我们建议您使用访问日志来了解请求性质,而不是作为所有请求的完整描述。
访问日志记录是 Elastic Load Balancing 的一项可选功能,默认情况下已禁用此功能。为负载均衡器启用访问日志记录之后,Elastic Load Balancing 将日志捕获为压缩文件并将其存储在您指定的 Amazon S3 存储桶中。您可以随时禁用访问日志记录。
您可以使用 Amazon S SSE 3 托管的加密密钥 (-S3) 启用服务器端加密,也可以使用带有客户托管密钥 (SSE-KMSCMK) 的密钥管理服务,为 S3 存储桶启用服务器端加密。每个访问日志文件在存储到 S3 存储桶中之前将自动加密,并在您访问它时进行解密。您不需要执行任何操作,因为这与您访问加密的日志文件或未加密的日志文件的方式基本相同。每个日志文件都使用唯一的密钥进行加密,该密钥本身也使用定期轮换的KMS密钥进行加密。有关更多信息,请参阅 Amazon S3 用户指南中的指定 Ama zon S3 加密 (SSE-S3) 和使用 AWS KMS (SSE-KMS) 指定服务器端加密。
使用访问日志无需额外付费。您需要支付 Amazon S3 的存储费用,但无需支付 Elastic Load Balancing 用以将日志文件发送到 Amazon S3 的带宽费用。有关存储成本的更多信息,请参阅 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 账户 身份证。
- 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 用户指南》中的管理存储生命周期。
访问日志条目
下表按顺序描述了访问日志条目的字段。使用空格分隔所有字段。在引入新的字段时,会将这些字段添加到日志条目的末尾。在处理日志文件时,您应忽略日志条目结尾的任何不需要的字段。
字段 | 描述 |
---|---|
类型 |
侦听器的类型。支持的值为 |
版本 |
日志条目的版本。当前版本为 2.0。 |
时间 |
TLS连接结束时记录的时间,格式ISO为 8601。 |
elb |
负载均衡器的资源 ID。 |
侦听器 |
连接TLS监听器的资源 ID。 |
client:port |
客户端的 IP 地址和端口。 |
目的地:端口 |
目的地 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连接开始时记录的时间,格式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
处理访问日志文件
访问日志文件是压缩文件。如果您使用 Amazon S3 控制台打开这些文件,则将对其进行解压缩,并且将显示信息。如果您下载这些文件,则必须对其进行解压才能查看信息。
如果您的网站上有大量需求,则负载均衡器可以生成包含大量数据的日志文件 (以 GB 为单位)。您可能无法使用处理来 line-by-line处理如此大量的数据。因此,您可能必须使用提供并行处理解决方案的分析工具。例如,您可以使用以下分析工具分析和处理访问日志:
-
Amazon Athena 是一项交互式查询服务,可以轻松地使用标准分析亚马逊 S3 中的数据。SQL有关更多信息,请参阅《Amazon Athena 用户指南》中的查询 Network Load Balancer 日志。