2023 CCF国际AIOps挑战赛·赛题与赛制解读
发布时间:2023-07-10 16:04:12
本届挑战赛背景介绍
近年来软件系统领域发生了两个显著趋势。第一个趋势是随着云计算的发展,软件系统架构由单体架构逐渐转变为面向服务的架构。从单体的软件用一套可执行的文件来实现整个的业务逻辑,持续开发困难并难以扩展。目前大部分的行业(包括互联网和金融机构)的软件系统逐渐向微服务架构或面向服务的架构过渡,使它能够支撑细粒度、松耦合并通过API连接的服务,以达到持续开发和灵活扩展的目的。
第二个趋势是传统人工运维逐渐向智能运维转变。这也是为了应对复杂的软件和网络的架构。传统运维主要靠人工为主,耗时耗力且高度依赖专家经验,应对复杂的系统时往往束手无策。随着智能运维的兴起并深入各行各业,结合专家知识、运维数据和智能算法,降低故障修复时间并提升无故障时间成为业内共识。最终我们期望依靠智能运维,可以实现无人值守的状态。
在此过程中,运维领域面向微服务架构的智能化运维转型中面临两个挑战:
第一个挑战是:微服务架构的系统复杂性较高,调用关系复杂,故障出现后根因定位和故障溯源难。同时,软件服务的动态性导致迭代速度快,需要动态创建和销毁容器,软件频繁变更后,过去的运维经验往往不再适用新的软件环境,给运维工作带来挑战。
另一个挑战是:如何关联和融合多模态数据,并挖掘关键信息用于故障发现和诊断。在微服务架构下,往往具有多种损益来源和多种类型的数据,包括指标数据、日志数据以及调用链数据等多模态的运维数据。指标能够反映业务状态和机器性能的时间序列数据。日志是一种程序打印或执行代码输出的非结构化文本。调用链则是在系统完成一次业务调用的过程中,把服务之间的调用信息连接成的一个树状链条。多模态运维数据可以反映系统状态的全方位信息,通过智能运维算法可以得到相对于传统运维更精准的结果。
针对以上挑战,结合微服务架构系统和调用关系复杂性,以及多模态的运维数据,本次的挑战赛以开放式赛题的竞赛形式,向业内普遍的两个挑战发起冲击。
本届挑战赛题目简介
回顾下历届挑战赛赛题:
相比往届比赛,本届AIOps挑战赛在赛题方面做出了较大的创新。
本届挑战赛采用开放式赛题,基于建行云龙舟运维平台的稳定性工具和多维监控系统,模拟大型的生活服务APP的生产环境,提供端到端的全链路的日志、指标和调用链数据。选手可以自主命题、自行设计方案及实现,最后评审专家会根据选手的选题、方案和效果来评分。
选手可基于一种或多种模态数据(如日志、指标、调用链数据等)选择异常检测、故障分类、故障根因定位、故障影响分析,以及其他类型,当然这只是一个示例,参赛选手自主命题的时候不用拘泥于上述案例。
系统架构
系统架构包含了三个集群和一些中间件,它分了几个层次。首先,我们将模拟访问建行云的一个生活服务类APP的过程,通过负载均衡器加载到入访WEB集群里。应用层具有三个集群,包含两个基础集群和一个订单集群,负责处理用户访问的服务。数据层包含中间件和数据库,来处理应用层三个集群对数据的请求。之后通过负载均衡器将用户的结果返回。模拟环境的拓扑结构如下:
故障场景
以某一个交换机的故障为例:某网络接入交换机的端口,出现了丢包严重的问题,导致交易处理时间变长,且交易处理失败次数变多。注入故障时,首先会设置交换机某个端口丢包率较高(如80%),同时制造高频、访问数据库交易流量。整个故障传播的链条是:交换机端口丢包严重,通过分析交换机性能指标如丢包率,导致关联的 AP交易时间变长,我们可通过分析关联AP的指标平均处理时间,能够感知到 AP出了问题。之后,所关联AP系统的成功率下降。通过这样的方式,从交换机端口的故障传播到导致 IP交易会出现问题,选手可通过分析数据推导出交换机的端口故障的根因。
比赛数据
本届挑战赛将提供全链路的端到端的监控数据,包括指标数据,日志数据和调用链数据。指标数据包括业务指标和性能指标两种类型。日志数据中既有节点的物理服务器日志,同时也会尝试提供上层软件日志。
本届挑战赛流程说明
时间安排
以下是初步计划,后续会根据最新进展动态调整。
报名方式
面向全社会开放报名,既可以是高校师生,也可以是企业职工。报名前需要注册账号,提交身份认证审核,通过之后绑定手机号和填写账户的资料。报名之后需要去填写问卷,并组建一个团队,之后需要由队长来确认组队完成。参赛队伍不限制参赛人数,但如果一个人同时加入多支队伍,与该人员关联的所有队伍都会被取消资格。
之后等待资源分配审核,审核通过后获得建行云的堡垒机账号和密码,成功后会以短信的方式通知。
建行云堡垒机分配之后需要在一周之内会激活,对于没有激活队伍我们会回收资源。1支队伍只要有1人登录,就视为激活。比赛预计8月份报名截止。
建行云资源分配后,需参照官网说明在一周内激活。如果未按时激活,资源将被回收,队伍中有一个人登录即视作激活。
报名成功后请添加挑战赛小助手进群,微信群后续会进行赛事通知和技术答疑,建议队伍里每个成员都能入群。
报名链接:建行云官网:https://yun.ccb.com
微信添加AIOps_Challenge进群,备注:“报名参赛”
本届挑战赛评分规则
在建行云的模拟系统中,我们注入故障且流量模拟之后,会生成一些数据,并打到评测系统里面。选手们申请到建行云的虚拟机之后,通过Kafka进行订阅。订阅完之后需要选手将研究问题、解决方案、实现的原型系统在评测系统里提交,组委会将邀请业内专家对提交结果打分,并公布排行榜。
评审专家依据设计方案和评估结果进行评分,每个赛题将由不少于两个专家评分,如分歧较大,我们会引入第三个专家介入。原则上会选择不超过10个队伍进入决赛。进入决赛的队伍进行需要现场答辩,评审专家现场打分,得出最后的排名。
由于今年采用开放式赛题,比赛将不再要求选手开放代码,而是要求参赛队伍将运行软件按照要求放在指定目录,写好一键运行脚本,主办方将登录选手机器进行结果复现以评估结果的真实性。
参考文献
单指标异常检测
多指标异常检测
日志分析和异常检测
调用链分析和异常检测
故障分类
根因定位