交互式分析一直是SLS主打的查询分析使用场景,事件系统则是实现交互式分析的手段,SLS可视化于19年就实现了基于图表的事件系统,用来完成从图表到外部系统的交互式分析。今年4月,SLS于进一步完善了整个交互式分析的能力,上线原始日志事件系统,进而更加完整地实现交互式分析的闭环。
连接资源与资源的纽带
我们期望用户在SLS一个平台中完成日志(Log)、监控(Metric)、Trace的所有可观测性数据存储与分析,所以要构建一站式的日志分析平台,必须通过一些手段将资源有机的结合起来进行分析。事件系统则是连接资源与资源的纽带,通过点击、拖拽、框选等一系列的用户事件输入,进而完成数据的上浮和下钻.
原始日志查看是最高频使用场景
SLS为用户提供丰富的机器数据接入、存储、分析、可视化、数据加工等能力,我们也可以轻松地在SLS控制台完成这一系列的工作。当用户完成了数据接入后,几乎80%的操作都在查询页面中进行原始日志的查看和分析,作为核心场景,支持事件系统势在必行。
1. 日志分词
在SLS中,我们支持text类型索引进行分词处理,每一个提取字段都会根据设置好的分词符进行切割,在控制台中我们就能得到切割好的关键词片段,在日志交互分析场景中,这些关键词就成为一个又一个的事件单元,基于这些事件单元,我们就能完成事件的设计和监听。
2. 事件设计
得到事件单元后,我们需要设计具体的事件行为。最早的SLS事件单元上,事件行为都是进行一次筛选查询,即在原始的查询语句中添加and
条件,从而进行关键词过滤分析,比如事件行为产生在以host
为key值的127.0.0.1
事件单元上,即会添加到查询:
2.1 预设事件
简单的关键词拼接明显不能满足原始日志事件的需求,我们做的第一步是丰富预设事件类型,以满足简单清晰的交互行为:
操作 | 说明 | 操作后结果 | |
---|---|---|---|
添加到查询 | 将事件单元的关键词通过and拼接后添加到查询和分析框中,并进行查询 | `* and host: "127.0.0.1" | SELECT status as dim, count(1) as c group by dim` |
从查询中删除 | 将事件单元的关键词通过not拼接后添加到查询和分析框中,并进行查询 | ` * and host: "127.0.0.1" | SELECT status as dim, count(1) as c group by dim` |
新建查询 | 删除查询和分析框中所有语句,按照事件单元的关键词新建查询语句,并进行查询 | `* and host: "127.0.0.1" | SELECT status as dim, count(1) as c group by dim ` |
2.2 自定义事件
预设事件更多还是在原始日志分析中形成一个自循环,和外部资源的链接则可以通过自定义事件来完成,为不同的关键词设置不同的事件单元行为,从而更深入地分析日志。建立与SLS现有的其他资源和外部地址的连接,我们准备了几种事件的类型:
- 打开日志库
- 打开快速查询
- 打开仪表盘
- 自定义Http链接
在类型上,配合SLS灵活的过滤语句操作和变量操作,对目标资源中涉及的到的查询分析语句进行改写,从而变换分析的维度,使得整个分析过程更加立体。下面用几个示例来演示如何利用原始日志的钻取来变换分析的维度。
事件模拟1:查询到一个Error的访问请求,想看一下这个ip在这个时间段到底产生了多少次访问请求
- 构建一个查看访问数的快速查询,并命名为访问数分析
- 构建一个自定义事件,查看该ip的访问数
此处配置3个地方:
- 时间范围设置为1个小时的分析
- 跳转到的快速查询配置为刚创建好的访问数分析
- 配置一个过滤语句,从而使得事件单元上获取到的remote_addr这个ip值能作为快速查询的过滤条件
- 演示事件的效果
事件模拟2:点击一个ip,查看ip的归属地
- 找到一个查询ip归属地网站,这里以https://www.ip138.com/iplookup.asp?ip=42.120.75.142&action=2 为例子,可以看到ip作为一个url参数被传递到网站上
- 配置remote_addr的一个新的事件,并跳转到这个网址去查看归属地
此处配置2个地方:
- 设置为自定义http链接
- 将ip后的参数替换为${remote_addr}占位符
- 演示事件的效果,点击的事件单元为113.27.233.145
3. 未来计划
对于SLS而言,我们的目标是让用户更加聚焦于日志的价值,致力于成为可观察性的统一平台,我们不仅仅是具备Logs、Metrics、Traces数据的采集和存储,更重要的是将这些数据进行关联分析,建立各类高价值的规则,那么事件系统必定为成为这些规则的触发器,我们期望SLS上你的数据一切皆可形成事件单元,链接不同的资源。后续,我们的事件配置会出现在Log、Metrics、Traces、图表、机器学习的各个地方,建立统一的配置交互,方便灵活扩展。
相关信息
知乎:https://zhuanlan.zhihu.com/aliyunlog
微信公众号:日志服务 or LogAnalytics
哔哩哔哩:https://space.bilibili.com/630680534
开发者社区(存储):https://developer.aliyun.com/group/storage/#/?_k=c756p3