应用型负载均衡ALB联合日志服务(SLS)推出访问日志功能,您可以通过访问日志分析用户行为,了解用户的地域分布及排查问题等。

背景信息

ALB作为访问入口,承载着海量的访问请求,ALB支持将访问日志投递到日志服务,结合日志服务强大的大数据计算能力,您可以通过访问日志分析用户行为、了解用户的地域分布、进行问题排查等。ALB日志访问功能具有以下优势:

  • 简单:将开发、运维人员从日志处理的繁琐耗时中解放出来,将更多的精力集中到业务开发和技术探索上。
  • 海量:负载均衡的访问日志数据规模通常很大,处理访问日志需要考虑性能和成本问题。日志服务可以一秒钟分析一亿条日志,相较于自建开源方案有明显成本优势和性能优势。
  • 实时:DevOps、监控、报警等场景要求日志数据的实时性。日志服务强大的大数据计算能力,可秒级分析处理实时产生的日志。
  • 弹性:按负载均衡实例级别开通或关闭访问日志功能,Logstore容量可动态伸缩满足业务增长需求。

费用说明

ALB将日志投递到日志服务后,日志服务根据存储空间、读取流量、请求数量、数据加工、数据投递等进行计费,更多信息,请参见日志服务计费

前提条件

使用访问日志功能前,请确保您已开通日志服务。具体操作,请参见开通日志服务

创建访问日志

  1. 登录应用型负载均衡ALB控制台
  2. 在顶部菜单栏,选择ALB实例所属的地域。
  3. 实例页面,单击目标实例ID。
  4. 实例详情页签,单击访问日志页签,在访问日志页签单击创建访问日志
  5. 创建访问日志对话框,配置项目Project日志库Logstore,然后单击确定
    配置说明
    项目Project日志服务中的资源管理单元,用于资源隔离和控制。
    • 选择现有Project:在下拉框中选择一个Project。
    • 新建Project:在文本框中输入新建Project名称。
    日志库Logstore日志服务中日志数据的采集、存储和查询单元。
    • 选择现有Logstore:在下拉框中选择一个Logstore。
    • 新建Logstore:在文本框中输入新建Logstore名称。Project选择新建时,Logstore也需选择新建。
    服务关联角色创建须知执行此操作时,系统将会为您自动创建一个服务关联角色,以完成相应功能。
  6. 在弹出的对话框中,确认提示信息,然后单击确定

    配置完成后,日志服务默认为该Logstore设置索引,如果该Logstore已经设置了索引,原有的索引配置将被覆盖。

查看访问日志

  1. 访问日志页签,单击SLS日志存储右侧的链接,前往日志服务查看原始日志等信息。
  2. 访问日志页签,您可以分别单击监控中心访问中心秒级监控页签,输入筛选条件,查询相关指标信息。
    模块分类指标说明
    监控中心展示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错误状态码等指标。
    • 监控中心访问中心秒级监控页签右上角,您可以单击更多报表前往CloudLens for ALB页面,查看更多ALB数据报表信息。更多信息,请参见查看数据报表
    • 监控中心访问中心秒级监控页签右上角,您可以单击报警设置前往CloudLens for ALB页面,查看ALB实例告警事务。
    • 关于监控中心访问中心秒级监控页签右上角的更多功能介绍:
      • SQL独享版:开启SQL增强。更多信息,请参见开启SQL独享版
      • 日志服务采集到访问日志后,您可以执行查询分析、下载、投递、加工日志、创建告警等操作。具体操作,请参见云产品日志通用操作

记录自定义header

除常用的header外,slb_headers用来记录请求中其余header的header name和header value,以便完整的记录请求和更好地分析日志。

  1. 访问日志页签,在基本信息区域单击记录自定义header设置
  2. 日志中记录自定义HTTP头设置对话框,在下拉框中选择该ALB实例已添加的监听。
    如需创建监听,在下拉框中单击创建监听。更多信息,请参见添加HTTP监听添加HTTPS监听添加QUIC监听
  3. 在弹出的对话框中,确认提示信息,单击确定
    设置完成后,日志中的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

删除日志

  1. 访问日志页签,在基本信息区域单击删除日志
  2. 在弹出的对话框中,确认提示信息,然后单击确定

日志字段说明

字段说明
app_lb_id负载均衡实例ID。
__topic__日志主题,固定为alb_layer7_access_log。
body_bytes_sent发送给客户端的HTTP Body的字节数。
client_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负载均衡收到的请求报文中x-forwarded-for的内容。
http_x_real_ip客户端的真实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日志记录时间。时间格式为YYYY-MM-DDThh:mm:ssZ
upstream_addr后端服务器的IP地址和端口。
upstream_response_time从负载均衡向后端服务器建立连接开始到接受完数据然后关闭连接为止的时间,单位:秒。
upstream_status负载均衡收到的后端服务器的响应状态码。
vip_addr虚拟IP地址。
write_response_time负载均衡写的响应时间,单位:毫秒。
client_port请求客户端端口。
slb_headers自定义headers,需打开对应功能可以使用,存放请求的自定义header。