投递CDN实时日志到SLS来分析用户访问数据

本文介绍如何使用实时日志功能对用户访问日志进行分析。

概述

阿里云CDN产品的实时日志功能是CDN产品与SLS产品联合推出的一项功能,是一种时效性非常高(延迟在3分钟左右)的日志数据处理服务,能够将CDN节点上采集到的用户访问日志实时推送至SLS日志服务,然后可以通过SLS来存储和分析用户访问数据。在使用阿里云CDN产品来加速网站域名访问速度的情况下,用户访问网站的图片、视频等资源时,CDN会记录用户的访问日志,如果您需要对用户访问日志进行分析来了解用户构成、访问质量或者快速定位问题,您可以使用实时日志功能来快速实现。

前提条件

CDN提供的实时日志与离线日志服务的区别

  • 日志延迟

    CDN实时日志为实时采集的日志数据,日志数据延迟不超过3分钟,而离线日志的数据延迟通常在24小时之内。

  • 日志分析

    CDN实时日志打通了SLS日志服务的日志转存和日志分析能力,预制了CDN基础数据、CDN错误分析、CDN热门资源、CDN用户分析这四张常用分析报表,也支持自定义日志分析策略,可以一站式提供日志存储和日志分析能力,而离线日志目前只支持日志转存OSS云存储,尚未打通日志分析能力。

实时日志服务的优势

  • 日志延迟小

    日志数据延迟不超过3分钟,可以帮助用户您快速对访问日志进行分析,及时发现问题和决策应对。

  • 一站式服务

    传统的离线日志分析模式,需要用户将日志下载,再重新上传至数据仓库,然后在数据仓库进行一系列的清洗和数据模型定义,这一系列操作处理完以后才能进行数据分析,整个过程需要的人力较多,时间较长;CDN实时日志打通了SLS日志服务的日志转存和日志分析能力,免去传统模式下繁琐的离线日志分析流程。

适用场景

实时日志可以帮助您分析加速域名遇到的异常问题,也可以帮助您了解用户的访问情况。阿里云CDN实时日志在提供预制日志分析报表的同时,还支持自定义日志分析策略,可以满足不同场景下的需求。

预制的日志分析报表

日志分析场景

报表作用描述

CDN基础数据

该数据可以帮助您可以快速了解到CDN整体的服务质量以及终端用户的访问效率(命中率、访问延时、下载速度等),同时也可以在服务质量出现异常情况下及时进行处理。

CDN访问错误

该数据可以帮助您在应用访问出现异常时,快速定位到CDN服务问题的源头,例如:部分URI问题、源站出现故障、部分节点不可用、部分省份网络问题、部分运营商网络问题等。

CDN热门资源

该数据可以帮助您更好地了解热门资源情况,分析出热门域名、热门URI、热门省份、热门运营商等,您也可以从热门数据了解到您的运营活动效果是否正常、热点时间内流量的上涨是否符合预期,以帮助您及时调整运营策略。

CDN用户构成

该数据可以帮助您更好地了解网站的用户构成,包括用户的客户端类型、省份、运营商等,也能够统计出访问TOP用户、下载量TOP用户。

在实时日志功能页面找到需要分析日志的Project名称,然后单击查看报表即可进入日志分析报表模板的查看页面。

CDN投递SLS适用场景

在数据查询模板页面,默认情况下查询的是全量域名的数据,也可以查询指定域名或者URI的数据。

CDN投递SLS适用场景2

具体使用方法您可以参考以下几个章节:

自定义日志分析

在预制的日志分析报表无法满足您的需求时,您可以使用SLS产品强大的日志分析能力来实现自定义日志分析。

例如:查看响应状态码为499的域名排行榜、查看响应状态码为502的域名排行榜。

在实时日志功能页面找到需要分析日志的Project名称,然后单击日志分析即可进入自定义日志分析功能的页面。

自定义日志分析

在自定义分析界面,您可以在搜索框里面输入查询语句直接查询日志数据(通常适用于比较复杂的查询条件),也可以直接单击左侧原始日志栏的日志字段来过滤日志(通常适用于比较简单的过滤条件)。

自定义日志分析2

具体使用方法您可以参考:自定义报表

创建实时日志推送Project

您可以参考配置实时日志推送创建一个SLS日志服务的project,用于存储CDN产品指定域名(例如:aliyun.example.com)推送的实时日志。

创建成功的效果如下图,Project名称为project-example,Logstore名称为project-example,日志存储区域为cn-hangzhou(华东1-杭州)。

创建实时日志推送project

预制报表:CDN基础数据

CDN基础数据可以帮助您可以快速了解到CDN整体的服务质量以及终端用户的访问效率(命中率、访问延时、下载速度等),同时也可以在服务质量出现异常情况下及时进行处理。

