阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

追踪缺陷服务器: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:493231
用户头像

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

关注

评论

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

开源相亲小程序

源字节1号

开源 软件开发 小程序开发

八股MQ006——Message之旅

Codyida

后端、

索引合并,能不用就不要用吧!

江南一点雨

MySQL

Mac 配置ChatGLM-6B环境

IT蜗壳-Tango

三周年连更

Android App开发超实用实例 | ​Broadcast

TiAmo

broadcast broadcastreceiver Android APP

Studio One2024中文版补丁包

茶色酒

Studio One 许可证

Shell的数组表示

二哈侠

Shell 三周年连更 shell数组

Flink数据流介绍

阿泽🧸

flink 三周年连更

轻量级云原生大数据平台"CloudEon"正式开源

CloudEon开源

大数据 云原生 服务 解决方案 组件

Kubernetes数据持久化管理

乌龟哥哥

三周年连更

EasyRecovery易恢复2024电脑版免费数据恢复软件

茶色酒

EasyRecovery

Camtasia2024专业版电脑屏幕录制软件

茶色酒

Camtasia2024

从0到1,十分钟搭建一个微服务集群,集群由一个rpc网关和多个微服务组成

vison

微服务 gRPC Go 语言 gin 代码自动生成

2023-05-07:给你一个大小为 n x n 二进制矩阵 grid 。最多 只能将一格 0 变成 1 。 返回执行此操作后,grid 中最大的岛屿面积是多少? 岛屿 由一组上、下、左、右四个方向相

福大大架构师每日一题

Go 算法 rust 福大大

学生管理系统毕设作业

kylexy_0817

架构实战营

DevData Talks | 思码逸陆春蕊:研发效能度量落地的难点与计策

思码逸研发效能

研发效能

ChatGPT不断升级,给互联网行业甚至计算机行业带来哪些挑战和机遇呢? | 社区征文

迷彩

人工智能 AI 笔记分享 三周年征文 三周年连更

1行代码,自动群发!人人可用的微信机器人

程序员晚枫

Python 微信 机器人

百度AI,和“吴文俊奖”同行的十二年、千丈山、万里路

脑极体

百度 吴文俊奖

和写作谈谈感觉,你也许可以这样做。

叶小鍵

Camtasia Studio2024免费版屏幕录像剪辑工具

茶色酒

Camtasia Studio2024

文心一言 VS chatgpt (15)-- 算法导论3.2 4~5题

福大大架构师每日一题

福大大 ChatGPT 文心一言

应用数据加密技术概述

穿过生命散发芬芳

数据加密 三周年连更

EasyRecovery2024中文版数据恢复软件下载

茶色酒

EasyRecovery15 EasyRecovery Photo16

Portraiture2024免费版人像滤镜插件

茶色酒

Portraiture4

Linux中最低调、最易让人忽视的tmp目录,原来用处那么大!

wljslmz

Linux 三周年连更

初学者如何系统性地学习Linux?

海拥(haiyong.site)

三周年连更

试用「ChatGPT」几周之后

人工智能 ChatGPT

另一个CI/CD构建工具

weichenqi

DevOps 云原生 运维平台

Camtasia2023免费屏幕录制软件下载安装

茶色酒

Camtasia2023

运动健康app(一)

鸿蒙之旅

OpenHarmony 三周年连更

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