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

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储OSS,敏感数据保护2.0 200GB 1年
对象存储 OSS,内容安全 1000 次 1年
简介: 本次介绍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,搭建一个在线教育视频课程分享网站。
目录
打赏
0
4
2
0
3068
分享
相关文章
【贪心算法】一文让你学会“贪心”(贪心算法详解及经典案例)
贪心算法是一种非常常见的算法,它的简单和高效性使其在实际应用中被广泛使用。 贪心算法的核心思想是在每一步都采取当前状态下最优的选择,而不考虑未来可能产生的影响。虽然贪心算法不能保证总是得到最优解,但在很多情况下,它可以获得很好的结果。 本篇文章将介绍贪心算法的基本概念和一些经典应用,以及如何通过贪心算法来解决一些实际问题。希望通过本文的阅读,读者可以对贪心算法有更加深刻的理解,并能够在实际问题中应用贪心算法来得到更好的解决方案。 让我们暴打贪心算法吧!
5265 0
Grafana Loki,轻量级日志系统
本文介绍了基于Grafana、Loki和Alloy构建的轻量级日志系统。Loki是一个由Grafana Labs开发的日志聚合系统,具备高可用性和多租户支持,专注于日志而非指标,通过标签索引而非内容索引实现高效存储。Alloy则是用于收集和转发日志至Loki的强大工具。文章详细描述了系统的架构、组件及其工作流程,并提供了快速搭建指南,包括准备步骤、部署命令及验证方法。此外,还展示了如何使用Grafana查看日志,以及一些基本的LogQL查询示例。最后,作者探讨了Loki架构的独特之处,提出了“巨型单体模块化”的概念,即一个应用既可单体部署也可分布式部署,整体协同实现全部功能。
1641 70
Grafana Loki,轻量级日志系统
智能化运维:AI在故障预测与自愈系统中的应用
【6月更文挑战第13天】本文探讨了人工智能技术在现代IT运维领域的应用,着重分析了AI如何通过数据分析和机器学习算法实现故障预测和自动化修复。文章将揭示智能运维系统的工作机制,以及它如何帮助企业减少停机时间,提高服务稳定性,并最终推动业务连续性和增长。
卸载原有的cuda,更新cuda
本文提供了一个更新CUDA版本的详细指南,包括如何查看当前CUDA版本、检查可安装的CUDA版本、卸载旧版本CUDA以及安装新版本的CUDA。
6624 3
卸载原有的cuda,更新cuda
ICML 2024:清华提出时间序列大模型:面向通用时序分析的生成式Transformer
【8月更文挑战第7天】在2024年ICML大会上,清华大学团队推出“时间序列大模型(LTSM)”——Timer,一种处理大规模时间序列数据的生成式Transformer。该模型通过预训练学习通用特征,支持多种任务如预测与异常检测。Timer采用统一的数据格式S3处理异构序列,并在数据稀缺场景下展现出色性能。尽管如此,模型泛化能力与计算效率仍有待优化。论文详情参见:https://arxiv.org/abs/2402.02368。
2032 4
从零开始下载torch+cu(无痛版)
这篇文章提供了一个详细的无痛版教程,指导如何从零开始下载并配置支持CUDA的PyTorch GPU版本,包括查看Cuda版本、在官网检索下载包名、下载指定的torch、torchvision、torchaudio库,并在深度学习环境中安装和测试是否成功。
从零开始下载torch+cu(无痛版)
微服务架构最强讲解,那叫一个通俗易懂!
微服务架构(Microservice Architecture)是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦。你可以将其看作是在架构层次而非获取服务的
27283 2
微服务架构最强讲解,那叫一个通俗易懂!
历时2个月,深访6位大咖,我们完成了这份AIOps指南
  2021年,业界对AIOps的关注和讨论可以说是达到了一个顶峰,许多国内外企业尝试落地AIOps的实践层出不穷。毋庸置疑,AIOps已是IT运维的大势所趋。可是想要坐上这趟飞驰的时代列车,必须掌握哪些要领?   为帮助大家解决心中疑虑,捋清技术风向及思路,我们精心准备了一次专访,采访了阿里-柳明、新浪微博-彭冬、奇虎360-籍鑫璞、携程-徐新龙、新炬网络-宋辉、平安科技-汪洋等6位AIOps领域的先行探索者。   本系列文章将会汇集他们的研究心得与实践经验,解答目前业界对AIOps普遍存在的认知误区及疑惑难点,助力国内AIOps的建设和落地。本文为上篇,从大环境着眼,详析AIOps的现
1376 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问