操作场景
弹性负载均衡的访问日志功能支持查看和分析对七层负载均衡HTTP和HTTPS进行请求的详细访问日志记录,包括请求时间、客户端IP地址、请求路径和服务器响应等。配置访问日志时需要您对接云日志服务,并且需要关联在云日志中已创建好的日志组和日志流。
注意弹性负载均衡的日志功能通过对接云日志服务实现,云日志为收费服务,请参考:云日志服务计费说明
说明由于弹性负载均衡会将访问日志等运维数据内容展示到云日志服务控制台,请您在使用过程中,注意您的隐私及敏感信息数据保护,不建议将隐私或敏感数据通过访问日志涉及的字段传输,必要时请加密保护。
约束与限制
- 仅采用HTTP/HTTPS/QUIC/TLS监听器的负载均衡实例支持配置访问日志。
- 客户订阅的访问日志中不包含返回码为400的请求,因为该类请求不符合HTTP规范,无法被正常处理。
前提条件
- 您已经创建了支持HTTP/HTTPS等协议的7层负载均衡器。
- 您已经开通了云日志服务。
- 您已经创建了后端服务器组并且已添加后端服务器,且在后端服务器中已部署了业务。
配置云日志服务
为了能够在云日志服务中看到弹性负载均衡的日志,需要首先配置云日志服务。
- 登录管理控制台,进入云日志服务控制台。
- 单击左侧导航栏“日志管理”。
- 单击 “创建日志组”,在弹出框内:
- 输入日志组名称;
- 根据实际需要设置“日志存储时间(天)”;
- 单击“确定”,创建完成。
- 在云日志服务管理控制台,单击日志组名称展开地址组。
- 单击“创建日志流”,在弹出框内,输入日志流名称。
- 单击“确定”,创建完成。
关于云日志服务更多的配置和操作方法,请参考云日志服务用户指南。
配置ELB访问日志
在“弹性负载均衡”界面配置访问日志。
- 在“负载均衡器”控制台界面,单击需要配置访问日志的负载均衡器名称。
- 在该负载均衡器界面的“访问日志”页签,单击“配置访问日志”。
- 开启日志记录,选择您在云日志服务中创建的日志组和日志流。
- 单击“确定”,配置完成。
查看访问日志
当您配置了访问日志,可以查看访问日志的详细信息。
通过“云日志服务”控制台,进入日志主题界面,选择相应日志主题名称,单击“实时日志”,即可查看弹性负载均衡的访问日志。
日志显示格式如下,日志字段说明下表所示。不支持修改日志格式。
$msec $access_log_topic_id [$time_iso8601] $log_ver $remote_addr:$remote_port $status "$request_method $scheme://$host$router_request_uri $server_protocol" $request_length $bytes_sent $body_bytes_sent $request_time "$upstream_status" "$upstream_connect_time" "$upstream_header_time" "$upstream_response_time" "$upstream_addr" "$http_user_agent" "$http_referer" "$http_x_forwarded_for" $lb_name $listener_name $listener_id
$pool_name "$member_name" $tenant_id $eip_address:$eip_port "$upstream_addr_priv" $certificate_id $ssl_protocol $ssl_cipher $sni_domain_name $tcpinfo_rtt $self_defined_header
参数 | 描述 | 取值说明 | 取值示例 |
---|---|---|---|
msec | 以秒为单位的时间,日志写入时的分辨率为毫秒。 | 浮点型数据 | 1530153091.868 |
access_log_topic_id | 访问日志流ID。 | uuid | 04465dfa-640f-4567-8b58-45c9f8bbc23f |
time_iso8601 | 日志写入时的时间,采用ISO 8601标准格式本地时间。 | - | 2018-06-28T10:31:31+08:00 |
log_ver | ELB服务日志版本号。 | 固定值:elb_01 | elb_01 |
remote_addr: remote_port | 客户端IP地址:客户端端口。 | 记录客户端IP地址和客户端端口号。 | 10.184.30.170:59605 |
status | ELB响应的状态码。 | 记录请求状态码。 | 200 |
request_method scheme://host request_uri server_protocol | 请求方法。请求方式://主机名:请求URI请求协议。 | l request_method:请求方法。 l scheme: http或https。 l host:主机名,可能为域名或者IP。 l request_uri: 浏览器发起的不做任何修改的原生URI。不包括协议及主机名。 | POST https://setting1.hicloud.com/AccountServer/IUserInfoMng/stAuth?Version=26400&cVersion=ID_SDK_2.6.4.300 |
request_length | 从客户端收到的请求长度(包括请求header和请求body)。 | 整型数据 | 295 |
bytes_sent | 发送到客户端的字节数 。 | 整型数据 | 58470080 |
body_bytes_sent | 发送到客户端的字节数(不包括响应头)。 | 整型数据 | 58469792 |
request_time | 请求处理时间,即ELB收到第一个客户端请求报文到ELB发送完响应报文的时间间隔(单位:秒)。 | 浮点型数据 | 499.769 |
upstream_status | 从上游服务器获得的响应状态码,当ELB代理进行请求重试时会包含多个响应的状态码,当请求未被正确转发到后端云主机时此字段为-。 | 后端返回给ELB的状态码 | 200 或者"-, 200",或者"502, 502 : 200",或者"502 : " |
upstream_connect_time | 与上游服务器建立连接所花费的时间,时间以秒为单位,分辨率为毫秒。当ELB代理进行请求重试时会包含多个连接的时间,当请求未被正确转发到后端云主机时此字段为-。 | 浮点型数据 | 0.008或者"-, 0.008",或者"0.008, 0.005 : 0.004",或者"0.008 : " |
upstream_header_time | 从上游服务器接收响应头所花费的时间,时间以秒为单位,分辨率为毫秒。当ELB代理进行请求重试时会包含多个响应时间,当请求未被正确转发到后端云主机时此字段为-。 | 浮点型数据 | 0.008或者"-, 0.008" ,或者"0.008, 0.005 : 0.004",或者"0.008 : " |
upstream_response_time | 从上游服务器接收响应所花费的时间,时间以秒为单位,分辨率为毫秒。当ELB代理进行请求重试时会包含多个响应时间,当请求未被正确转发到后端云主机时此字段为-。 | 浮点型数据 | 0.008或者"-, 0.008" ,或者"0.008, 0.005 : 0.004",或者"0.008 : " |
upstream_addr | 后端主机的IP地址和端口号。可能有多个值,每个值都是ip:port或者-,用逗号空格隔开。 (该参数适用于独享型负载均衡) | IP地址+端口号 | -,192.168.1.2:8080(可能有多个值,每个值都是ip:port或者-,用逗号空格隔开) |
http_user_agent | ELB收到请求头中的http_user_agent内容,表示客户端的系统型号、浏览器信息等。 | 记录浏览器的相关信息 | Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36 |
http_referer | ELB收到请求头中的http_referer内容,表示该请求所在的页面链接。 | 页面链接请求 | http://10.154.197.90/ |
http_x_forwarded_for | ELB收到请求头中的http_x_forwarded_for内容,表示请求经过的代理服务器IP地址。 | IP地址 | 10.154.197.90 |
lb_name | 负载均衡器的名称(格式为“loadbalancer_”+“负载均衡器ID”)。 | 字符串 | loadbalancer_789424af-3fd2-4292-8c62-2a2dd7005175 |
listener_name | 监听器的名称(格式为“listener_”+“监听器ID”)。 | 字符串 | listener_fde03b66-f960-440e-954a-0be8b2b75093 |
listener_id | 监听器在ELB服务内部的ID(客户可忽略)。 | 字符串 | - |
pool_name | 后端主机组名称(格式为“pool_”+“后端主机组ID”)。 | 字符串 | pool_066a5dc5-a3e4-4ea1-99f1-2a5716b681f6 |
member_name | 后端云主机的名称(格式为“member_”+“服务器ID”,尚未支持)。可能有多个值,每个值都是member_id或者-,用逗号空格隔开。 | 字符串 | member_47b07465-075a-4d2f-8ce9-0b9f39bff160(可能有多个值,每个值都是member_id或者-,用逗号空格隔开) |
tenant_id | 租户ID。 | 字符串 | 04dd36f921000fe20f95c00bba986340 |
eip_address:eip_port | 弹性IP地址和监听器监听的端口号。 | 弹性IP地址和监听器监听的端口号。 | 4.17.12.248:443 |
upstream_addr_priv | 后端主机的IP地址和端口号。可能有多个值,每个值都是ip:port或者-,用逗号空格隔开。 (该参数适用于共享型负载均衡) | IP地址+端口号 | -,192.168.1.2:8080(可能有多个值,每个值都是ip:port或者-,用逗号空格隔开) |
certificate_id | [HTTPS监听器]SSL连接建立时使用的证书ID(尚未支持)。 | 字符串 | 17b03b19-b2cc-454e-921b-4d187cce31dc |
ssl_protocol | [HTTPS监听器]SSL连接建立使用的协议,非HTTPS监听器,此字段为-。 | 字符串 | TLS 1.2 |
ssl_cipher | [HTTPS监听器]SSL连接建立使用的加密套件,非HTTPS监听器,此字段为-。 | 字符串 | ECDHE-RSA-AES256-GCM-SHA384 |
sni_domain_name | [HTTPS监听器]SSL握手时客户端提供的SNI域名,非HTTPS监听器,此字段为-。 | 字符串 | www.test.com |
tcpinfo_rtt | ELB与客户端之间的tcp rtt时间,单位:微秒。 | 整型数据 | 39032 |
self_defined_header | 该字段为保留字段,默认为“-”。 | 字符串 | - |
日志示例
1644819836.370 eb11c5a9-93a7-4c48-80fc-03f61f638595 [2022-02-14T14:23:56+08:00] elb_01 192.168.1.1:888 200 "POST https://www.test.com/example/HTTP/1.1" 1411 251 3 0.011 "200" "0.000" "0.011" "0.011" "100.64.0.129:8080" "okhttp/3.13.1" "-" "-" loadbalancer_295a7eee-9999-46ed-9fad-32a62ff0a687 listener_20679192-8888-4e62-a814-a2f870f62148 3333fd44fe3b42cbaa1dc2c641994d90 pool_89547549-6666-446e-9dbc-e3a551034c46 "-" f2bc165ad9b4483a9b17762da851bbbb 121.64.212.1:443 "10.1.1.2:8080" - TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 www.test.com 56704 -
以上日志示例对应的字段如下:
参数 | 示例 |
---|---|
msec | 1644819836.370 |
access_log_topic_id | eb11c5a9-93a7-4c48-80fc-03f61f638595 |
time_iso8601 | [2022-02-14T14:23:56+08:00] |
log_ver | elb_01 |
remote_addr: remote_port | 192.168.1.1:888 |
status | 200 |
request_method scheme://host request_uri server_protocol | "POST https://www.test.com/example/1 HTTP/1.1" |
request_length | 1411 |
bytes_sent | 251 |
body_bytes_sent | 3 |
request_time | 0.011 |
upstream_status | "200" |
upstream_connect_time | "0.000" |
upstream_header_time | "0.011" |
upstream_response_time | "0.011" |
upstream_addr | "100.64.0.129:8080" |
http_user_agent | "okhttp/3.13.1" |
http_referer | "-" |
http_x_forwarded_for | "-" |
lb_name | loadbalancer_295a7eee-9999-46ed-9fad-32a62ff0a687 |
listener_name | listener_20679192-8888-4e62-a814-a2f870f62148 |
listener_id | 3333fd44fe3b42cbaa1dc2c641994d90 |
pool_name | pool_89547549-6666-446e-9dbc-e3a551034c46 |
member_name | "-" |
tenant_id | f2bc165ad9b4483a9b17762da851bbbb |
eip_address:eip_port | 121.64.212.1:443 |
upstream_addr_priv | "10.1.1.2:8080" |
certificate_id | - |
ssl_protocol | TLSv1.2 |
ssl_cipher | ECDHE-RSA-AES256-GCM-SHA384 |
sni_domain_name | www.test.com |
tcpinfo_rtt | 56704 |
self_defined_header | - |
日志分析:
在[2022-02-14T14:23:56+08:00]时,ELB接收到客户端地址和端口(192.168.1.1:888)发起的“POST /HTTP/1.1”请求,ELB将请求转发给后端云主机(100.64.0.129:8080),后端云主机响应状态码200,ELB最终向客户端响应状态码200。
分析结果:
后端云主机正常响应请求。