负载均衡(Cloud Load Balancer,CLB)作为千亿 QPS 的网关产品,精细化运营十分重要,而日志服务(Cloud Log Service,CLS)访问日志则是其中的利器。通过 CLB > 访问日志,我们可以挖掘海量的数据价值,不仅可以从访问日志中监控客户端请求、辅助排查问题、也可以分析梳理用户行为,为运营角色提供数据支持。本文主要介绍如何使用 CLS 分析 CLB 访问日志。
前提条件
日志字段说明
字段名 | 说明 | 字段类型 |
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 |
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 hello 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日志了解访问客户地理分布,利用 CLS 提供的 IP 函数,将客户端 IP 转换为对应的省份或国家,图表类型选择“地图”。
中国分布:
* | select count(*) as pv, ip_to_province(remote_addr) as address group by address limit 10000
全球分布:
* | select count(*) as pv, ip_to_country(remote_addr) as address group by address limit 10000