KPI异常检测

来自搜狗,腾讯,eBay,百度, 阿里巴巴的多条KPI曲线,有异常标注

344支参赛队伍竞赛剩余时间-81奖金¥92000
  • 描述
  • 评估
  • 奖金
  • 时间线

随着互联网,特别是移动互联网的高速发展,web服务已经深入到社会的各个领域,人们使用互联网搜索,购物,付款,娱乐等等。因此,保障web服务的稳定已经变的越来越重要。

Web服务的稳定性主要靠运维来保障,运维人员通过监控各种各样的关键性能指标(KPI)来判断Web服务是否稳定,因为KPI如果发生异常,往往意味着与其相关的应用发生了问题。图1中展示了一个KPI异常的例子——某互联网公司的网页访问量数据发生了异常,其中红色圆圈标示了KPI发生的异常。

图1 异常KPI示例

这些KPI大致分为两种类型:服务KPI和机器KPI。服务KPI是指能够反映Web服务的规模、质量的性能指标,例如,网页响应时间,网页访问量,连接错误数量等。机器KPI是指能够反映机器(服务器、路由器、交换机)健康状态的性能指标,例如,CPU使用率,内存使用率,磁盘IO,网卡吞吐率等。

KPI异常检测指的是通过算法分析KPI的时间序列数据,判断其是否出现异常行为。这里的难点主要有:

1 异常发生的频率很低。在实际的运维场景中,业务系统很少发生异常,因此可供分析的异常数据很少。
2 异常种类的多样性。因为实际的业务系统很复杂,并且会不断更新升级,所以故障的类型多种多样,从而导致了异常种类的多样性。
3 KPI的多样性。KPI有表现为周期型的,有表现为稳定型的,有表现为不稳定的,持续波动型,如图2,3,4所示。

图2 周期型KPI







图3 稳定型KPI


图4 不稳定型KPI

正是因为这些难点,导致现有的异常检测算法的准确率(precision)和召回率(recall)都不高,存在大量的误报和漏报。这不仅增加了运维人员的工作量,而且导致运维人员无法及时准确地发现异常的KPI。

因此,为了提高异常检测算法的准确率和召回率,我们收集了来自众多互联网公司的真实场景的KPI数据,经过脱敏处理后提供出来,希望更多的学术界和工业界的人员参与进来,一起提高异常检测算法的性能。

扫描二维码,加入智能运维挑战赛官方微信群

描述

此数据集为KPI异常检测决赛数据集 phase2_ground_truth.hdf 为测试数据集 phase2_train.csv 为训练数据集

本数据集为异常检测预赛测试数据集


测试KPI数据如表1所示,包括四列:KPI ID,时间戳(timestamp),KPI在该时刻对应的数值(value)。

KPI ID Timestamp Value
0 1503831000 10.8
0 1503831060 12.3
... ... ...
表1 测试KPI数据样例

数据集说明:该数据集包括4列:KPI ID, time stamp, value。请注意,此数据集包含数据缺失点(通过time stamp可以发现)。

本数据集为异常检测预赛训练数据集


训练KPI数据如表1所示,包括四列:KPI ID,时间戳(timestamp),KPI在该时刻对应的数值(value),以及该时刻是否异常(label)。

KPI ID Timestamp Value Label
0 1503831000 10.8 0
0 1503831060 12.3 1
... ... ... ...
表1 训练KPI数据样例

数据集说明:该数据集包括4列:KPI ID, time stamp, value, label。请注意,此数据集包含数据缺失点(通过time stamp可以发现)。

label字段说明:0 表示正常数据点, 1 表示异常数据点。

关联数据集

数据集名称 文件名称 文件描述 上传时间 操作
1144 KPI异常检测决赛数据集 KPI异常检测决赛数据集.zip 2018-05-24 16:43:34 登录后,可下载
308 KPI异常检测预赛测试集 test.zip 2018-01-25 09:44:57 登录后,可下载
307 KPI异常检测预赛训练集 train.zip 2018-01-25 09:43:33 登录后,可下载
还可以输入200个字符loadding评论

我的评论

锤子哥刚刚

