日志服务高级图表
一张好图胜过千言万语。所谓的高级图表,并不是指使用上的高级,而是相对于一些基础图表(线图、饼图),在一些特殊场景下使用它们能发挥出来更好的效果。
如图所示,这些高级图表目前在阿里云日志服务控制台都是已经支持的。下面将简单介绍这些图表,以及它们的使用场景。
变更图
简介:通过绘制每个数据点的X轴起始值来显示时间范围。使用的每个时间值 被绘制为条形柱的上限和下限。这里需要注意的是,X轴的数值必须是Unix时间戳。x轴的显示会根据时间戳的范围,进行格式化,动态的显示成时间字符串。
使用场景:延迟分布、trace分析
实践:通过变更图表,分析网站请求超时问题。
* | select min(__time__) - random(4000) as startTime, max(__time__) + random(4000) as endTime , request_uri group by request_uri
查询结果:
这个数据是一个简单的mock数据。request_uri表示请求地址,startTime表示请求开始时间,endTime表示加载完成时间。类似这样的场景,就可以利用我们的变更图了。效果图如下。
通过观察蓝色柱状的长度,可以迅速发现那些地址的加载时间存在异常。
漏斗图
简介:漏斗图适用于业务流程比较规范、周期长、环节多的单流程单向分析,通过漏斗各环节业务数据的比较能够直观地发现和说明问题所在的环节,进而做出决策。漏斗图用梯形面积表示某个环节业务量与上一个环节之间的差异。漏斗图从上到下,有逻辑上的顺序关系,表现了随着业务流程的推进业务目标完成的情况。
使用场景:流程流量分析
以电商网站用户操作的信息为例。我们可以看到用户从“浏览网站”到“完成交易”整体的转换情况。通过漏斗图,我们能看到各个流程上转换的情况,这可以帮助我们快速的找出那个环节出了问题,需要优化的环节是那部分。
实践:模拟一个帮助文档的点击信息日志,通过点击总数,来分析每个页面之间的点击转换情况。
通过查询语句,查询出文档每一页的点击情况。
event.type:click and (event.target: register or event.target: button_19 or event.target:button_18 or event.target: button_17 or event.target: button_16) | select "event.target" as target , count(1) as click_count group by target order by strpos('register,button_19,button_18,button_17,button_16' , "event.target")
查询结果:
这里数据表示从第一页到最后一页的总点击量。
通过漏斗图的展示,可以知道有多少用户是完整看完了帮助文档,以及整个流程自上而下的点击量变化。这能帮助我们快速分析出大部分用户是在哪一个页面停止继续浏览。然后针对性的对这个页面进行优化,进步一增强用户的引导,提升文档整体的完整阅读率。
气泡图
简介:气泡图通常用于比较和展示不同类别圆点(这里我们称为气泡)之间的关系,通过气泡的位置以及面积大小。从整体上看,气泡图可用于分析数据之间的相关性。气泡图主要由三个维度组成:X轴,Y轴,数值列(对应气泡的大小)
使用场景:监控,异常分析
实践:通过气泡图分析请求的异常情况,我们首先预设一些请求次数上限的阈值。通过超出阈值来判断异常情况。
查询语句:
* | select date_format(from_unixtime(__time__ - __time__% 60), '%H:%i') as minute, case
when method = 'GET' and COUNT(1) > 9000 then 3 when method = 'GET' and COUNT(1) > 8500 then 2 when method = 'GET' and COUNT(1) > 8000 then 1
when method = 'POST' and COUNT(1) > 3000 then 3
when method = 'DELETE' and COUNT(1) > 1500 then 3
else 0 end as level, method group by minute, method order by minute asc limit 1000
查询结果:
这里通过查询语句,将每分钟GET请求超过9000,8500,8000的异常等级分别用level:3,2,1来表示。然后通过level作为气泡图的数值列,就可以得到一张请求异常分析的图表了。
通过气泡图,我们可以快速分析出那些时间点对应的请求发生了异常,以及异常发生的严重程度。
迷你图
简介:在数据处理中,图表往往会比较直观形象的反映数据的变化,但是普通图表占空间比较大,排版也需要花费很多时间,因此迷你图应运而生。简而言之,迷你图就是在表格中显示基础图形。迷你图更多的是为了展示指标趋势的变化,对于图形的X轴和Y轴具体信息它不会显示出来,所以我们在使用它的时候,需要考虑到这点。还有一点需要注意的是,绘制迷你图,我们要确保数据是一个数字数组类型。
使用场景:多个指标的趋势变化
实践:以疫情数据分析为例,我们想知道每个国家的病例发展趋势,并在一个大盘中显示出来。如果采用单个基础图形进行绘制,这需要占用很大的空间,而且浏览器加载也会较慢。迷你图正好解决了这个问题。
查询语句:
version: test and type: country_stat | select "国家", "确诊", "确诊趋势", "治愈趋势", "疑似趋势" from (select country as "国家", quezhen as "确诊", quezhen_hist as "确诊趋势", zhiyu_hist as "治愈趋势", yisi_hist as "疑似趋势" from log l right join (select max(version) as version from log) r on l.version = r.version order by quezhen desc, zhiyu desc, dead desc, yisi desc, country)
查询结果:
通过查询,得到了,"确诊趋势", "治愈趋势", "疑似趋势",三个趋势的数字数组信息。然后进行迷你图相关的属性配置。
最后生成图表如下:
通过一张图表,就能让我们一眼看到大量数据的趋势变化,这种可读性是非常强的。
时间轴
简介:时间轴是依据时间顺序,把一方面或多方面的事件串联起来,形成相对完整的记录体系。在时间轴上面,我们可以清晰的观测到数据在某一个时间点的数据情况,它的优点主要是具有连续性和准确性。
使用场景:新闻动态类场景
实践:还是以疫情数据分析为例。通过时间轴来展示疫情的实时动态。
查询语句:
type: news | select news_time as "发布时间", author as "发布者", title as "标题", source as "来源网站",
case when strpos(url, 'https://') = 1 then substr(url, 9) when strpos(url, 'http://') = 1 then substr(url, 8) else url end as url from log l right join
(select max(version) as version from log) r on l.version = r.version order by news_time asc limit 50
查询结果:
对于这类信息,我们更多关心的是新闻标题和发布者,以及新闻发布时间。我们可以在时间轴属性配置里面,在“显示列”中选择“标题”和“发布者”,然后在提示列中选择完整的列。
最终生成的图表如下:
鼠标放上去显示详细信息:
写在最后
这里关于高级图表的使用,是日志服务可视化中很小一部分功能。目前日志服务支持的可视化组件类型有30+,覆盖了绝大部分数据可视化场景。日志服务可视化目前经历了大量场景的锤炼,在集团内部得到了广泛使用。如果您有更好的想法或者建议,欢迎加入钉钉群进行讨论。