阿里云SLB是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。

SLB访问日志功能当前支持基于HTTP/HTTPS的七层负载均衡,访问日志内容丰富,提供近30个字段,例如:收到请求的时间、客户端的IP地址、处理Latency、请求URI、后端RealServer(阿里云ECS)地址、返回状态码等。负载均衡作为公网访问入口,承载着海量的访问请求,您可以通过访问日志分析客户端用户行为、了解客户端用户的地域分布、进行问题排查等。

说明 只有七层负载均衡支持访问日志功能,全部地域都已经开放访问日志功能,详细内容请查看配置访问日志

功能优势

  • 简单:将开发、运维人员从日志处理的繁琐耗时中解放出来,将更多的精力集中到业务开发和技术探索上去。
  • 海量:访问日志与SLB实例请求PV成正比,往往数据规模很大,处理访问日志需要考虑性能和成本问题。日志服务可以1秒钟分析一亿日志,且相较于开源方案有明显成本优势。
  • 实时:DevOps、监控、报警等场景要求日志数据的实时性。传统手段无法满足这一需求,例如将数据ETL到Hive等工具耗时很长,其中大量的工作花费在数据集成阶段。负载均衡访问日志结合阿里云日志服务强大的大数据计算能力,秒级分析处理实时产生的日志。
  • 弹性:可按负载均衡实例级别开通或关闭访问日志功能。可任意设置存储周期,并且日志Logstore容量可以动态伸缩满足业务增长需求。

配置日志服务收集SLB七层访问日志

前提条件

  1. 您已开通负载均衡服务和日志服务,并创建了相同地域下的创建实例与日志服务Project、Logstore。
    说明 只有七层负载均衡支持访问日志功能,目前已在全部地域开放。
  2. 如果您使用的是子账号,需要主账号进行授权。详情参见授权子账号使用访问日志

操作步骤

  1. 登录日志服务控制台,单击Project名称。
  2. 单击接入数据按钮,并在接入数据页面中选择SLB七层日志
  3. 选择日志空间。

    可以选择已有的Logstore,也可以新建Project或Logstore。

  4. 根据界面提示建立分发规则。单击前往SLB设置,跳转到负载均衡控制台。
    1. 在左侧导航栏,单击日志管理 > 访问日志
    2. 找到目标SLB实例,然后单击右侧的设置
      说明 确保Project的地域和负载均衡实例的地域相同。
      图 1. 日志设置

      日志设置
    3. 选择日志服务Project和日志库(Logstore),然后单击确定
    4. 配置完成后关闭对话框,返回至数据接入向导,单击下一步
      图 2. 数据源设置

      数据源设置
  5. 查询分析设置。

    日志服务已预设了SLB所需的查询索引,字段说明请查看本页面字段说明部分。确认后单击下一步

    说明 系统默认会为您创建两个以Logstore名字开头仪表盘,分别是:{LOGSTORE}-slb_layer7_access_center、{LOGSTORE}-slb_layer7_operation_center,配置完成后您可以在仪表盘页面查看。

后续操作

  • 日志实时查询

    您可以根据日志中任意关键字进行快速的精确、模糊查询,可用于问题定位或者统计查询。

    图 3. 日志实时查询

    实时查询
  • 预置分析报表

    日志服务为您的SLB日志预定义了两个仪表盘:access_center展示访问细节信息,operation_center运营中心展示概览信息。包括:TOP访问客户端、请求状态码分布、TOP访问URI、请求报文流量趋势、RealServer响应时间统计等。

    图 4. 预置分析报表

    分析报表
  • 自定义分析图表

    您可以根据统计需求将任意日志项做ad-hoc查询并保存结果为图表,以满足您日常的业务需要。

    图 5. 自定义分析图表

    自定义分析图表
  • 日志监控告警

    您可以对SLB请求日志做个性化分析并将结果保存为快速查询,快速查询设置告警,当对实时日志计算结果超出定义的阈值后系统会发出告警信息。

    图 6. 日志监控告警

    监控告警

字段说明

字段 说明
body_bytes_sent 发送给客户端的http body的字节数。
client_ip 请求客户端IP。
host 优先从request请求参数中获取host,如取不到则从host header取值,如果还是取不到则以处理请求的后端server IP作为host。
http_host 请求报文host header的内容。
http_referer proxy收到的请求报文中http的referer header的内容。
http_user_agent proxy收到的请求报文中http的user-agent header的内容。
http_x_forwarded_for proxy收到的请求报文中x-forwarded-for的内容。
http_x_real_ip 真实的客户端IP。
read_request_time proxy读取request时间,单位为毫秒。
request_length 请求报文的长度,包括startline, http头报文和http body。
request_method 请求报文的方法。
request_time proxy收到第一个请求报文的时间到proxy返回应答之间的间隔时间,单位为秒。
request_uri proxy收到的请求报文的URI。
scheme 请求的schema,”http”或”https”。
server_protocol proxy收到的http协议的版本,如”HTTP/1.0”或”HTTP/1.1”。
slb_vport SLB的监听端口。
slbid SLB实例ID。
ssl_cipher 使用的cipher,如ECDHE-RSA-AES128-GCM-SHA256等。
ssl_protocol 建立SSL连接使用的协议,如TLSv1.2。
status proxy应答报文的status。
tcpinfo_rtt 跟client端的tcp rtt时间,单位:微秒。
time 日志记录时间。
upstream_addr 后端服务器的IP地址和端口。
upstream_response_time 从SLB向后端建立连接开始到接受完数据然后关闭连接为止的时间,单位:秒。
upstream_status proxy收到的后端server的response status code。
vip_addr vip地址。
write_response_time proxy写reponse的时间,单位为毫秒。