相当的Nice,对工作很有用,帮助我减轻了很多不必要的杂活儿,给作者赞一个!有了它,排查系统负载高的进程一目了然,赞!

总共0条评论

排序
  • 所有
  • 锤子哥一天前

    相当的Nice,对工作很有用,帮助我减轻了很多不必要的杂活儿,给作者赞一个!有了它,排查系统负载高的进程一目了然,赞!相当的Nice,对工作很有用,帮助我减轻了很多不必要的杂活儿,给作者赞一个!有了它,排查系统负载高的进程一目了然,赞!

    • Jia.xu一天前

      蓝鲸的产品肯定Nice

      @他
    • Jia.xu一天前

      蓝鲸的产品肯定Nice

      @他
    • Jia.xu一天前

      蓝鲸的产品肯定Nice

      @他
    • 还可以输入200个字符回复
  • 锤子哥一天前

    相当的Nice,对工作很有用,帮助我减轻了很多不必要的杂活儿,给作者赞一个!有了它,排查系统负载高的进程一目了然,赞!相当的Nice,对工作很有用,帮助我减轻了很多不必要的杂活儿,给作者赞一个!有了它,排查系统负载高的进程一目了然,赞!

    • Jia.xu一天前

      蓝鲸的产品肯定Nice

      @他
    • Jia.xu一天前

      蓝鲸的产品肯定Nice

      @他
    • 还可以输入200个字符回复
  • 锤子哥一天前 作者

    相当的Nice,对工作很有用,帮助我减轻了很多不必要的杂活儿,给作者赞一个!有了它,排查系统负载高的进程一目了然,赞!相当的Nice,对工作很有用,帮助我减轻了很多不必要的杂活儿,给作者赞一个!有了它,排查系统负载高的进程一目了然,赞!

      还可以输入200个字符回复
  • 锤子哥一天前

    相当的Nice,对工作很有用,帮助我减轻了很多不必要的杂活儿,给作者赞一个!有了它,排查系统负载高的进程一目了然,赞!相当的Nice,对工作很有用,帮助我减轻了很多不必要的杂活儿,给作者赞一个!有了它,排查系统负载高的进程一目了然,赞!

    • Jia.xu一天前

      蓝鲸的产品肯定Nice

      @他
    • Jia.xu一天前

      蓝鲸的产品肯定Nice

      @他
    • Jia.xu一天前

      蓝鲸的产品肯定Nice

      @他
    • 还可以输入200个字符回复
  • 锤子哥一天前

    相当的Nice,对工作很有用,帮助我减轻了很多不必要的杂活儿,给作者赞一个!有了它,排查系统负载高的进程一目了然,赞!相当的Nice,对工作很有用,帮助我减轻了很多不必要的杂活儿,给作者赞一个!有了它,排查系统负载高的进程一目了然,赞!

    • Jia.xu一天前

      蓝鲸的产品肯定Nice

      @他
    • Jia.xu一天前

      蓝鲸的产品肯定Nice

      @他
    • 还可以输入200个字符回复
  • 锤子哥一天前 作者

    相当的Nice,对工作很有用,帮助我减轻了很多不必要的杂活儿,给作者赞一个!有了它,排查系统负载高的进程一目了然,赞!相当的Nice,对工作很有用,帮助我减轻了很多不必要的杂活儿,给作者赞一个!有了它,排查系统负载高的进程一目了然,赞!

      还可以输入200个字符回复

参赛规则

参赛对象

大赛面向全社会开放,年满13周岁的个人、高等院校、科研单位、企业、创客团队等人员均可报名参赛。数据集建立及维护过程中能接触到数据的人员不得参赛。

报名方式

以下文字中使用的日期及时间,除特意声明外,均为北京时间。

请领队于2018年1月1号前发送成员信息到 netman_iops@126.com

示例如下:

账号昵称:****

注册邮箱:*

领队姓名:* 身份证号:****

队员1姓名:** 身份证号:***

队员2姓名:** 身份证号:***

提示:

1 队伍成员共同使用一个注册账号提交结果,领队需在官网实名认证,并发送成员信息到指定邮箱,形式如上,即为报名成功。

2 队伍提交结果以注册账号为准。

3 账号昵称即为队伍名称。

4 队伍成员不得以任何形式注册其他账号,否则将取消整个队伍成绩。

(1) 报名时间:竞赛报名截止时间为2018年1月1日23:59:59。

(2) 参数队伍不限制参数人数。

(3) 每支参数队伍需要确定一位领队,并由领队在大赛平台上注册一个账号,并上传个人身份证信息,进行认证。

(4) 要在比赛中排名并获得奖品,每位参赛者(个人及领队)提供个人信息。此外,在2018年1月1日前,领队需要声明团队的组成,并提供队员个人信息。 之后不允许更改。

(5) 如果一个人参加多个队伍,与该人员关联的所有队伍都将被取消资格。

(6) 参赛队员必须遵守并签署《竞赛选手报名协议》

评分规则

本次大赛将以决赛成绩结合答辩表现,加权计算总成绩,决出最终的大奖。

本次竞赛分为预赛和决赛两个阶段。

预赛:选手基于预赛开放数据集,在本地训练一个统一的异常检测算法,对多条多种类的KPI曲线进行异常检测,并在预赛测试集上,使用先前训练的模型进行预测,生成预测结果并提交至平台。结果提交后,系统会按照评测指标实时反馈分数,并更新榜单排名。

决赛:预赛排名靠前的队伍进入决赛,在指定的计算资源上,对决赛数据集进行训练并检测异常,并根据模型在决赛测试集上的表现给出评分。之后,会安排现场答辩。依据模型在决赛测试集上的表现,以及答辩表现,确定决赛的最终名次。为保证比赛的公平性,主办方会检查参赛选手的代码中是否有作弊,但主办方并不要求拥有决赛参赛队的源代码。

算法限制

1 在【模型训练阶段】,不允许【手动地】建立从“KPI曲线ID或KPI曲线计算得出的特征”到“算法和参数”的一一映射。即在【模型训练阶段】,不允许【手动】针对一条特定的KPI曲线进行算法的选择和参数的调优。当然,在【模型训练阶段】,允许设计较为普适的自动化方法,根据特征【自动】选择异常检测算法。

2 在【模型测试阶段】,测试数据集的KPI ID与训练数据集的KPI ID是一一对应的。这样,就可以利用在【模型训练阶段】训练好的针对某一条特定KPI曲线的最优参数组合,去检测该KPI曲线中的异常。例如,在【模型训练阶段】得到KPI曲线A的最优解为异常检测模型的参数组合1,则在【模型测试阶段】,可以用异常检测模型的参数组合1去检测KPI曲线A中的异常。

3 不允许参赛算法使用未来点的信息对当前点的异常做出判断。

为了更加直观的说明此次挑战赛对算法的限制,现举例说明。例如,在【模型训练阶段】,以下方法是不允许的:

1 直接在代码中硬编码每个KPI ID对应的算法和参数。

2 为每一条特定KPI曲线计算某个特征,然后为每一特征取值【硬编码】其对应的算法和参数。比如,假设该特征可以取3个值(X,Y,Z),将X对应的模型参数组合手动设定为p1, Y对应的模型参数组合手动设定为p2, Z对应的模型参数组合手动设定为p3。

在【模型训练阶段】,以下方法是允许的:

1 从训练集中划分出验证集,根据验证集,【自动】地为每一条 KPI 曲线选择合适的算法。

2 设计某种特征计算方法,为某一类具有某种特征的KPI曲线【自动】选择一类合适的算法。

3 用随机森林算法对每一种KPI曲线都提取了N个特征,针对一条特定的KPI曲线,得到该KPI曲线拟合最好的树深度和棵数参数(这些参数可以通过网格搜索方法获得,不需要手调)。

4 对于不同的KPI曲线,设计算法分析其规律,然后对每一条KPI曲线【自动】选择合适的算法(比如针对较为平稳的KPI曲线使用ARIMA算法,对于周期性的KPI曲线使用高斯分布等等)。

预赛截止及决赛队伍审核

1 预赛截止时间:北京时间 2018年4月1日 23:59:59,届时预赛结果提交入口将会关闭。

2 决赛名额确定:预赛成绩排名前10的队伍将进入决赛,为了保证公平性,我们将对最终前15的队伍进行代码检查。并按照预赛成绩,选出排名前10,并提交有效代码的队伍进入决赛。如果最终具有有效代码队伍不足10支,将不再顺延。其中代码检查条件及限制,请参见http://iops.ai/competition_detail/?competition_id=5&flag=1

3 预赛代码提交:请排行榜排名前20的队伍将预赛代码于北京时间2018年4月1日 00:00:00 - 2018年4月2日 00:10:00 发送到 netman_iops@126.com。邮件主题名为:iops挑战赛预赛代码-队伍名称。内容:队伍名称,注册邮箱,队伍id(排行榜显示),两个及以上的手机联系方式(便于后期代码检查)。代码:请以附件压缩包的方式发送。接收到自动回复即为发送成功。过期发送的代码视为无效。

4 预赛代码审核机制:预赛代码我们将采用double check的方式,双人确定无误后,视为有效代码。

决赛安排

1 决赛队伍发布时间:我们将于北京时间 2018年4月10日前,发布决赛队伍。届时将会在智能运维挑战赛官方群及官网进行通知,并会向进入决赛的队伍发送邮件。

2 决赛调试阶段:决赛调试将于北京时间 2018年4月11日 08:00:00正式开始,为期一周,截止到2018年4月18日 08:00:00,选手需要在azure云平台上使用预赛数据进行调试。请最终预赛成绩排名前15的队伍做好充分准备。

3 决赛阶段:提示在决赛数据集上进行训练和测试,算法训练和测试的总用时暂定不得超过24*7小时,请选手留意算法的时间性能。更多决赛阶段的评测流程和相关的代码和示例:https://github.com/iopsai/iops/tree/master/phase2_env,请大家提前了解并做准备

奖项设置

以下提及金额为税前金额,详细规则请参考《竞赛选手报名协议》

冠军:80,000人民币,颁发获奖证书

亚军:8,000人民币,颁发获奖证书

季军:4,000人民币,颁发获奖证书

FAQ

Part one
问:数据集里kpi value那一列具体是怎么算出来的吗?具体的含义是什么?

答:KPI的value是某个KPI指标在对应的时间戳的值,比如某个时间订单成交量,CPU使用率等等,数据是各个公司提供给我们的,公司可能会进行一些脱敏处理,我们没有对数据做额外的处理。

问:训练数据集label一列是如何标记出来的呢?那我们异常监测算法是尽量拟合目前标记结果 还是纠正标记结果?

答:label那一列是运维人员基于专家知识手动标记的。我们希望,大家能从训练数据的标注中通过机器学习方法找到一个pattern,并利用此pattern来检查测试集的异常。所以希望您的异常检测算法尽量拟合目前标记结果。

问:可以不可以理解为数据集里的KPI Value是一个具体的监控项的值经过处理后生成的?比如cpu_usage。如果只是通过单个的具体KPI数据指标维度来预测或检测系统的健康状况,会不会有些牵强?

答:是的可以这么理解,单个的具体KPI数据指标维度”的异常并不代表“系统的健康状况”哈。仅仅只是可能预示着系统出了问题 ,所以要检测出来,要报警。

问:算法在测试集上是否需要在线形式运行,也就是,能否利用t时刻以后的样本信息来检测t时刻的样本?

答:预赛阶段,我们采用的方式是把数据集公开给大家,大家拿自己的模型去检测,然后提交检测结果文件给我们。也就是说,参赛者是离线去检测测试集中的异常的。

问:这次比赛是鼓励大家寻找一个普适的异常检测方法 而不是针对每个KPI去手动调参数测试数据?

答:是的。

问:测试时间戳和训练数据的时间戳是顺延的吗?

答:是的。

问: 训练集和测试集的kpi指标是什么关系,测试集的指标都是在训练集里出现过的吗?

答:测试集的KPI都是在训练集里出现过的。

Part two

