背景
日志服务(SLS)
日志服务(Log Service,简称 SLS) 是阿里云提供的行业领先的日志大数据解决方案,一站式提供数据收集、清洗、分析、可视化、告警等功能,全面提升海量日志处理能力,实时挖掘数据价值,智能助力研发/运维/运营/安全等场景。
智能查询分析是数据中台重要的一环,SLS支持秒级查询10亿到千亿级别的日志数据,为万级开发者提供每日百亿级的查询服务。SLS非常适合于做监控报表/告警/运营探索式交互分析,更可以通过API调用集成数据分析能力,集成到第三方的可视化平台,BI工具,或自研程序。
SLS查询分析
SLS的日志查询分为两部分:查询语句和分析语句。查询语句和分析语句以竖线(|)分割,查询语句的语法为日志服务专有语法,分析语句采用标准的SQL92语法。
查询语句|分析语句
语句类型 |
说明 |
查询语句 |
查询语句用于指定日志查询时的过滤规则,返回符合条件的日志。 查询语句可以为关键词、数值、数值范围、空格、星号(*)等。 如果为空格或星号(*),表示无过滤条件。更多信息,请参见查询语法。 |
分析语句 |
分析语句用于对查询结果或全量数据进行计算和统计。更多信息,请参见分析概述。 |
其中,查询语句可单独使用,分析语句必须与查询语句一起使用。即分析功能是基于查询结果或全量数据进行的。
示例:
// 仅查询 status > 200 // 仅统计 * | SELECT status, count(*) AS PV GROUP BY status // 查询 + 统计 status > 200 | SELECT status, count(*) AS PV GROUP BY status
Query Builder介绍
SLS查询语句是日志服务的专有语法,为了帮助用户简单、快速地构建查询语句,降低用户的学习成本,SLS推出了查询辅助输入(Query Builder)功能,让用户无需关注语法细节也可完成查询。
(注:当前版本只支持查询语句,SQL分析语句的辅助输入功能SQL Builder将在后续版本推出,敬请期待)
1. 功能入口
登录日志服务控制台,在Project列表区域,点击进入目标Project。在日志存储 > 日志库页签中,点击进入目标Logstore,在查询和分析语句输入框中,点击右侧图标,唤起Query Builder面板。随后在配置查询条件面板中,配置查询条件即可。
2. 使用模式
- 简洁模式
简洁模式中的多个查询条件是平铺展示的,各个查询条件之间为同级关系。
- 高级模式
高级模式中的多个查询条件是换行展示的,各个查询条件之间可设置层级关系,即对应于查询语句中的括号运算符。用户可以通过点击且、或两侧的<图标或>图标,定义各个查询条件之间的层级关系。
- 双向同步
为了最大程度的保证用户使用的灵活性,Query Builder的查询条件与用户手动输入的查询语句是实时双向同步的。用户既可以通过Query Builder生成查询语句,也可以在查询框中修改生成的查询语句。Query Builder会实时解析用户手动输入的查询语句并同步到面板上。
3. 功能概述
3.1 查询类型
- 全文查询和字段查询
查询方式 |
说明 |
示例 |
全文查询 |
配置全文索引后,日志服务根据用户设置的分词符将整条日志拆分成多个词。用户可以指定关键字(字段名、字段值)和查询规则进行查询。 |
|
字段查询 |
配置字段索引后,用户可以指定字段名称和字段值(Key:Value)进行查询。根据字段索引中设置的数据类型,用户可以进行多种类型的基础查询和组合查询。 |
- 精确查询和模糊查询
查询方式 |
说明 |
示例 |
精确查询 |
使用完整的词进行查询。 |
|
模糊查询 |
使用通配符*或者?来进行模糊查询,参考模糊查询 |
3.2 逻辑连接符
逻辑连接符 |
说明 |
且 |
对应于查询语法中的and运算符 |
或 |
对应于查询语法中的or运算符 |
缩进 |
在高级模式下,您可以使用缩进设置各个查询条件之间的层级关系。对应于( )运算符。 |
所有值 |
为一个字段设置了多个查询值时,会出现此逻辑连接符。对应于and运算符。 |
任意值 |
为一个字段设置了多个查询值时,会出现此逻辑连接符。对应于or运算符。 |
示例
3.3 运算符
Query Builder功能支持如下运算符。更多信息,请参见运算符。
- 针对全文查询,提供包含、不包含运算符。
- 针对text类型的字段,提供包含、不包含、(字段)存在、(字段)不存在运算符。
- 针对long类型或double类型的字段,提供=、!=、>、<、>=、<=、(字段)存在、(字段)不存在运算符。
4. 使用示例
示例1
- 查询包含GET、PUT、POST中任意值的日志
- 查询同时包含GET、PUT、POST中的日志
示例2
- 查询user_agent字段的值中包含Chrome的日志
- 查询slbid字段的值以slb-开头且client_ip字段的值是在127.0.0.x范围内的日志
示例3
查询请求时间小于1秒的成功请求的日志中包含SLS字符串的日志
常见问题
简洁模式和高级模式有什么区别?
- 简洁模式中的多个查询条件是平铺展示的,各个查询条件之间为同级关系。
- 高级模式中的多个查询条件是换行展示的,各个查询条件之间可设置层级关系,即对应于查询语句中的括号运算符。
是否支持构建SQL分析语句?
目前,Query Builder功能只支持构建查询语句,不支持构建SQL分析语句。我们将在后续版本推出针对SQL分析语句的构建能力,敬请期待后续版本。
如果您在输入框中输入了SQL分析语句,Query Builder面板将消失且面板唤起按钮被禁用。删除SQL分析语句部分后,可重新打开Query Builder面板。
更多Query Builder使用过程中的问题参考常见问题。
写在最后
SLS Query Builder可以帮助用户简单、快速地构建查询语句,让用户无需关注语法细节也可完成查询。正如前面提到,SLS的查询分析能力由查询语句和分析语句两部分构成,分析语句能够在秒级查询的基础上进行实时统计分析,适合于做监控报表/告警/运营探索式交互分析,更可以通过API调用集成数据分析能力,集成到第三方的可视化平台,BI工具,或自研程序。
相较于查询语句,分析语句具有更强大的能力和更丰富的应用场景。SLS分析语句采用标准的SQL92语法,相较于查询语法,使用门槛和学习成本更高,因此我们也将在不久的将来推出针对SQL分析语句的辅助输入工具SQL Builder,敬请期待!
对我们工作感兴趣的,可以通过如下方式了解更多,谢谢关注!
- SLS首页:https://www.aliyun.com/product/sls
- 知乎:https://zhuanlan.zhihu.com/aliyunlog
- 微信公众号:日志服务 or LogAnalytics
- 哔哩哔哩:https://space.bilibili.com/630680534