Banner
首页 > 新闻 > 内容
智能运维的复杂异常检测如何快速落地?
- 2019-01-08 -

本文提到智能运维的异常检测(Anomaly Detection)特指在运维领域中对时序数据的异常检测,目的是为了发现时序数据中状态的变化。在我们看来,异常检测一般可分为两类:简单异常检测和复杂异常检测。

简单异常检测:一般指恒定阈值检测,智能运维比如判断可用性指标是否小于99.99%,如果小于则检测结果为异常,否则检测结果为正常。简单恒定阈值检测一般适用于可用性、资源利用率等监控指标。

复杂异常检测:对于收入、错误率、流量等业务监控指标,需要检测天/周/月/年等环比变化或者突增突降等状态变化,这类业务监控指标的维度特征较多(比如地域、运营商等),特征变化也比较快(例如电商定期搞活动,流量瞬间涨起来,干扰正常的异常检测)。恒定阈值检测往往无法检测到这类业务监控指标的状态变更,所以智能运维还需要复杂异常检测算法来检测业务监控指标的异常。为了发现监控指标的状态变化,复杂异常检测往往会采用机器学习、深度学习智能运维等比较复杂的技术。简单异常检测相比,复杂异常检测对落地流程和异常检测的运行平台提出了更高的要求。

为了支持简单异常检测,异常检测的运行平台只需要能够支持用户添加自定义报警判断规则即可。比如,对于上面提到的可用性指标,用户可以在系统中将报警判断规则配置为表达式“SLI < 99.99%”,智能运维然后等着接收报警就可以了。

1.线下编写算法脚本(一般是Matlab或Python脚本),并根据历史数据,离线训练算法所依赖的参数,通过用历史Case进行回溯验证效果。在这个过程中,算法工程师需要反复调整算法参数,智能运维直到准确率和召回率都达到目标为止。

2.将算法脚本改写成线上代码(一般是C++、JAVA语言等编译型语言)。这是因为线下编写的算法代码一般和线上运行代码使用不同语言开发,线下实验算法代码更侧重研发效率,需要快速迭代和测试,而智能运维线上运行代码更侧重运行效率,高效稳定运行。

3.最后将改写后的算法代码生效到线上,并观察其运行稳定性和资源消耗情况,及时调整线上资源分配情况。

以上智能运维流程在实践的过程中存在若干阻塞点,导致复杂算法落地时间长,算法迭代效率低: