写点什么

追踪缺陷服务器:Netflix 的异常检测技术

  • 2015-07-20
  • 本文字数:2445 字

    阅读完需:约 8 分钟

云计算环境下,及时发现服务器集群中的性能问题至关重要。开发者经常会遇到这样一种情况,整个系统工作性能急剧下降,但简单的查找很难发现明显的漏洞,最终需要耗费大量的人力对所有服务器进行逐台排查。因此,开发者会寄希望于自动检测技术发现出现异常的服务器。针对这个问题, Netflix 的工程师们通过构建了一个自动异常检测系统,做了很好的工作。

作为世界上最大的在线影片租赁服务商,Netflix 拥有大量的服务器集群以支撑在线影片的存储以及个性化影片推荐等服务。Netflix 的工程师们也希望他们的自动异常检测系统能够发现隐藏在表面现象下的微小异常,能自动发现“不健康”的服务器,从而帮助维护人员从无数个通宵达旦中解救出来。本文通过对 Netflix 的异常检测技术进行简单介绍。文章由黄立威、张天雷整理。

玻璃上的斑点

Netflix 服务目前运行在数以万计的服务器上,可是通常会有百分之一处于不健康的状态。例如,一个服务器的网络性能可能下降,并导致请求处理延迟,这样一个不健康的服务器虽然在一个次优的状态下运行,可是在响应健康检查的时候依然会显示正常的系统级指标。事实上,一个运行缓慢或不健康的服务器比一个彻底损坏的服务器更糟,因为它的影响可以足够小,保持在我们的监控系统的容忍范围内,并且会在维护人员的检查中被忽视。虽然有时候在数千个健康的服务器中可能仅仅潜伏着几个不健康的服务器,但这仍然可能影响对客户的服务质量,并招来大量的投诉电话。

上图表示不同的服务器(不同的颜色的线表示)在不同时间上的错误率,虽然几乎所有的服务器在某些时段上都会出现高的错误率,但它们很快也会回落到零,只有紫色的线始终高于正常水平。那么,是否可以将它作为一个异常点呢?有没有一种方法能够使用时间序列数据自动找到这些异常点呢?

一个非常不健康的服务器可以很容易地通过一个阈值警报被检测出来。但是,阈值警报要求服务器的错误率在很长一段时间维持在高的状态,而且还需要对阈值进行定期调整,这实际上是非常困难的,需要考虑数据的访问模式和容量的变化等复杂因素。提高可靠性的一个关键步骤是自动发现运行在下行状态的服务器,但而它们却还不足以糟糕到通过阈值警报检测到。

暴风雪中找兔子

针对上一节中提到的问题,Netflix 采用了聚类分析的方法来解决,它属于是一种无监督机器学习的方法。聚类分析的目标是将对象分类到不同的类或者簇中,使得同一个簇中的对象比不同簇间的对象具有更高的相似性。无监督技术的优点是无需有标签的数据。虽然当前有许多不同的聚类算法,每种方法也有自身的优势,Netflix 使用了一种具有代表性的基于密度的空间聚类方法 DBSCAN 来自动检测异常服务器。

DBSCAN 最初是由 Martin Ester, Hans-Peter Kriegel, Jörg Sander 和 Xiaowei Xu 在 1996 年提出。这种技术将簇定义为密度相连的点的最大集合,能够把具有足够高密度的区域划分为簇,而将低密度区域中的点标记为异常点。从概念上讲,如果特定点属于一个簇,其附近应该有大量的其他点(距离通常有特定的函数度量)。Naftali Harris 的博客文章给出了一些通过 DBSCAN 进行聚类例子,例子中包含了聚类的可视化表示

要检测异常的服务器,服务拥有者应该指定一个度量指标来对异常点进行监测。Netflix 使用这个指标分析从Netflix 主要的时间序列遥测平台 Atlas 上收集到一个数据集,在数据集中使用 DBSCAN 算法,实现异常服务器的自动检测(下图中的红色区域为 DBSCAN 算法发现的结果)。

DBSCAN 需要配置两个输入参数,一个是距离度量,一个是最小群集大小。然而,服务器拥有者不需要考虑如何找到正确的参数组合让算法有效地识别异常点。Netflix 让服务器拥有者仅仅需要定义异常点的当前数量(在配置的时候可以是任意值)。基于这一认识,Netflix 使用模拟退火算法对距离和最小群集大小进行参数优化。这种方法可以有效地降低异常点检测的复杂度,并且可以很方便地采用并行处理技术,事实上服务器拥有者不需要过问太多算法的细节。

数据分析结果

为了对技术的有效性进行评估,Netflix 在一个产品服务中运行了这种自动异常检测技术。采用手动的方式确定服务器是否应该被列为异常点,从而作为测试数据。通过分析一周的数据,结合测试数据与异常检测系统发现的结果,计算一系列的评价指标,包括准确率,召回,和 F- 评分,结果如下:

Server Count precision Recall F-score 1960 93% 87% 90% 结果表明,虽然不能完全发现集群环境中的异常点,但已经很接近了。事实上,在云计算环境下,一个不那么完美的解决方案是完全可以接受的,因为单个节点的错误所造成的损失是相对较低的。错误地终止一台服务器几乎没有特别大的影响,因为可以立即使用一台新的服务器替代它。虽然该系统并不完全准确,但我们清楚地知道一个不完善的解决方案比没有解决方法要好得多。

进一步的改进

在实验中 Netflix 的工程师使用了一段时间的数据来做决策。相比于一个实时的方法,它也存在一个明显的缺点,即异常检测的时间与分析数据的时间窗口长短是紧耦合的。可以利用实时流处理框架对此进行改进,如 Mantis(Netflix 的事件流处理系统) Apache Spark Streaming 。此外,随着 数据流挖掘在线机器学习等领域的不断发展,通过考虑这些在线技术或许可以有效缩短检测的时间。

事实上,还可以使用部分标记数据提高参数优化的性能。目前,Netflix 正在让服务器拥有者通过使用标记数据(他们非常熟悉的领域)来做一些尝试,并使用贝叶斯参数选择技术来针对训练数据集对参数进行优化。

由于Netflix 的云计算基础设施大规模增加,自动化的决策能够进一步提高系统的可用性,并减少人为干预。服务器异常检测只是Netflix 自动化进程中的一个例子,其他的例子还包括 Scryer Hystrix 。有效地利用机器学习和自动响应技术能够提高网站的可靠性。


感谢徐川对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群InfoQ 好读者)。

2015-07-20 07:494043
用户头像

发布了 268 篇内容, 共 138.5 次阅读, 收获喜欢 24 次。

关注

评论

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

2023最新版网络安全保姆级指南,手把手带你从零基础进阶渗透攻防工程师

网络安全学海

黑客 网络安全 信息安全 计算机 渗透测试

Stripe 不再受硅谷宠爱:高层与销售分裂、限制型股票拖后腿

B Impact

2023-02-24:请用go语言调用ffmpeg,解码mp4文件并保存为YUV420SP格式文件,采用YUV420P转YUV420SP的方式。

福大大架构师每日一题

golang ffmpeg 福大大

最新攻略!掌握这些技巧,推特视频下载so easy!

frank

twitter

Python基础知识入门(四)

漫步桔田

开源面对面:浅谈数据库技术与人工智能的结合与实践

阿里云数据库开源

postgresql 阿里云 PolarDB for PostgreSQL ChatGPT 数据库技术

极光笔记 | 埋点体系建设与实施方法论

极光GPTBots-极光推送

精细化运营 数据埋点 用户运营

吞吐量最高提升 400%!百度智能云联合 NVIDIA 完成首批 17 个自动驾驶模型优化

Baidu AICLOUD

自动驾驶 模型训练

Python学生管理系统

漫步桔田

技术科普|模糊测试背后的2个核心逻辑

云起无垠

模糊测试

Airbyte,数据集成的未来

CnosDB

数据库 时序数据库 开源社区 CnosDB

2023年1月综合预订类APP用户洞察——旅游市场复苏明显,三年需求春节集中释放

易观分析

App 旅游 后疫情时代

Python银行取款系统

漫步桔田

可观测性最佳实践|阿里云事件总线 EventBridge 最佳实践

观测云

可观测性 云服务 可观测 观测云 可观测性用观测云

DNSPod十问简丽荣:国产数据库的月亮与六便士

酷克数据HashData

SaaS 行业垂直数据库需求5点思考:成本、计费、库表量、多云、低代码

B Impact

Oracle在“AI云战”比AWS、Azure的优势:多云、无竞争、收费低训练快

B Impact

热点面试题:为什么 0.1+ 0.2 != 0.3,如何让其相等?

Immerse

JavaScript 面试 大前端 前端面试题 超全前端面试题

451个PyPI包通过安装Chrome扩展窃取加密信息

墨菲安全

供应链安全 投毒

【kafka】常用命令汇总

石臻臻的杂货铺

kafka

活动报名:Tapdata Cloud V3 最新功能全解与核心应用场景演示

tapdata

7 理解企业的战略

涛哥 数字产品和业务架构

企业架构 业务架构 战略

收割不易,五面Alibaba终拿Java岗offer

程序知音

Java java面试 Java进阶 后端技术 Java面试八股文

Tapdata Connector 实用指南:实时数仓场景之数据实时同步至 ClickHouse

tapdata

数据库 实时数仓

数据库行业的 “叛逆者”:大数据已“死”,MotherDuck 当立

CnosDB

数据库 时序数据库 开源社区 CnosDB

金三银四吃透这份微服务笔记,面试保准涨10K+

小小怪下士

Java 程序员 面试 微服务

追踪缺陷服务器:Netflix的异常检测技术_语言 & 开发_张天雷_InfoQ精选文章