介绍:阿里云日志服务致力于为用户提供统一的可观测平台,支持日志、时间序列、轨迹数据的查询和存储。用户可以根据收集到的各种数据构建统一的监控和业务仪表盘,及时发现系统异常,感知业务趋势。但是,随着采集数据量的不断增长,尤其是遇到业务高峰时,大型报表的展示会出现明显的延迟,无法及时查看重要数据。ScheduledSQL支持数据的时序分析、聚合数据的存储、数据的投影和过滤,执行的分析结果存储在用户指定的日志库或时序库中,供用户后续分析。由于聚合后的数据量会比之前小很多,非常适合即时数据分析和大规模展示。背景阿里云日志服务致力于为用户提供统一的可观测平台,支持日志、时间序列、轨迹数据的查询和存储。用户可以根据收集到的各种数据构建统一的监控和业务仪表盘,及时发现系统异常,感知业务趋势。但是,随着采集数据量的不断增长,尤其是遇到业务高峰时,大型报表的展示会出现明显的延迟,无法及时查看重要数据。ScheduledSQL支持数据的时序分析、聚合数据的存储、数据的投影和过滤,执行的分析结果存储在用户指定的日志库或时序库中,供用户后续分析。由于聚合后的数据量会比之前小很多,非常适合即时数据分析和大规模展示。下面以服务的请求成功率为例,介绍如何基于ScheduledSQL加速行情报表。解决方案假设我们需要以一分钟为粒度查看一小时内请求的成功率。在构建报表时,需要根据当前不足一分钟的部分数据配置实时报表,针对一分钟之前已经满的历史数据配置历史报表。当然,如果用户觉得一分钟的数据延迟可以接受,也可以只配置历史报表,不配置实时报表。如果当前时间为11:09:47,需要查看10:11:00-11:09:00分钟级请求成功率,11:09:00-11:09:00秒级请求成功率11:09:47。日志内容历史报表显示分钟级请求成功率如图。可以配置分钟级的ScheduledSQL任务,计算每分钟的成功率,直接通过历史报表展示出来。因为只需要直接拉取聚合结果,不需要即时计算,显示速度大大提升。实时报表显示秒级请求成功率如图,因为只需要计算不到一分钟的数据,而不是一小时的数据,所以速度也有所提升。下面的配置仍然以请求成功率为例,介绍如何通过ScheduledSQL加速报表。创建目标时序库,首先需要创建一个目标时序库,用于存储ScheduledSQL的聚合数据。创建定时SQL任务在存储服务请求的数据logstore查询界面,输入查询语句,点击查询/分析按钮,查询分析执行成功后点击创建定时SQL按钮。*|select(__time__-__time__%60)astime,sum(IF(status=200,1,0))*1.0/count(*)ASsuccess_ratiofromloggroupbytimeorderbytime计算配置填写对应的jobName和职位描述,写入方式,选择日志库导入时序库;索引列是指选择结果中的某一列作为时序结果,这里选择success_ratio;labels是指选择结果中哪些列作为时序数据标签,此处留空即可;时间栏是指时序数据的时间,这里选择时间;选择刚刚为目标库创建的目标时序库;调度配置因为我们需要在分钟级别查看服务请求的成功率,所以调度间隔和SQL时间窗口都是分钟粒度的要求。用户也可以根据自己的需要进行调整。调度间隔选择1分钟;SQL时间窗口填@m-1m~@m;单击“确定”创建任务以查看任务详细信息。单击作业菜单中的计划SQL以查看计划SQL任务列表。点击刚刚创建的任务名称,可以查看任务执行详情。任务执行成功后,我们就可以创建历史报表了。配置历史报告*|selectpromql_query_range('success_ratio')frommetricslimit1000在目标时序数据库的查询界面,执行查询语句,点击AddtoDashboard,创建历史报表。配置实时报告*|select__time__astime,sum(IF(status=200,1,0))*1.0/count(*)ASsuccess_ratiofromloggroupbytimeorderbytime在存储服务请求的数据logstore查询界面,输入查询statement,选择时间范围1分钟,点击AddtoDashboard,创建实时报表:总结ScheduledSQL为用户定期分析数据、存储聚合数据、投影和筛选数据提供了极大的便利。用户还可以使用ScheduledSQL定时执行聚合任务,减少实时查询所需的数据量,从而加快行情展示。原文链接本文为阿里云原创内容,未经许可不得转载。
