负载均衡支持配置七层(HTTP/HTTPS)访问日志(Access Log),访问日志可以帮助您了解客户端请求、辅助排查问题、分析梳理用户行为等。当前访问日志支持存储到 CLS 中,支持分钟粒度的日志上报,在线多规则检索。
负载均衡的访问日志主要用于故障排查,帮助业务快速定位问题。访问日志功能包括日志上报、日志存储和查询:
日志上报,提供尽力而为服务(Best-Effort Service),优先保障业务转发,再保障日志上报。
日志存储和查询,按当前使用的存储服务来提供服务保障 SLA。
说明:
当前负载均衡仅七层协议(HTTP/HTTPS)支持配置访问日志到 CLS,四层协议(TCP/UDP/TCP SSL)不支持配置访问日志到 CLS。
负载均衡配置访问日志到 CLS 的功能免费,用户仅需支付日志服务 CLS 的费用。
当前仅部分地域支持此功能,实际以控制台支持的地域为准。
方式一:为单实例配置访问日志
步骤一:开启访问日志存入 CLS
1. 登录 负载均衡控制台,单击左侧导航栏的实例管理。
2. 在实例管理页面,单击目标负载均衡 ID。
3. 在基本信息页面的“访问日志(七层)”模块,单击铅笔图标。
4. 在弹出的修改 CLS 日志存放位置对话框中,开启启用日志,并选择存储访问日志的日志集和日志主题,单击提交。若您没有创建日志集或日志主题,请 新建相关资源 后,再选取具体的存储位置。
说明:
建议选择 clb_logset 日志集下带 CLB 标识的日志主题。带 CLB 标识的日志主题和普通日志主题的差异在于:
带 CLB 标识的日志主题默认自动创建索引;普通日志主题需手动创建索引,否则不支持检索。
带 CLB 标识的日志主题默认支持仪表盘;普通日志主题需手动配置仪表盘。
5. 配置完成后单击日志集或日志主题即可跳转到 CLS 控制台的检索分析页面。
6. (可选)若想关闭访问日志,可再次单击铅笔图标,在弹出的修改 CLS 日志存放位置对话框中进行关闭并提交即可。
步骤二:配置日志主题的索引
说明:
为单实例配置的访问日志的日志主题必须配置索引,否则检索不到日志。
建议配置的索引如下:
键值索引 | 字段类型 | 分词符 |
server_addr | text | 无需配置分词符 |
server_name | text | 无需配置分词符 |
http_host | text | 无需配置分词符 |
status | long | - |
vip_vpcid | long | - |
具体操作如下:
1. 登录 日志服务控制台,在左侧导航栏单击日志主题。
2. 在日志主题页面,单击目标日志主题 ID。
3. 在日志主题详情页,单击索引配置页签,单击右上角的编辑,即可添加索引,添加完成后,单击页面底部确定。索引字段配置说明请参见 开启索引。
4. 索引配置完成后结果如下图所示。
步骤三:查看访问日志
1. 登录 日志服务控制台。
2. 在左侧导航栏中,单击检索分析。
3. 在顶部选择需要查询的日志主题。
4. 选择检索分析语句输入模式,日志服务提供两种模式来输入检索分析语句。详情可参见 语法规则。
4.1 交互模式:通过鼠标点击指定检索条件及统计分析规则,自动生成检索分析语句,易用性高。
4.2 语句模式:直接输入检索分析语句,需符合语法规则,灵活度高。
5. 如需切换语法规则,可在此处进行切换,建议使用 CQL。
6. 输入检索分析语句后,在右侧选择时间范围,然后单击搜索按钮,执行检索分析。
6.1 当检索分析语句仅包含检索条件时:可在原始日志中查看匹配检索条件的日志,默认按日志时间倒排。
6.2 当检索分析语句包含 SQL 语句时:可在统计图表中查看分析结果,同时还可在原始日志中查看符合检索条件的日志,以便于对比分析统计结果及原始日志。
方式二:批量配置访问日志
步骤一:创建日志集和日志主题
1. 登录 负载均衡控制台,单击左侧导航栏的访问日志 > 日志列表。
2. 在访问日志页面左上角选择所属地域,在日志集信息区域,单击创建日志集。
3. 在弹出的创建日志集对话框中,设置保存时间,单击保存。
说明:
每个地域仅支持创建一个日志集,日志集名称为“clb_logset”。
4. 在访问日志页面的日志主题区域,单击新建日志主题。
5. 在弹出的新增日志主题对话框,选择存储类型和日志保存时间后,选择左侧的负载均衡实例添加至右侧列表中,单击保存。
说明:
存储类型分为标准存储和低频存储,详情请参见 存储类型概述。
日志保存支持永久保存和按固定时长保存。
新建日志主题时,可选择添加、或不添加负载均衡实例。在日志主题列表的右侧操作列中,单击管理可重新添加负载均衡实例。每个负载均衡实例仅限添加至一个日志主题中。
一个日志集中可创建多个日志主题(Topic),您可将不同的 CLB 日志放在不同的日志主题中,这些日志主题默认会带 CLB 标识。
6. (可选)若需关闭访问日志,在日志主题列表的右侧操作列中,单击停止,停止投递日志即可。
步骤二:查看访问日志
1. 登录 日志服务控制台。
2. 在左侧导航栏中,单击检索分析。
3. 在顶部选择需要查询的日志主题。
4. 选择检索分析语句输入模式,日志服务提供两种模式来输入检索分析语句。详情可参见 语法规则。
4.1 交互模式:通过鼠标点击指定检索条件及统计分析规则,自动生成检索分析语句,易用性高。
4.2 语句模式:直接输入检索分析语句,需符合语法规则,灵活度高。
5. 如需切换语法规则,可在此处进行切换,建议使用 CQL。
6. 输入检索分析语句后,在右侧选择时间范围,然后单击搜索按钮,执行检索分析。
6.1 当检索分析语句仅包含检索条件时:可在原始日志中查看匹配检索条件的日志,默认按日志时间倒排。
6.2 当检索分析语句包含 SQL 语句时:可在统计图表中查看分析结果,同时还可在原始日志中查看符合检索条件的日志,以便于对比分析统计结果及原始日志。
日志格式及变量说明
字段类型
目前日志服务支持如下三种字段类型:
名称 | 类型描述 |
text | 文本类型 |
long | 整型数值类型(Int 64) |
double | 浮点数数值类型(64 bit) |
日志变量说明
变量名 | 说明 | 字段类型 |
stgw_request_id | 请求 ID。 | text |
time_local | 访问的时间与时区,例如,“01/Jul/2019:11:11:00 +0800”,最后的“+0800”表示所处时区为 UTC 之后的8小时,即为北京时间。 | text |
protocol_type | 协议类型(HTTP/HTTPS/SPDY/HTTP2/WS/WSS)。 | text |
lb_id | CLB 的实例 ID,CLB 实例的唯一标识。 | text |
server_addr | CLB 的 VIP,仅非域名化实例支持,域名化实例该取值为空。 | text |
server_port | CLB 的 VPort,即监听端口。 | long |
server_name | 规则的 server_name,CLB 的监听器中配置的域名。 | text |
remote_addr | 客户端 IP。 | text |
remote_port | 客户端端口。 | long |
status | CLB 返回给客户端的状态码。 | long |
upstream_addr | RS 地址。 | text |
upstream_status | RS 返回给 CLB 的状态码。 | text |
proxy_host | stream ID。 | text |
request | 请求行。 | text |
request_length | 从客户端收到的请求字节数。 | long |
bytes_sent | 发送到客户端的字节数。 | long |
http_host | 请求域名,即 HTTP 头部中的 Host。 | text |
http_user_agent | HTTP 协议头的 user_agent 字段。 | text |
http_referer | HTTP 请求来源。 | text |
http_x_forwarded_for | HTTP 请求中 x-forwarded-for header 的内容。 | text |
request_time | 请求处理时间:从收到客户端的第一个字节开始,直到给客户端发送的最后一个字节为止,包括客户端请求到 CLB、CLB 转发请求到 RS、RS 响应数据到 CLB、CLB 转发数据到客户端的总时间。单位:秒。 | double |
upstream_response_time | 整个后端请求所花费时间:从开始 CONNECT RS 到从 RS 接收完应答的时间。单位:秒。 | double |
upstream_connect_time | 和 RS 建立 TCP 连接所花费时间:从开始 CONNECT RS 到开始发送 HTTP 请求的时间。单位:秒。 | double |
upstream_header_time | 从 RS 接收完 HTTP 头部所花费时间:从开始 CONNECT RS 到从 RS 接收完 HTTP 应答头部的时间。单位:秒。 | double |
tcpinfo_rtt | TCP 连接的 RTT。 单位:微秒。 | long |
connection | 连接 ID。 | long |
connection_requests | 连接上的请求个数。 | long |
ssl_handshake_time | 记录 SSL 握手各阶段耗时,格式:x:x:x:x:x:x:x。其中,冒号分隔的字符串,单位是ms,每个阶段耗时若小于1ms则显示为0。 第1个字段表示是否 SSL 会话复用。 第2个字段表示完整的握手时间。 3~7表示 SSL 各阶段耗时。 第3个字段表示 CLB 从收到 client hello 到发送 server hell done 的时间。 第4个字段表示 CLB 从发送 server 证书开始到发送 server 证书完成的时间。 第5个字段表示 CLB 从计算签名到发送 server key exchange 完成的时间。 第6个字段表示 CLB 从收到 client key exchange 开始到收完 client key exchange 的时间。 第7个字段表示 CLB 从收到 client key exchange 到发送 server finished 的时间。 | text |
ssl_cipher | SSL 加密套件。 | text |
ssl_protocol | SSL 协议版本。 | text |
vip_vpcid | 负载均衡实例所属的私有网络 ID,公网 CLB 的取值为-1。 | long |
request_method | 请求方式,支持 POST 和 GET 请求。 | text |
uri | 资源标识符。 | text |
server_protocol | CLB 的协议。 | text |
默认支持检索的日志变量
带“CLB”标识的日志集默认支持检索的字段如下所示:
索引字段 | 说明 | 字段类型 |
time_local | 访问的时间与时区,例如,“01/Jul/2019:11:11:00 +0800”,最后的“+0800”表示所处时区为 UTC 之后的8小时,即为北京时间。 | text |
protocol_type | 协议类型(HTTP/HTTPS/SPDY/HTTP2/WS/WSS)。 | text |
server_addr | CLB 的 VIP。 | text |
server_name | 规则的 server_name,CLB 的监听器中配置的域名。 | text |
remote_addr | 客户端 IP。 | text |
status | CLB 返回给客户端的状态码。 | long |
upstream_addr | RS 地址。 | text |
upstream_status | RS 返回给 CLB 的状态码。 | text |
request_length | 从客户端收到的请求字节数。 | long |
bytes_sent | 发送到客户端的字节数。 | long |
http_host | 请求域名,即 HTTP 头部中的 Host。 | text |
request_time | 请求处理时间:从收到客户端的第一个字节开始,直到给客户端发送的最后一个字节为止,包括客户端请求到 CLB、CLB 转发请求到 RS、RS 响应数据到 CLB、CLB 转发数据到客户端的总时间。单位:秒。 | double |
upstream_response_time | 整个后端请求所花费时间:从开始 CONNECT RS 到从 RS 接收完应答的时间。单位:秒。 | double |
vip_vpcid | 负载均衡实例所属的私有网络 ID,公网 CLB 的取值为-1。 | long |
lb_id | CLB 的实例 ID,CLB 实例的唯一标识。 | text |