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

本文涉及的产品
对象存储 OSS,20GB 3个月
阿里云盘企业版 CDE,企业版用户数5人 500GB空间
云备份 Cloud Backup,100GB 3个月
简介: 本次介绍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搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
目录
相关文章
|
6月前
|
数据可视化 数据挖掘 Python
python数据分析和可视化【3】体检数据分析和小费数据分析
python数据分析和可视化【3】体检数据分析和小费数据分析
152 0
|
数据采集 数据可视化 数据挖掘
【大数据分析方面的经验和技能】数据可视化、数据报表和预测分析
【大数据分析方面的经验和技能】数据可视化、数据报表和预测分析
139 0
|
人工智能 移动开发 数据可视化
欢迎进入 2020 数据可视化智能研发时代
数据时代一个显著特征是数据可视化的崛起,被誉为大数据分析应用领域里的最后一公里,数据可视化将数据分析、工程技术与设计艺术结合,借助图形化的手段,用比文字快十倍甚至万倍的速度清晰有效地传达信息,让人们可以利用人类经历漫长进化得来的强大视觉化思考本能去对所呈现数据进行挖掘、整合,得以辅助分析和决策。
欢迎进入 2020 数据可视化智能研发时代
|
2月前
|
机器学习/深度学习 存储 数据可视化
数据分析和可视化
数据分析和可视化
|
5月前
|
数据可视化 数据挖掘 Python
数据分析与可视化
数据分析与可视化
37 0
|
6月前
|
数据采集 数据可视化 NoSQL
数据可视化系列-05数据分析报告
数据可视化系列-05数据分析报告
|
6月前
|
数据采集 数据可视化 数据挖掘
掌握可视化大屏:提升数据分析和决策能力的关键(下)
掌握可视化大屏:提升数据分析和决策能力的关键(下)
|
6月前
|
供应链 数据可视化 数据挖掘
掌握可视化大屏:提升数据分析和决策能力的关键(上)
掌握可视化大屏:提升数据分析和决策能力的关键(上)
|
6月前
|
SQL 数据可视化 大数据
数据可视化系列-01大数据可视化基础
数据可视化系列-01大数据可视化基础
数据可视化系列-01大数据可视化基础
|
数据采集 自然语言处理 监控
智慧数据驱动:基于smardaten构建多维数据可视化大屏
前段时间有位粉丝找到我问数据可视化大屏怎么做,我说我之前的博文里介绍过基于Flask和Echarts搭建的大屏,你可以去看看。结果他来了句“没学过任何编程代码怎么办?”,好家伙,一下给我整懵了,于是为了解决这个问题,照顾零基础的粉丝,我花了几天时间找了个不需要代码就可以做可视化大屏的方法,这篇文章就讲手把手教会你使用smardaten搭建数据可视化大屏(无需代码)。
185 0