背景
日志服务(SLS)
日志服务(Log Service,简称 SLS) 是阿里云提供的行业领先的日志大数据解决方案,一站式提供数据收集、清洗、分析、可视化、告警等功能,全面提升海量日志处理能力,实时挖掘数据价值,智能助力研发/运维/运营/安全等场景。
智能查询分析是数据中台重要的一环,SLS支持秒级查询10亿到千亿级别的日志数据,为万级开发者提供每日百亿级的查询服务。SLS非常适合于做监控报表/告警/运营探索式交互分析,更可以通过API调用集成数据分析能力,集成到第三方的可视化平台,BI工具,或自研程序。
SLS查询分析
SLS提供日志查询分析功能,该功能结合了SLS的查询能力和SQL计算能力。顾名思义,日志查询分析分为两部分:查询和分析。查询语句和分析语句以竖线(|)分割,查询语句的语法为日志服务专有语法,分析语句采用标准的SQL92语法。
查询语句|分析语句
其中,查询语句可单独使用,分析语句必须与查询语句一起使用。即分析功能是基于查询结果或全量数据进行的。
示例:
// 仅查询 status >200// 仅统计 *|SELECT status,count(*)AS PV GROUPBY status // 查询 + 统计 status >200|SELECT status,count(*)AS PV GROUPBY status
您还可以使用仪表盘展示统计分析的结果,如下图所示
痛点与动机
在企业业务数字化的背景下,SLS作为一站式的云原生观测分析平台,支持着企业各个角色(研发、运维、运营等)的数字化开发及管理需求。各企业用户实现数字化需求强依赖于SLS提供的查询分析能力。SLS查询分析兼容原生SQL语法,但编写SQL语法有较高的使用门槛。复杂的SQL语法让很多开发、运维人员感到头疼,更是让运营等非技术人员望而却步。
为了帮助用户改善查询分析体验,让更多不熟悉SQL语法的用户也能使用SLS进行日志分析,SLS推出了交互式查询分析功能(Data Explorer)。Data Explorer让用户只需一些简单的点击和选择操作即可完成复杂的日志分析场景,助力用户专注于业务分析之上,而无需关注SQL语法细节。
Data Explorer介绍
SLS日志分析分为查询和分析两部分,查询语句的语法为日志服务专有语法,分析语句采用标准的SQL92语法。对于很多用户而言,学习这两种语法需要较高的学习成本,尤其是较为复杂的SQL语法,更是让很多运维、开发人员头疼。如何基于SLS查询语法和SQL统计分析语法实现对应的业务需求成为了很多用户在实践中遇到的问题。
为了帮助用户简单、快速地构建查询分析语句,降低用户的学习成本,SLS推出了交互式查询分析(Data Explorer)功能,让用户无需关注语法细节也可轻松玩转日志分析。
1. 功能入口
登录日志服务控制台,在Project列表区域,点击进入目标Project。在日志存储 > 日志库页签中,点击进入目标Logstore,在查询和分析语句输入框中,点击右侧图标,唤起Data Explorer面板。
Data Explorer面板主要包含两个功能区:日志查询和统计分析,对应于SLS查询分析中的查询和分析两部分能力。用户可按需在两个功能区配置查询和统计分析条件。
2. 日志查询
用户可在日志查询功能区交互式地配置日志查询条件,查询框中会实时生成对应的日志查询语句。用户无需关注查询语法细节,也可轻松玩转日志查询。
关于Data Explorer中日志查询功能已在SLS Query Builder这篇文章中做了详细介绍,感兴趣的同学可以参考该文章,本文不再赘述。
3. 日志分析
用户可在统计分析功能区交互式地配置日志分析条件,查询框中会实时生成对应的SQL统计分析语句。用户无需关注SQL语法细节,也可轻松玩转日志统计分析。
3.1 概述
基于目前SLS用户的高频查询分析需求与问题,SLS Data Explorer提供了如下3大类、7种内置的统计分析场景(持续扩充中)
统计分析类型 |
统计分析场景 |
说明 |
基础分析 |
字段筛选&过滤 |
支持筛选及重命名字段(即SQL语法中的SELECT)、按条件过滤结果(WHERE)、对结果进行排序(ORDER BY)以及限制返回结果条数(LIMIT) |
基础统计 |
指标统计 |
统计一个或多个指标,如日志条数、最大值、方差等。支持的指标类型持续扩展中。 |
分组统计 |
按一个或多个字段进行分组,分别统计每个分组的指标(即SQL语法中的GROUP BY)。 |
|
高级统计 |
Top N |
统计某字段取值频率最高的N个值,并计算每个值的出现频率及百分占比。 |
IP分布 |
统计给定IP字段的IP所属国家、省份、城市、运营商或者内外网的分布情况(数量及占比)。 |
|
时间趋势 |
按特定时间粒度计算指标,统计指标随时间的变化趋势。 例如按照每分钟的时间粒度计算请求时间的平均值。 |
|
同环比 |
对比给定字段值相较于特定时间周期之前的变化情况。 |
用户既可以挑选其中一个场景进行使用,也可对多个场景进行组合嵌套使用,完成复杂的统计分析场景。
目前SLS Data Explorer共提供了三种使用模式:单场景统计分析、多场景嵌套统计分析以及双向同步,用于满足用户不同的日志分析场景需求。接下来分别介绍这三种模式的用法。
3.2 单场景统计分析
- 在Data Explorer的统计分析面板中选择需要的分析场景,点击便可进入该场景的配置步骤。此处以IP分布为例
- 在IP分布的配置面板中,用户只需选择要统计的IP字段以及要统计的分布维度(国家、省份、城市分布等),即可实时在查询框中生成对应的SQL分析语句
- 点击【查询/分析】按钮,获取分析结果,并选择统计图表类型为地图,便可将IP字段client_ip的省份来源分布情况以可视化的形式展示出来
在上述步骤中,全程只需几次简单的点击和选择,便可完成相对复杂的IP地理位置分布的分析场景,无需再去编写相对复杂的嵌套SQL分析语句。
3.3 多场景嵌套统计分析
用户在使用Data Explorer时,除了可以挑选一个分析场景进行使用外,也可以对多个场景进行组合嵌套使用,来完成复杂的统计分析场景。在多场景嵌套时,后一个场景基于前一个场景的统计分析结果进行处理。
以如下日志分析需求为例:
“某网站访问日志中的duration字段记录了每个请求的耗时,现在需要统计过去一段时间内所有请求的平均耗时,以及同比昨天同一时间段的变化情况。”
为了完成上述日志分析场景,用户只需要在Data Explorer中组合使用指标统计和同环比两个场景即可。
- 选择并配置指标统计:统计duration字段的平均值,并命名为avg_time
- 在指标统计的基础上,添加嵌套场景同环比。在同环比的配置中,选择指标统计中统计出的平均耗时字段avg_time作为比较字段,并配置比较时间区间为1天、比较结果类型为相对变化百分比。
- 点击【查询/分析】按钮,获取分析结果,并选择统计图表类型为单值同比环比图,便可将网站请求的平均耗时以及同比昨天同一时间段的变化情况展示出来。
在上述步骤中,全程只需几次简单的点击和选择,便可完成相对复杂的同环比分析场景,而其背后的SQL分析语句包含三层SQL语句的嵌套,编写起来难度较大,这大大降低了用户的使用门槛。
3.4 双向同步
为了最大程度的保证用户使用的灵活性,Data Explorer面板上配置的统计分析条件与用户在查询框中手动输入的SQL语句支持双向互转。用户既可以通过Data Explorer生成SQL分析语句,也可以在查询输入框中直接编写SQL语句或者修改面板生成的SQL语句。Data Explorer会解析用户手动输入的SQL语句并转化成面板上配置条件。
Data Explorer日志分析最佳实践
日志分析场景1:在网站访问日志中,统计过去一天内网站请求的每小时平均耗时,随时间的变化情况。
- 面板配置
- 分析结果
日志分析场景2:在网站访问日志中,统计HTTP请求方法的TOP5取值分布。
- 面板配置
- 分析结果
日志分析场景3:在RDS数据库审计日志中,统计每个RDS实例的SQL平均执行延迟情况。
- 面板配置
- 分析结果
日志分析场景4:在RDS数据库审计日志中,统计执行频率TOP10的SQL语句及其执行次数,并统计每个SQL语句同比昨天的执行次数的变化情况。
- 面板配置
- 分析结果
总结
在企业业务数字化的背景下,SLS作为一站式的云原生观测分析平台,支持着企业各个角色(研发、运维、运营等)的数字化开发及管理需求。各企业用户实现数字化需求强依赖于SLS提供的查询分析能力。SLS查询分析兼容原生SQL语法,但编写SQL语法有较高的使用门槛。复杂的SQL语法让很多开发、运维人员感到头疼,更是让运营等非技术人员望而却步。
为了帮助用户改善查询分析体验,让更多不熟悉SQL语法的用户也能使用SLS进行日志分析,SLS推出了交互式查询分析功能(Data Explorer)。Data Explorer让用户只需一些简单的点击和选择操作即可完成复杂的日志分析场景,助力用户专注于业务分析之上,而无需关注SQL语法细节,快来体验吧!
对我们工作感兴趣的,可以通过如下方式了解更多,谢谢关注!
- SLS首页:https://www.aliyun.com/product/sls
- 知乎:https://zhuanlan.zhihu.com/aliyunlog
- 微信公众号:日志服务 or LogAnalytics
- 哔哩哔哩:https://space.bilibili.com/630680534