2022年AIOps热身赛数据可视化详解

简介: 本次介绍2022年AIOps国际挑战赛--热身赛数据的可视化详解,希望可以更好的帮助选手使用SLS平台进行赛题数据的理解。接下来主要介绍下,如何不写一行代码就可以在SLS平台上实现数据的可视化部分。我们提供的DEMO已经同步发不到网上(https://sls.aliyun.com/),各位可以去查阅。

本次介绍2022年AIOps国际挑战赛--热身赛数据的可视化详解,希望可以更好的帮助选手使用SLS平台进行赛题数据的理解。接下来主要介绍下,如何不写一行代码就可以在SLS平台上实现数据的可视化部分。我们提供的DEMO已经同步发不到网上(https://sls.aliyun.com/),各位可以去查阅。

操作概览

拿到03-06的赛题数据,稍微看一下,如何不写一行代码就可以完成数据的可视化。在本文中,我们会根据下图的流程进行数据的流转,在1个小时内完成数据的结构化和可视化。这里你会涉及到两种存储产品和SLS中的相关功能:

  • 阿里云 OSS/SLS
  • 阿里云SLS功能
  • Ingestion - 数据导入
  • ETL - 数据加工(行处理)
  • 查询和分析 - SQL(结构化批处理)
  • 可视化 - 仪表盘/过滤器/下钻(DrillDown)

赛题数据导入

在成都的OSS中将赛题数据上传到对应的Bucket中,按照不同的目录中进行存储。

这里有几个注意事项:

  • 相同的Bucket目录下文件数据的结构要保持一致

我们在SLS的Logstore中使用Ingestion功能将数据导入到SLS,具体的操作如下:

具体的导入步骤可以参考【相关资料】的数据导入的相关配置。我们通过上面配置操作,将Trace/Log/Metric中的OSS数据分别导入到不同的Logstore中。

原始数据的Logstore

  • iops-03-06-demo-log
  • iops-03-06-demo-trace
  • iops-03-06-demo-metric

通过ETL加工原始数据

接下来,我们使用ETL进行原始数据的处理,我们清晰的看下每类数据要如何处理

  • 将导入数据的时间修改成事件时间
  • 对Log中不同的LogName下的内容进行正则解析,提取特定的字段信息
  • 对Trace数据进行格式转换,转换成OpenTelemetry协议的格式

对原始Log数据进行处理

# log_name:log_cartservice-envoy_gateway
e_set("__time__", v("timestamp"), mode="overwrite")e_if(    op_eq(v("log_name"),"log_cartservice-envoy_gateway"),    e_regex("value",'"(?<method>[^"]*)" (?<http_code>[0-9]*) - (?<request_type>[^ ]*) - "[^"]*" [0-9]* [0-9]* [0-9]* [0-9]* "[^"]*" "(?<client>[^"]*)" "(?<request_id>[a-zA-Z0-9\-\:]*)" "(?<AUTHORITY>[a-zA-Z0-9\-\:\.]*)" "(?<UPSTREAM_HOST>[a-zA-Z0-9\-\:\.]*)" (?<UPSTREAM_CLUSTER>[^ ]*) (?<UPSTREAM_LOCAL_ADDRESS>[^ ]*) (?<DOWNSTREAM_LOCAL_ADDRESS>[^ ]*) (?<DOWNSTREAM_REMOTE_ADDRESS>[^ ]*) (?<REQUESTED_SERVER_NAME>[^ ]*) (?<ROUTE_NAME>[^ ]*)',),)

对这条数据进行测试

{"log_id":"7OWtYX8BDiVcQfZwEl7n","__time__":1647141891,"__topic__":"","__pack_meta__":"3|MTY0NzEzOTg3NDc0NDQzNTI3OA==|680|679","__tag__:__object__":"2022-03-06/log/log_filebeat-testbed-log-envoy_2022.03.06.csv","log_name":"log_cartservice-envoy_gateway","__source__":"iops2020","cmdb_id":"cartservice-0","value":"\"POST /hipstershop.CartService/GetCart HTTP/2\" 200 - via_upstream - \"-\" 43 59 1 1 \"-\" \"grpc-go/1.31.0\" \"0cfc3370-1e1a-97e2-a91b-3edbd0c284d4\" \"cartservice:7070\" \"172.20.2.167:7070\" inbound|7070|| 127.0.0.6:60737 172.20.2.167:7070 172.20.0.22:53704 outbound_.7070_._.cartservice.ts.svc.cluster.local default","timestamp":"1646611195"}

将结果存储到另外一个LogStore中(iops-03-06-demo-log-convert)

通过查询分析,可以创建特定的索引结构,这里我截图对应的索引配置内容。

PS:如果您是先写入数据后,在创建的索引,要使用【索引重建】能力进行索引重建。

对原始Metric数据进行处理

e_set("__time__", v("timestamp"), mode="overwrite")

使用上述的DSL语句,进行处理,将结果写入到两外一个logstore中去(iops-03-06-demo-metric-convert),同样我们也是需要在这个logstore中却设置对应的索引的。

对原始Trace数据进行处理

e_set("__time__", op_div_floor(v("timestamp"),1000), mode="overwrite")e_set("host", v("cmdb_id"))e_rename("operation_name","name")e_rename("parent_span","parentSpanID")e_rename("span_id","spanID")e_rename("status_code","statusCode")e_rename("trace_id","traceID")e_rename("cmdb_id","service")e_set("start", op_sub(v("timestamp"), v("duration")))e_set("end", v("timestamp"))e_set("kind","internal")e_set("resource","{}")e_set("attribute", dct_make("type", v("type")))e_drop_fields("type")

这里稍微复杂一点,需要先创建一个trace app的实例才行。具体的步骤如下:

通过这个操作,我们会在特定的Project中(iops2021)中创建特定的Logstore出来,具体如下图所示:

其中,原始的Trace数据是防止在对应的Logstore(demo-trace-0306-traces)中的,并且该logstore中的索引已经设置好了,我们需要将上述DSL任务继续配置完成就可以了。

通过仪表盘进行可视化

接下来,我们通过仪表盘将数据进行可视化。具体的可视化样式,我们可以一起来看下【SLS用户中心】,已经将对应的可视化大盘,开放出来了,供参赛选手参考。

这里不会将全部的图标都进行说明,仅仅通过几个有代表性、复杂度比较高的图标进行说明。其中会涉及到一些变量替换、过滤器、DrillDown等说明。

Trace数据的可视化部分

这部分可以参考【在SLS上进行异常点的绘制】的绘制部分。

上面的数据,具体是如何计算出来的呢?(Scheduled SQL + Trace Operator)

这里我们要进行下手动的修改,在Trace App被创建出来时,会自动的在project下面创建对应的Scheduled SQL任务,且这个任务的开始时间是从当前开始的,而我们将原始数据,通过ETL处理后,是写入到了历史数据中去了(2022-03-06 08:00:00开始的),因此自动配置的Scheduled SQL任务无法生效,需要我们进行手动回调,将任务的开始时间修改的到2022-03-06 08:00:00 开始,每分钟执行因此记好了。

Metric数据的可视化部分

这部分我们主要是要看下Drill Down的跳转操作。我们在SLS的仪表盘中进入【编辑】模式,然后去选择对应的【表格】部分,找到对应的【交互事件】,具体的内容可以参考对应的文档,这里放一张我配置的截图。通过配置可以看到,我们有一个变量 jvm_cmdb_id 这个变量表示的是【JVM指标实例】中的【cmdb_id】这个列在点击时的变量值。

我们可以看到在下面的【JVM的观测指标】中对应的Query语句如下

*and cmdb_id:"${{jvm_cmdb_id|adservice.ts:8088}}"and kpi_name:"${{jvm_kpi_name|java_lang_ClassLoading_LoadedClassCount}}"|select __time__ - __time__ %60astime,       avg(value)as value
from log
groupbytimeorderbytimelimit10000

这里对应的变量中有如下几个:

  • jvm_cmdb_id - 其中 adservice.ts:8088 是它的默认值
  • jvm_kpi_name - 其中 java_lang_ClassLoading_LoadedClassCount 是它的默认值

至此,我们就完成了赛题数据的可视化大盘的构建。希望经过可视化之后,可以帮助选手更好的理解数据本身。在遇到问题时,可以翻阅我文末提供的相关文档,如果还是搞不定,可以加入【热身赛数据支持群】

相关资料

相关实践学习
对象存储OSS快速上手——如何使用ossbrowser
本实验是对象存储OSS入门级实验。通过本实验,用户可学会如何用对象OSS的插件,进行简单的数据存、查、删等操作。
目录
相关文章
|
人工智能 运维 监控
2025 AI 原生编程挑战赛 数据获取文档
本文介绍了参赛者如何配置阿里云服务以参加AI运维赛。首先开通阿里云日志服务,随后创建RAM用户并为其分配访问权限。接着为该用户授权,确保其具备读取数据的权限。最后,可选地创建或重新生成AccessKey以用于后续的数据查询操作。整个流程帮助选手完成基础环境配置,以便使用阿里云日志服务进行数据分析。
2991 2
|
10月前
|
缓存 JavaScript 前端开发
Vue的生命周期详解及业务场景应用
本文详细介绍Vue.js的生命周期概念及各阶段钩子函数的作用,结合实际业务场景讲解如何合理使用created、mounted、updated等钩子进行数据初始化、DOM操作、资源清理等,帮助开发者提升组件管理能力与代码性能。
360 0
Vue的生命周期详解及业务场景应用
|
机器学习/深度学习 运维 监控
从 2023 CCF AIOps 挑战赛看日志异常检测
2023年的 CCF AIOps 挑战赛相较往年主要有以下不同:赛题的形式从命题式转变为开放式、比赛场景的丰富度进一步提升。
136562 4
从 2023 CCF AIOps 挑战赛看日志异常检测
|
Web App开发 搜索推荐 安全
油猴离线安装文件下载,tampermonkey离线安装包下载
油猴脚本(Tampermonkey)是一款强大的浏览器扩展,允许用户通过自定义脚本增强网页功能。支持广告过滤、网盘直链下载、页面优化等多种用途,适用于Chrome、Firefox等主流浏览器。本文提供离线安装包下载及常用插件清单,助你轻松提升浏览效率与体验。
17214 6
|
存储 Prometheus Cloud Native
分布式系统架构6:链路追踪
本文深入探讨了分布式系统中的链路追踪理论,涵盖追踪与跨度的概念、追踪系统的模块划分及数据收集的三种方式。链路追踪旨在解决复杂分布式系统中请求流转路径不清晰的问题,帮助快速定位故障和性能瓶颈。文中介绍了基于日志、服务探针和边车代理的数据收集方法,并简述了OpenTracing、OpenCensus和OpenTelemetry等链路追踪协议的发展历程及其特点。通过理解这些概念,可以更好地掌握开源链路追踪框架的使用。
1912 41
|
Prometheus 监控 Cloud Native
微服务的监控与可观测性
【8月更文第29天】在微服务架构中,确保每个服务的健康状态和性能表现是非常重要的。为了达到这一目标,我们需要实施一套完整的监控和可观测性方案。本篇文章将介绍如何通过日志、指标和追踪来监测微服务的状态和性能,并提供相应的代码示例。
1288 0
|
存储 运维 监控
首次!阿里云可观测技术论文登上两大国际顶会
首次!阿里云可观测技术论文登上两大国际顶会
571 1
|
存储 算法 测试技术
CodeFuse-AAIS:改进低智能体框架助力高效程序修复
本文提出了一种基于低智能体框架的自适应自动化程序修复(APR)解决方案——AAIS。该方案结合了智能体的自适应性和低智能体的高效控制流,通过引入交互式缺陷定位和多模型辅助生成,显著提升了程序修复的准确性和多样性。实验结果表明,AAIS在SWE-Bench基准测试中表现出色,函数级定位准确率提升了46.94%-113.32%,Issue Solving任务上达到了35.67%的性能,展示了其在未来软件开发中的应用潜力。
630 0
CodeFuse-AAIS:改进低智能体框架助力高效程序修复
|
存储 运维 监控
首次!阿里云可观测技术论文登上两大国际顶会
首次!阿里云可观测技术论文登上两大国际顶会
412 0
|
JavaScript Linux 网络安全
VS Code远程调试Nodejs项目
VS Code远程调试Nodejs项目

热门文章

最新文章