如果您需要通过访问日志分析用户行为,了解用户的地域分布及排查问题等,您可以通过ALB联合日志服务(SLS)推出的访问日志功能来实现。
背景信息
ALB作为访问入口,承载着海量的访问请求,ALB支持将访问日志投递到日志服务,结合日志服务强大的大数据计算能力,您可以通过访问日志分析用户行为、了解用户的地域分布、进行问题排查等。ALB日志访问功能具有以下优势:
简单:将开发、运维人员从日志处理的繁琐耗时中解放出来,将更多的精力集中到业务开发和技术探索上。
海量:负载均衡的访问日志数据规模通常很大,处理访问日志需要考虑性能和成本问题。日志服务可以一秒钟分析一亿条日志,相较于自建开源方案有明显成本优势和性能优势。
实时:DevOps、监控、报警等场景要求日志数据的实时性。日志服务强大的大数据计算能力,可秒级分析处理实时产生的日志。
弹性:按负载均衡实例级别开通或关闭访问日志功能,Logstore容量可动态伸缩满足业务增长需求。
费用说明
ALB将日志投递到日志服务后,日志服务根据存储空间、读取流量、请求数量、数据加工、数据投递等进行计费,更多信息,请参见日志服务计费。
前提条件
使用访问日志功能前,请确保您已开通日志服务。具体操作,请参见开通日志服务。
创建访问日志
- 登录应用型负载均衡ALB控制台。
在顶部菜单栏,选择ALB实例所属的地域。
在实例页面,单击目标实例ID。
在实例详情页签,单击访问日志页签,在访问日志页签单击创建访问日志。
在创建访问日志对话框,配置项目Project和日志库Logstore,然后单击确定。
配置
说明
项目Project
日志服务中的资源管理单元,用于资源隔离和控制。
选择现有Project:在下拉框中选择一个Project。
新建Project:在文本框中输入新建Project名称。
日志库Logstore
日志服务中日志数据的采集、存储和查询单元。
选择现有Logstore:在下拉框中选择一个Logstore。
新建Logstore:在文本框中输入新建Logstore名称。Project选择新建时,Logstore也需选择新建。
服务关联角色创建须知
执行此操作时,系统将会为您自动创建一个服务关联角色,以完成相应功能。
在弹出的对话框中,确认提示信息,然后单击确定。
选择新建日志库Logstore时,配置完成后,日志服务默认为该Logstore创建索引及开启仪表盘。
选择现有日志库Logstore时,配置完成后,日志服务会自动开启仪表盘。如果该Logstore已设置索引,配置不会被覆盖,如需新的索引,请至日志服务控制台调整。
查看访问日志
在访问日志页签,单击SLS日志存储右侧的链接,前往日志服务查看原始日志等信息。
在访问日志页签,您可以分别单击监控中心、访问中心或秒级监控页签,输入筛选条件,查询相关指标信息。
模块分类
指标说明
监控中心
展示ALB实例的实时监控数据,包括访问PV、请求成功率、平均延迟、4xx请求数、Status分布、流量、P50延迟、P90延迟、P99延迟、P9999延迟、TOP请求Host、TOP延迟Host、TOP失败率Host、TOP请求URL、TOP延迟URL、TOP失败率URL、TOP请求后端、TOP延迟后端、TOP失败率后端等指标。
访问中心
展示ALB实例的访问状态数据,包括PV对比昨日、PV对比上周、UV对比昨日、UV对比上周、PV分布、UV分布、今日访问PV、7天访问PV、TOP10访问省份、移动端占比、TOP10访问Host、TOP10访问UserAgent、TOP访问IP等指标。
秒级监控
以秒级粒度展示监控信息,便于发现瞬时抖动的异常情况,包括QPS、访问延迟、Upstream延迟、成功率、请求流量、返回Body流量、2xx状态码、3xx状态码、错误状态码、Upstream2xx状态码、Upstream3xx状态码、Upstream错误状态码等指标。
记录自定义header
除常用的header外,slb_headers用来记录请求中其余header的header name和header value,以便完整地记录请求和更好地分析日志。
访问日志的自定义header长度默认支持1 KB,最大可以提升到4KB,如需提升请联系您的客户经理申请。更多信息,请参见ALB转发请求的长度限制是多少?是否支持调整?。
在访问日志页签,在基本信息区域单击记录自定义header设置。
在日志中记录自定义HTTP头设置对话框,在下拉框中选择该ALB实例已添加的监听。
在弹出的对话框中,确认提示信息,单击确定。
设置完成后,日志中的slb_headers字段会记录请求中除以下header之外的header_name和header_value:
#自定义header不会记录以下字段信息 host referer user-agent x-forwarded-for x-readtime x-real-ip uber-trace-id X-B3-TraceId X-B3-SpanId X-B3-ParentSpanId X-B3-Sampled
删除日志
在访问日志页签,在基本信息区域单击删除日志。
在弹出的对话框中,确认提示信息,然后单击确定。
日志字段说明
字段 | 说明 |
app_lb_id | 负载均衡实例ID。 |
__topic__ | 日志主题,固定为alb_layer7_access_log。 |
body_bytes_sent | 发送给客户端的HTTP Body的字节数。 |
client_ip | 请求客户端IP地址。当未开启“查找真实客户端源IP”功能时,该字段为负载均衡的上一跳IP地址;开启后,该字段为真实客户端源IP地址。 |
host | 域名或IP地址。优先从请求参数中获取host,如果获取不到则从host header取值,如果还是获取不到则以处理请求的后端服务器IP地址作为host。 |
http_host | 请求报文host header的内容。 |
http_referer | 负载均衡收到的请求报文中HTTP的referer header的内容。 |
http_user_agent | 负载均衡收到的请求报文中HTTP的user-agent header的内容。 |
http_x_forwarded_for | 负载均衡收到的请求报文中HTTP的x-forwarded-for的内容。 |
http_x_real_ip | 负载均衡收到的请求报文中HTTP的x-real-ip的内容。 |
read_request_time | 负载均衡读取请求的时间,单位:毫秒。 |
request_length | 请求报文的长度,包括startline、HTTP头报文和HTTP body。 |
request_method | 请求报文的方法。 |
request_time | 负载均衡收到第一个请求报文的时间到返回应答之间的时间间隔,单位:秒。 |
request_uri | 负载均衡收到的请求报文的URI。 |
scheme | 请求的schema:HTTP或HTTPS。 |
server_protocol | 负载均衡收到的HTTP协议的版本,例如HTTP/1.0或HTTP/1.1。 |
slb_vport | 负载均衡的监听端口。 |
ssl_cipher | 建立SSL连接使用的密码,例如ECDHE-RSA-AES128-GCM-SHA256等。 |
ssl_protocol | 建立SSL连接使用的协议,例如TLSv1.2。 |
status | 负载均衡应答报文的状态。 |
tcpinfo_rtt | 客户端TCP连接时间,单位:微秒。 |
time | 日志记录时间。时间格式为 |
upstream_addr | 后端服务器的IP地址和端口。 |
upstream_response_time | 从负载均衡向后端服务器建立连接开始到接收完数据然后关闭连接为止的时间,单位:秒。 |
upstream_status | 负载均衡收到的后端服务器的响应状态码。 |
vip_addr | 虚拟IP地址。 |
write_response_time | 负载均衡写的响应时间,单位:毫秒。 |
client_port | 请求客户端端口。 |
slb_headers | 自定义headers,需打开对应功能才能使用,用于存放请求的自定义header。 |