Application Load Balancer 的连接日志 - Elastic Load Balancing

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

Application Load Balancer 的连接日志

Elastic Load Balancing 提供的连接日志可捕获有关发送到您的负载均衡器的请求的详细信息。每个日志都包含客户端的 IP 地址和端口、侦听器端口、使用的TLS密码和协议、TLS握手延迟、连接状态和客户端证书详细信息等信息。您可以使用这些连接日志来分析请求模式并对问题进行故障排除。

连接日志是 Elastic Load Balancing 的一项可选功能,默认情况下处于禁用状态。为负载均衡器启用连接日志后,Elastic Load Balancing 会捕获日志并将其作为压缩文件存储在您指定的 Amazon S3 存储桶中。您可以随时禁用连接日志。

您需要支付 Amazon S3 的存储费用,但无需支付 Elastic Load Balancing 用以将日志文件发送到 Amazon S3 的带宽费用。有关存储成本的更多信息,请参阅 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 的结束时间包含在祖鲁时间 23:35 到 23:40 之间提出的请求的UTC条目。

ip-address

处理请求的负载均衡器节点的 IP 地址。对于内部负载均衡器,这是私有 IP 地址。

random-string

系统生成的随机字符串。

以下是一个带前缀的日志文件名示例:

s3://amzn-s3-demo-logging-bucket/logging-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://amzn-s3-demo-logging-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 用户指南中的对象生命周期管理

连接日志条目

每次连接尝试在连接日志文件中都有一个条目。客户端请求的发送方式取决于连接的持续性或非持久性。非持久连接只有一个请求,这会在访问日志和连接日志中创建一个条目。持久连接有多个请求,这会在访问日志中创建多个条目,在连接日志中创建单个条目。

语法

连接日志条目使用以下格式:

[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]

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

字段 描述

时间戳

负载均衡器成功建立或未能建立连接的时间,格式为 ISO 8601。

client_ip

请求客户端的 IP 地址。

客户端端口

发出请求的客户端的端口。

监听器端口

接收客户端请求的负载均衡器监听器的端口。

tls_协议

[HTTPS监听器] 握手时使用的SSL/TLS协议。-对于非SSL/TLS请求,此字段设置为。

tls_cipher

[HTTPS监听器] 握手时使用的SSL/TLS协议。-对于非SSL/TLS请求,此字段设置为。

tls_握手_延迟

[HTTPS听众] 成功握手时经过的总时间(以秒为单位),精度为毫秒。此字段设置为以下-情况:

  • 传入的请求不是SSL/TLS请求。

  • 握手未成功建立。

leaf_client_cert_cert_

[HTTPS监听器] 树叶客户端证书的使用者名称。此字段设置为以下-情况:

  • 传入的请求不是SSL/TLS请求。

  • 负载均衡器监听器未配置为TLS启用 m。

  • 服务器无法加载/解析 leaf 客户端证书。

leaf_client_cert_validat

[HTTPS监听器] 叶客户端not-before证书not-after的有效性,格式为 ISO 8601。此字段设置为以下-情况:

  • 传入的请求不是SSL/TLS请求。

  • 负载均衡器监听器未配置为TLS启用 m。

  • 服务器无法加载/解析 leaf 客户端证书。

leaf_client_cert_serial_number

[HTTPS监听器] 树叶客户端证书的序列号。此字段设置为以下-情况:

  • 传入的请求不是SSL/TLS请求。

  • 负载均衡器监听器未配置为TLS启用 m。

  • 服务器无法加载/解析 leaf 客户端证书。

tls_verify_status

[HTTPS监听器] 连接请求的状态。Success如果连接成功建立,则此值为。连接失败时,该值为Failed:$error_code

conn_trace_id

连接可追溯性 ID 是一个唯一的不透明 ID,用于标识每个连接。与客户机建立连接后,来自该客户端的后续请求将在各自的访问日志条目中包含此 ID。此 ID 充当外键,用于在连接和访问日志之间创建链接。

错误原因代码

如果负载均衡器无法建立连接,则负载均衡器会在连接日志中存储以下原因代码之一。

代码 描述

ClientCertMaxChainDepthExceeded

已超过最大客户端证书链深度

ClientCertMaxSizeExceeded

已超过最大客户端证书大小

ClientCertCrlHit

客户证书已被 CA 吊销

ClientCertCrlProcessingError

CRL处理错误

ClientCertUntrusted

客户证书不可信

ClientCertNotYetValid

客户证书尚未生效

ClientCertExpired

客户证书已过期

ClientCertTypeUnsupported

不支持客户端证书类型

ClientCertInvalid

客户证书无效

ClientCertPurposeInvalid

客户证书用途无效

ClientCertRejected

客户证书被自定义服务器验证拒绝

UnmappedConnectionError

未映射的运行时连接错误

示例日志条目

以下是连接日志条目的示例。

以下是与端口 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 是一项交互式查询服务,可以轻松地使用标准分析亚马逊 S3 中的数据。SQL

  • Loggly

  • Splunk

  • Sumo Logic