阿里云负载均衡SLB可以对多台云服务器(ECS)进行流量分发,支持TCP的四层负载均衡和基于HTTP/HTTPS的七层负载均衡。使用SLB可以降低单台ECS异常时对业务的冲击,提升系统可用性。同时,结合弹性伸缩服务(Auto Scaling)动态扩容、缩容后端服务器可以快速应对业务流量的变化。

到达SLB的每一条访问请求会记录访问日志,该日志收集了所有发送到负载均衡的请求的详细信息,包括请求时间、客户端IP地址、延迟、请求路径和服务器响应等。负载均衡作为公网访问入口,承载着海量的访问请求,您可以通过访问日志分析客户端用户行为、了解客户端用户的地域分布、进行问题排查等。

通过日志服务采集SLB的访问日志,可以完成对HTTP/HTTPS的七层访问日志持续的监控、探测、诊断和报告,帮助您更全面的了解SLB实例。

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

功能优势

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

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

前提条件

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

操作步骤

  1. 登录日志服务控制台。
  2. 创建Project和Logstore后,按照页面提示进入数据接入向导

    也可以直接单击Logstore列表页面的数据接入向导图表进入配置流程。



  3. 选择数据类型。

    单击云产品日志下的SLB负载均衡,并单击下一步。

  4. RAM授权。

    按照页面提示,单击授权。在弹出的对话框,单击同意授权授权SLB访问日志服务。

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


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


  6. 查询分析&可视化。

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

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

后续操作

  • 日志实时查询

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

    图 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的时间,单位为毫秒。