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

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 本次介绍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的插件,进行简单的数据存、查、删等操作。
目录
相关文章
|
机器学习/深度学习 监控
数据漂移、概念漂移以及如何监控它们(mona)
在机器学习模型监控的上下文中经常提到数据和概念漂移,但它们到底是什么以及如何检测到它们?此外,考虑到围绕它们的常见误解,是不惜一切代价避免数据和概念漂移的事情,还是在生产中训练模型的自然和可接受的后果?请仔细阅读,找出答案。在本文中,我们将提供模型漂移的细粒度细分,以及检测它们的方法以及处理它们时的最佳实践。
|
SQL Java Apache
skywalking 搭建(apache-skywalking-apm-es7-7.0.0)
skywalking 搭建(apache-skywalking-apm-es7-7.0.0)
1032 0
|
6月前
|
人工智能 监控 机器人
别再往一个智能体里塞功能了:6种多智能体模式技术解析与选型指南
单智能体在功能增多时易陷入“指令迷雾”与“工具过载”,导致失效。本文提出6种多智能体架构模式:顺序流水线、并行扇出、层级监督、路由分发、反思迭代、共识投票,类比团队协作,通过分工提升系统稳定性与扩展性,解决复杂任务下的性能衰减问题。
981 6
别再往一个智能体里塞功能了:6种多智能体模式技术解析与选型指南
|
存储 运维 监控
首次!阿里云可观测技术论文登上两大国际顶会
首次!阿里云可观测技术论文登上两大国际顶会
487 1
|
7月前
|
运维 监控 前端开发
基于AI大模型的故障诊断与根因分析落地实现
本项目基于Dify平台构建多智能体协作的AIOps故障诊断系统,融合指标、日志、链路等多源数据,通过ReAct模式实现自动化根因分析(RCA),结合MCP工具调用与分层工作流,在钉钉/企业微信中以交互式报告辅助运维,显著降低MTTD/MTTR。
6172 28
|
9月前
|
Prometheus 监控 Kubernetes
K8s 容器监控的关键指标与最佳实践
K8s 容器监控的关键指标与最佳实践
1268 153
|
人工智能 运维 Serverless
OpenManus:开源版 Manus,无需邀请码,5 分钟极速体验!
OpenManus 是一款基于多智能体协作的开源自动化系统,能将复杂任务拆解为可执行子流程。通过多智能体机制分解任务、协调工具调用,实现代码执行、文件处理、网络搜索等复杂操作。本方案基于函数计算 FunctionAI 开发平台和阿里云百炼模型服务,提供一键部署方案,让企业无需过多运维投入即可获得灵活透明的智能任务处理能力。方案具备三大核心优势:Serverless 架构降本、实时反馈与透明化、模块化自由组合,支持快速接入多种功能模块。用户可通过简单步骤获取 API-KEY 并完成部署,体验 AI 自动化任务处理。
|
机器学习/深度学习 缓存 人工智能
一文了解DeepSeek及应用场景
本文详细介绍了DeepSeek及其应用场景,涵盖了大模型的发展历程、基本原理和分类(通用与推理模型)。文章分析了DeepSeek的具体特性、性能优势、低成本训练与调用特点,以及其技术路线(如MoE、MLA架构),并与竞品进行了对比。此外,还探讨了DeepSeek在金融风控等领域的应用前景。
一文了解DeepSeek及应用场景
|
消息中间件 设计模式 Java
Java技术栈梳理
Java技术栈梳理
|
Prometheus 监控 Cloud Native
微服务的监控与可观测性
【8月更文第29天】在微服务架构中,确保每个服务的健康状态和性能表现是非常重要的。为了达到这一目标,我们需要实施一套完整的监控和可观测性方案。本篇文章将介绍如何通过日志、指标和追踪来监测微服务的状态和性能,并提供相应的代码示例。
1190 0

热门文章

最新文章