您的 Network Load Balancer 的访问日志 - Elastic Load Balancing
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

您的 Network Load Balancer 的访问日志

弹性负载均衡提供了访问日志,该访问日志可捕获有关使用网络负载均衡器建立的 TLS 连接的详细信息。您可以使用这些访问日志分析流量模式并解决问题。

重要

仅当负载均衡器具有 TLS 侦听器且日志仅包含有关 TLS 请求的信息时,才创建访问日志。访问日志将尽力记录请求。我们建议您使用访问日志来了解请求性质,而不是作为所有请求的完整描述。

访问日志记录是 Elastic Load Balancing 的一项可选功能,默认情况下已禁用此功能。为负载均衡器启用访问日志记录之后,Elastic Load Balancing 将日志捕获为压缩文件并将其存储在您指定的 Amazon S3 存储桶中。您可以随时禁用访问日志记录。

您可以使用 Amazon S3 托管加密密钥(SSE-S3)启用服务器端加密,也可使用 Key Management Service 与 S3 存储桶的客户管理的密钥(SSE-KMS CMK)来启用服务器端加密。每个访问日志文件在存储到 S3 存储桶中之前将自动加密,并在您访问它时进行解密。您不需要执行任何操作,因为这与您访问加密的日志文件或未加密的日志文件的方式基本相同。每个日志文件都使用一个唯一密钥进行加密,此密钥本身将使用定期轮换的 KMS 密钥进行加密。有关更多信息,请参阅 Amazon S3 用户指南中的指定 Amazon S3 加密 (SSE-S3) 和使用 Amazon 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

所有者的 Amazon Web Services 账户 身份证。

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 用户指南》中的管理存储生命周期

访问日志条目

下表按顺序描述了访问日志条目的字段。使用空格分隔所有字段。在引入新的字段时,会将这些字段添加到日志条目的末尾。在处理日志文件时,您应忽略日志条目结尾的任何不需要的字段。

字段 描述

类型

侦听器的类型。支持的值为 tls

版本

日志条目的版本。当前版本为 2.0。

time

在 TLS 连接结束时记录的时间(采用 ISO 8601 格式)。

elb

负载均衡器的资源 ID。

侦听器

连接的 TLS 侦听器的资源 ID。

client:port

客户端的 IP 地址和端口。

目的地:端口

目的地 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。如果未发送有效的客户端问候消息,则此值将设置为-

chosen_cert_serial

留待将来使用。此值始终设置为-

tls_cipher

与客户端协商的密码套件(采用 OpenSSL 格式)。如果 TLS 协商未完成,则此值将设置为-

tls_protocol_version

与客户端协商的 TLS 协议(采用字符串格式)。可能的值为 tlsv10tlsv11tlsv12tlsv13。如果 TLS 协商未完成,则此值将设置为-

tls_named_group

留待将来使用。此值始终设置为-

domain_name

客户端 hello 消息中的 server_name 扩展名的值。此值是 URL 编码的。如果未发送有效的客户问候消息或扩展名不存在,则此值将设置为-

alpn_fe_protocol

与客户端协商的应用程序协议,采用字符串格式。可能的值为h2http/1.1http/1.0。如果未在 TLS 侦听器中配置 ALPN 策略、未找到匹配协议或未发送有效的协议列表,则此值将-设置为。

alpn_be_protocol

与目标协商的应用程序协议,采用字符串格式。可能的值为h2http/1.1http/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

处理访问日志文件

访问日志文件是压缩文件。如果您使用 Amazon S3 控制台打开这些文件,则将对其进行解压缩,并且将显示信息。如果您下载这些文件,则必须对其进行解压才能查看信息。

如果您的网站上有大量需求,则负载均衡器可以生成包含大量数据的日志文件 (以 GB 为单位)。您可能无法使用处理来 line-by-line处理如此大量的数据。因此,您可能必须使用提供并行处理解决方案的分析工具。例如,您可以使用以下分析工具分析和处理访问日志: