写点什么

重磅:构建 AIOps 的 MNIST

  • 2019-09-10
  • 本文字数:3049 字

    阅读完需:约 10 分钟

重磅:构建AIOps的MNIST

我们在《AIOps时代,你准备好了吗?》一文中提到,运维操作一般可以分为感知、决策、执行三部分,而在感知阶段我们通过识别服务指标数据中不符合预期的模式来发现服务异常,即监控数据的异常检测。


很多时候,大家手中的异常检测是一条拍脑袋想出来的规则,或者根据经验大致估算的阈值。这样的异常检测常常存在较多误报、漏报、效果不佳的情况。而上线前基于标注数据的效果评估是提高效果最重要的手段。为了获取大量、准确的标注数据来评估算法效果,我们进行了一系列探索。


本文将主要介绍在监控数据异常标注实践中遇到的问题和解决方案,并给出一个当前由百度智能运维团队与清华大学 Netman 实验室合作研发的辅助标注工具原型,欢迎大家一起探讨。


时序数据异常标注

在监测服务的收入、流量、可用性、性能等指标时,通常会对数据进行流式的采集和汇聚,每个数据点反映的是某段时间内的服务状态,这些时间序列数据简称时序数据。


在异常检测方面大家或多或少都有过类似经历:针对一次故障设置了报警规则,其中的阈值根据这次故障设置。上线后不断发生误报,因此调低阈值。阈值调低后误报减少,但在一次新故障发生时发生漏报,又调高阈值。如此往复,在误报与漏报之间徘徊。这是因为以 bad case(误报、漏报)驱动的阈值调整常常会以偏概全、前后矛盾,导致整体的准确率和召回率很低。解决问题的最佳办法是在上线前使用标注数据对报警规则进行系统地评估。


另一方面,对于复杂场景的异常检测,大量准确的标注数据也是使用统计方法或机器学习方法建模的必要条件。


为了进行正常数据建模和算法效果评估,我们需要获取大量准确的标注数据,通常时序数据可以从监控系统中方便地获得,标注则需要人工完成。在数据标注过程中主要有两类问题:


  • 准确性:标注人员通常对异常认识不清晰,随着标注进度的推进,判断标准很容易发生漂移。

  • 标注效率:异常数据占比很小,标注时大量的时间耗费在检查正常数据上,效率较低。


经过一系列调研,我们发现已有的时序数据标注工具较少,功能也比较简单,仅提供了趋势图展示、异常时段标注、简单参考线(天同比/周同比)等功能,对于解决标注过程中的准确性和效率问题帮助有限。


这里,我们给出了一种基于自动异常检测的辅助标注方法:在标注开始前,自动分析疑似异常区间,高亮提醒标注人员关注,减少检查正常数据耗费的精力;在标注过程中,提供异常区间对比功能,协助标注人员认识异常,避免判断标准的漂移,减少标注数据前后矛盾的情况。

时序数据标注工具

我们着手研发了一款时序数据异常标注工具,辅助标注人员更快更准确地进行时序数据标注,为正常数据建模和异常检测评估提供足量准确的标注数据集。


当前的标注工具以一个 Web 的形式呈现,提供数据上传、标注、下载功能,辅助标注的主要算法逻辑由 Python 实现,可以方便地借助相关科学计算模组进行修改。

可视化和标注功能

一般的时序数据标注工具都会提供一些基本的可视化和标注功能,包括通过拖动、快捷按钮等方式设置 x 轴和 y 轴的显示区间以控制曲线的缩放,通过拖动等方式标注异常数据等。除了这些基本的功能之外,我们针对标注场景作了专门的优化。



Y 轴区间自动计算

有时少数异常数据的值与正常值相比差别巨大,可能有数量级的差别。直接展示这些数据会导致整条曲线被压扁变平,掩盖曲线上其他的波动。这时用户往往需要先手工设置曲线的 y 轴区间才能开始正常标注。如果用户每次载入曲线都要设置一次 y 轴区间,无疑是很麻烦的。针对这种问题,我们在工具中添加了离群点自动判断功能,排除离群点之后,我们就能找到合适的 y 值区间,让用户看到合理的曲线形态。



默认 Y 轴取值范围



基于离群点检测的 Y 轴取值范围

大尺度数据采样

我们标注时通常会先浏览数据来初步了解数据的分布,标注时也常常先寻找大致的异常区间再仔细标注。这种浏览的尺度比较大,由于屏幕分辨率远低于数据点数,不可避免地要进行采样或聚合,常用的均值方法会平滑周期内的尖峰和低谷,降低异常幅度,影响标注工作。针对这种问题,我们在工具中提供了最大值、最小值采样方法,可以适应上溢、下溢异常场景,在标注时暴露出完整的异常幅度,解决采样带来的失真问题。


辅助标注功能

在其他时序数据异常标注工具中,通常提供了天同比、周同比参考线或恒定阈值线,这些参考线在一定程度上满足了标定人员参照历史数据的需求,但是面对单调上升指标(如用户数量)、预期内突增(如活动流量)等个性化场景提供的帮助比较有限。针对这个问题,我们开放了参考线生成功能,可以根据场景自行编写插件添加参考线。除此之外,还在标注工具上尝试了初始异常识别和异常区间对比两个辅助标注功能。

初始异常识别

在标注以外的时间,我们通常不会持续关注一个指标的变化过程,这样,在标注过程中接收到的数据会远多于平时的观察,受到已标注数据潜移默化地影响,标注人员的判断标准会发生一定程度的偏移,影响标注准确性。针对这种问题,在数据初始化阶段我们使用异常检测算法对数据进行检测,确定疑似异常区间,用高亮的方式提示给标注人员,这种标准一致的提醒可以在一定程度上减轻标注人员受到的影响。


同时,由于使用了较宽松的阈值,轻微的异常也会被识别出来,这样,标注人员可以重点检查高亮区域,降低检查正常数据的消耗,提高标注速度。


异常区间对比

在不能确定一段数据是否异常时,我们通常会和已标注为异常的数据进行对比,这种对比由于异常数据占比较小变得非常麻烦,需要先在比较大的尺度上找到异常区间,然后再放缩到与待标注区间相同的比例尺才能进行对比。针对这种问题,我们提供了异常区间跳转和异常概览两个功能,可以方便得跳转到上一个、下一个异常区间进行对比,也可以在标注结束后把所有异常区间放在一起进行对比。


正在路上…

除了上述已有功能,一大波更新正在路上,接下来还会有:


  • 更快的加载速度,标注过程更加流畅:在原型实现中,包括数据库、网络交互在内的诸多工程细节都没有进行针对性优化,导致标注中会出现轻微卡顿情况,这些卡顿将在下一版完整修复。

  • 在线的标注工具,打开即用:在前期试用中发现,对于标注人员,从源代码开始部署一个服务比较麻烦。为了让使用者更加方便,我们会在收集足够意见反馈后整合出一个 SaaS 化的标注平台,让标注人员即开即用。

  • 拉一大波标注数据出来祭天:在调研时发现,时序数据异常检测领域缺少一个类似 MNIST 的标准数据集,虽然有部分高校给出了一些数据集(如石溪大学的 http://odds.cs.stonybrook.edu/),但是这些数据集过小,难以用于统计方法和机器学习方法建模。为了让更多有想法但是接触不到数据的同学有条件参与相关探索,我们将公开部分标注数据,和大家一起建设一个公共的标准数据集。

INVITATIONS

上文中提到的各种基础功能优化和辅助功能均通过插件的形式实现,大家可以参照给出的样例方便地编写适合自己场景的插件。


考虑到标注数据的应用场景多种多样,仅凭一两个团队遇到的场景、总结的解决方案是有限的,所以我们还邀请了阿里、滴滴等公司的同仁一起合作进行时序数据异常标注方面的探索。


在这里,也诚邀各位一起参与讨论,对于有建设性意见或者代码、标注数据贡献的同学,有精美礼品相送。在时序数据预测、异常标注、异常检测方面,不管是想法还是吐槽,代码还是数据,统统欢迎。


作者介绍:


运小聪,百度高级研发工程师,负责监控数据分析、数据可视化等相关工作,致力于降低异常发现、故障定位的时间和人力成本,让自动化系统的眼睛更加明亮。


本文转载自公众号 AIOps 智能运维(ID:AI_Ops)。


原文链接:


https://mp.weixin.qq.com/s/yzuytvupA5I2xGDi6Ti_Sg


2019-09-10 10:302175

评论

发布
暂无评论
发现更多内容

多云管理需求分析与好用的工具介绍

行云管家

云计算 混合云 多云 云管理

实时渲染大赛结果将于3月31日晚8点B站直播公布,敬请期待!

3DCAT实时渲染

实时渲染 3D动画

TDengine 在蔚来能源系统的落地实践

TDengine

数据库 tdengine

企业和团队如何创建高效实用的知识管理体系

小炮

知识管理 企业

直播回顾|TGIP-CN 036:Apache Pulsar 最新技术进展与动态

Apache Pulsar

开源 云原生 中间件 Apache Pulsar Apache Pulsar 社区

艾特网能全面参与数据中心蒸发冷却空调系列标准编制

科技热闻

适合 Kubernetes 初学者的一些实战练习(二)

汪子熙

Kubernetes 云原生 Kubernetes 集群 Serverless Kubernetes 3月月更

哈尔滨市消防救援支队:用宜搭打造消防智慧大脑,守护冰城平安

一只大光圈

低代码 数字化 消防 钉钉宜搭

DDoS攻击与防范策略

喀拉峻

网络安全 信息安全 DDoS

Apache ShardingSphere 首篇论文被 ICDE 收录,全球数据库发展迎来新局面

SphereEx

数据库 ShardingSphere SphereEx apache 社区

大咖说|网易数帆论道 PolarDB 数据库开源 & 存储生态

大咖说

数据库 阿里云 开源 网易

NFT元宇宙开发Defi模式NFT游戏开发DAPP

Geek_232be3

区块链 NFT生态链游

流动性挖矿APP系统开发介绍模式

Geek_232be3

LIP流动性挖矿

最佳代码扫描工具,实现自动化代码扫描服务

阿里云云效

云计算 阿里云 开发 代码扫描 代码安全

钉钉协同引擎与应用场景技术探索

阿里巴巴终端技术

分布式 跨平台 客户端 开发框架

95 后新生代 Committer 贺张俭:谈谈年轻人的开源观

Apache Pulsar

开源 云原生 物联网 Apache Pulsar Apache Pulsar 社区

王者荣耀商城异地多活架构设计

王大胖

BookKeeper PMC 成员翟佳受邀参与DataFunSummit 大数据存储架构峰会

Apache Pulsar

开源 架构 云原生 bookKeeper Apache Pulsar

车联网平台百万级消息吞吐架构设计|车联网系列专题 05

EMQ映云科技

车联网 物联网 IoT emq 3月月更

重视软件开发的黑匣子

菜根老谭

bug 系统安全 程序日志

ModStartCMS模块化建站系统 v3.6.0 内容标签增强,电脑手机适配

ModStart开源

阿里代码依赖漏洞检测服务,高效杜绝代码安全隐患

阿里云云效

云计算 阿里云 云原生 代码安全 依赖漏洞检测

成本管理系统解决方案

低代码小观

企业管理 资产管理 成本优化 低成本 CRM系统

web前端培训使用 Vue3来实现文章目录功能

@零度

Vue 前端开发

RocketMQ 开源爱好者请注意邀您共探行业应用与生产实践

阿里巴巴云原生

【等保】二级等保是什么意思?哪些企业要做?多少钱?

行云管家

网络安全 等保 二级等保

《LeetCode刷题报告》题解内容Ⅰ

謓泽

3月月更

大数据培训Hive 提高查询效率的方法

@零度

hive 大数据开发

博文推荐|使用 Apache Pulsar 和 Scala 进行事件流处理

Apache Pulsar

开源 分布式 云原生 Apache Pulsar Apache Pulsar 社区

多终端运行小程序,快速丰富智慧社区使用场景

Speedoooo

智慧社区 小程序管理平台 智慧家居 智能家居生态平台 生态平台

教你识别一些sequence的相关问题

华为云开发者联盟

序列 GaussDB(DWS) sequence GTM bind关系

重磅:构建AIOps的MNIST_文化 & 方法_运小聪_InfoQ精选文章