问:异常包括2个层次
- 数据异常:单纯从数学层面分析数据,判断该数值相对整体分析样本离群程度很大,比如说平时cpu使用率为1%,突然增加到10%,从数学维度分析,这个是属于异常
- 业务异常:数据异常和业务异常统一,上述案例是10%的cpu使用率数学层面是异常,但是业务层面觉得10%的cpu使用没有任何问题

答: 我们希望,大家能从训练数据的标注中通过机器学习方法找到一个pattern,并利用 此pattern来检查测试集的异常,也就是希望大家尊重训练集的标注,以此为标准来进行异常检测,因为实际场景的异常本身就是复杂多样的,至今很难有一个明确的判断异常的标准,所以希望用户的异常检测算法尽量拟合目前标记结果。

问:关于暂定delay threshold =7,这个延迟好像有点短,因为异常标注区间通常比较大。
答:delay=7是经过综合实际业务场景和我们的初步试验结果考虑的,比如有的曲线是五分钟一个点,delay=7的话就已经是35分钟,已经是比较高的延迟了,对于图中的这个问题,在标注的时候偶尔会存在边界不细致的问题,但是应该不影响的,而且统一采用这一标准,对大家都是公平的
问:这个 delay 和区间的长度成比例不是更好吗,越大的区间 delay 应该越大
答:主要是考虑实际场景中的情况,并不能说异常区间越大,我们可以容忍的报出异常时间就越长,我们都希望更早的报出异常,所以我认为这个标准应该是统一的,不随着异常区间而变化
问:这个标准也不统一啊,5 分钟的是 delay 35 分钟,1 分钟的是 delay 7 分钟。
答:这个统一是相对监控系统的粒度而言的,一个五分钟的监控系统和一分钟级的监控系统,是肯定不能用相同的delay时间来衡量的,所以按点来考虑delay是考虑到不同粒度的监控系统。

3.问:关于评估指标,如果在标记为异常的连续20个样本中,算法判定前10个样本异常,后10个正常,这种情况该如何评价?如果是后十个判断正确呢?
答:这种情况这个区间20个点都认为被算法找到了,全部都是TP。如果后十个判断正确,delay=10>7,超出了异常检测的时效范围,所以这个区间就没有被找到,后面的十个点是FN。
问:在一个异常区间中的前7个样本中,把任意一个样本判定为异常,就算把这个区间都检测出来了?哪怕只报一个异常点也没关系?
答:是的,没关系

  1. 问:异常区内有缺失数据的情况,算是一个还是多个区间?
    答:分开计算,是多个区间

  2. 问:报名需要实名认证,只需要领队认证,还是队伍里每个人都要实名认证啊
    答:都需要实名认证,领队需要将成员信息发送到指定邮箱netman_iops@126.com 具体格式请见http://iops.ai/competition_detail/?competition_id=5&flag=1

主办方保留对比赛规则进行更新的权利。

上传的结果文件

刷新
文件名称 文件描述 上传时间 文件大小 分数 计算状态 错误信息 操作

注册

请输入正确的邮件格式

密码长度6-20位

两次输入密码不匹配,请重新输入

昵称已被占用,请重新输入

点击[注册],即代表你同意 《iOps注册协议》
注册

注册协议

【首部及导言】

为有效利用QQ号码资源,维护用户合法权益,特制订《QQ号码规则》(以下简称“本规则”)。请您务必审慎阅读、充分理解各条款内容,特别是免除或者限制责任的条款,以及开通或使用某项服务的单独协议,并选择接受或不接受。限制、免责条款可能以加粗形式提示您注意。

除非您已阅读并接受本规则所有条款,否则您无权申请或使用QQ号码。您申请或使用QQ号码的行为即视为您已阅读并同意受本规则的约束

一、【规则的范围】

1.1 本规则是腾讯制定的关于获取和使用QQ号码的相关规则。本规则适用于腾讯提供的需要注册或使用QQ号码的全部软件和服务。

1.2 本规则属于腾讯的业务规则,是《腾讯服务协议》不可分割的组成部分。

1.3 您通过QQ号码使用腾讯的软件和服务时,须同时遵守各项服务的单独协议。

二、【QQ号码的性质】

QQ号码是腾讯创设的用于识别用户身份的数字标识。QQ号码的所有权属于腾讯。

三、【QQ号码的获取】