包括以下数据(可以查看总的数据,也可以按域名或者URI查看):

  • 健康度:响应正常的状态码总数占比。

  • 缓存命中率:资源的平均缓存命中率(按字节数来统计的命中率)。

  • 下载速度:资源的平均下载速度。

  • 访问状态:每一种响应状态码的占比,可以用于快速查看当前异常状态码的占比。

  • 访问延时分布:每一个延时段的占比。

  • 请求带宽:分钟粒度的带宽值。

  • 访问次数/人数:PV、UV值。

  • 请求命中率:按请求数来统计的命中率。

  • 访问延时:用于下载资源的平均访问延时。

CDN基础数据CDN基础数据2

预制报表:CDN访问错误

CDN访问错误数据可以帮助您在应用访问出现异常时,快速定位到CDN服务问题的源头,例如:部分URI问题、源站出现故障、部分节点不可用、部分省份网络问题、部分运营商网络问题等。

包括以下数据(可以查看总的数据,也可以按域名或者URI查看):

  • 错误域名访问Top10:按不同域名访问产生的错误占比统计Top域名。

  • 错误URI访问Top10:按不同URI下产生的错误占比统计Top URI。

  • 请求错误百分比:分时间统计4xx、5xx状态码的占比。

  • 错误请求状态分布:统计各个状态码的数量、占比。

  • 错误运营商统计:统计不同运营商的4xx、5xx状态码数量。

  • 错误按省份统计:统计不同省份的4xx、5xx状态码数量。

  • 错误详情(4xx):统计不同省份、运营商的4xx状态码数量、占比。

  • 错误详情(5xx):统计不同省份、运营商的5xx状态码数量、占比。

  • 错误按客户端分布:统计不同的客户端UA(user-agent)对应的4xx、5xx状态码数量、占比。

CDN访问错误1CDN访问错误2CDN访问错误3

预制报表:CDN热门资源

CDN热门资源数据可以帮助您更好地了解热门资源情况,分析出热门域名、热门URI、热门省份、热门运营商等,您也可以从热门数据了解到您的运营活动效果是否正常、热点时间内流量的上涨是否符合预期,以帮助您及时调整运营策略。

包括以下数据(可以查看总的数据,也可以按域名或者URI查看):

  • 访问次数Top域名:按总访问次数占比统计Top域名。

  • 下载流量Top域名:按总下载流量占比统计Top域名。

  • 热门访问URI:统计各个URI的访问次数、访问人数、下载总量。

  • 热门访问来源:统计热门Referer来源域名,并且记录访问次数、UV、占比。

  • 全国访问次数统计:分别统计各个省份的平均访问次数。

  • 全国下载网速:分别统计各个省份的平均下载速度。

  • 省份统计:分别统计各个省份的总访问次数、总下载流量、平均下载速度。

  • 运营商流量和速度:分别统计各个运营商的下载总量和平均下载速度。

  • 运营商统计:分别统计各个运营商的总访问次数、总下载流量、平均下载速度。

CDN热门资源1CDN热门资源2

预制报表:CDN用户构成

CDN用户构成数据可以帮助您更好地了解网站的用户构成,包括用户的客户端类型、省份、运营商等,也能够统计出访问TOP用户、下载量TOP用户。

包括以下数据(可以查看总的数据,也可以按域名或者URI查看):

  • 访问次数:总访问次数,PV。

  • 访问人数:总访问人数,UV。

  • 访问地区分布:分别统计各个省份的访问次数、占比。

  • 访问客户端统计:分别统计各个客户端类型的访问次数、占比。

  • 运营商次数统计:分别统计各个运营商的总访问次数、占比。

  • 下载量Top用户:按IP统计用户的总访问数、错误访问数、下载总量。

  • 有效访问Top用户:按IP统计用户的总访问数、错误访问数、下载总量(去掉4xx、5xx这些无效访问)。

CDN用户构成

订阅报表模板数据

如果您需要SLS日志服务把报表模板的数据定期发送给您,那么您可以使用订阅功能。

操作步骤

  1. 以CDN基础数据页面为例,单击右上角的订阅,然后单击创建订阅报表模板数据1

  2. 在侧滑出现的配置窗口中输入订阅名称频率全局时间,然后单击下一步订阅报表模板数据2

  3. 通知列表的下拉菜单中选择通知方式并填写相关信息后,单击提交即可创建成功。

    通知方式目前支持邮件、WebHook-钉钉机器人、WebHook-飞书机器人、WebHook-企业微信机器人和微信。

    订阅报表模板数据3

自定义报表

  • 示例1:查看最近30天内,响应状态码为499的域名排行榜。

    日志分析语句:return_code = 499| select domain , count(*) as c group by domain order by c desc limit 10

    示例1

  • 示例2:查看最近30天内,响应状态码为502的域名排行榜。

    日志分析语句:return_code = 502| select domain , count(*) as c group by domain order by c desc limit 10

    示例2

  • 示例3:查看最近30天内,访问URI为/cpu的日志数据。

    可以直接单击左侧原始日志栏的URI字段,然后单击/cpu即可过滤出需要的日志。

    示例3