写点什么

Netflix 开源实时监控平台 Mantis:故障平均检测时间缩减到秒级

  • 2019-11-12
  • 本文字数:2749 字

    阅读完需:约 9 分钟

Netflix 开源实时监控平台 Mantis:故障平均检测时间缩减到秒级

Netflix 开源了自己开发的 Mantis 平台,该平台能让开发者在最小化观察和操作系统的成本的情况下,实时地监控并分析运维事件,并将故障平均检测时间从几十分钟减少到了几秒钟。


2019 年 10 月 21 日,我们很高兴地宣布,Netflix 将Mantis(螳螂)开源了,这个平台能够帮助 Netflix 的工程师们更好地理解他们所开发的应用程序的各种行为,以确保为 Netflix 的会员提供最高质量的体验。而且我们相信,我们在 Netflix 所遇到的种种挑战并不一定是 Netflix 所独有的,这就是为什么我们要在更广泛的开发社区来分享这个平台。


作为一个流媒体微服务生态系统,在不影响运维判断力的情况下,Mantis 平台为开发工程师提供了让观察和操作复杂分布式系统的成本降至最低的能力。开发工程师们已经基于 Mantis 平台构建了性价比颇高的应用程序,以实现快速识别问题、触发警报、以及实施补救措施,从而最大程度地降低 Netflix 服务的宕机时间,甚至完全避免发生宕机事故。而遇到类似的指标故障,其他系统可能需要花上十多分钟才能完成精确处理,而 Mantis 将这一过程从几十分钟减少到了几秒钟,卓然有效地减少了我们的故障平均检测时间。这点是至关重要的,因为任何宕机时间对于 Netflix 都是致命的,并且会对我们的订阅用户产生非常大的负面影响,因此,宕机过程中每流逝的一秒对我们来说都很重要。


随着 Netlix 在全球日益增长的会员基数,以及随着这些会员越来越多地使用 Netflix 提供的服务,我们对 Netflix 的系统运营健康状况如何进行经济适用、便捷快速且精确无误的监控分析就变得越来越重要。例如,距离我们发表上一篇关于Mantis博客文章(2016 年 3 月)已经有两年半的时间,今日 Netflix 五分钟的宕机的影响体量已经相当于那时候两小时的宕机。

Matins 让回答未知问题变得容易

对于规模巨大又日益增长的系统而言,只使用指标度量和日志分析的传统方法已不能满足当前的系统需求。指标衡量和日志分析方法的前提是,在事故发生之前你预先就知道需要回答什么样的问题。而另一方面,Mantis 让我们完全避开这个缺点,这个平台让我们能够回答事先并未预料到的新问题,且不需要添加任何新的工具或配置。Mantis 并没有使用日志或度量指标,而是支持将事件普遍化,开发人员可以根据需要从任何能收集数据的应用程序对事件流实现访问。通过这种“按需消费”的模式,你就可以自由地将所有数据发布给 Mantis。

Matins 以经济合算的方式回答问题

如果为了能够在未来回答新的问题就发布 100%的运维数据,这么做在传统意义上成本会是非常昂贵的。而 Mantis 使用了一种随需应变的、响应式的模型,在这些事件被订阅成为事件流之前,你并不需要为这些事件付出任何成本。而为了进一步降低成本,Mantis 会为等效的订阅者重新发布相同的数据。通过这种方式,Mantis 与其他系统的显著不同之处在于,Mantis 允许我们对事件实现基于流的可观察性,同时允许开发工程师使用工具来降低成本,否则过高的成本将有害于业务。


从一开始构建 Mantis,我们就把这个指导原则准确无误地铭记于心:让我们确保最小化观察和操作系统的成本,同时也保证了不会牺牲那些必要的和机遇性的监控要点。

构建 Mantis 的指导原则

以下是构建 Mantis 平台背后的指导原则。


  1. 我们应该保证能够对原始事件进行访问。将事件发布到 Mantis 中的应用程序应该可以自由地发布每个事件。如果我们在这个阶段过早地把原始事件转换为其他形式,那么在洞察事件原因方面可能就已经处于劣势了,因为这样一来已经丢失了原始形式的数据。

  2. 我们应该能够做到实时访问这些事件。很多运维性用例在本质上是时间敏感的。而传统的方法采用发布、存储、然后批量聚合事件等步骤,这样处理起来太慢了。与之相反的是,我们应该在事件到达时逐个地对它们进行处理和服务。随着系统规模的扩张,更短的时间内事件的影响会变得更显著,实时处理这一点会变得越来越重要。

  3. 我们应该在不需要向应用程序添加新的工具和配置的情况下,基于这些收集的数据回答那些未知的新问题。无论怎么为系统打造足够的弹性,我们都不可能做到事先悉知系统可能会遇到的每一种可能的故障模式。所以,当这些未知故障不可避免地发生时,最重要的是我们可以从这些收集的数据中获取针对未知问题的新见解。因此,你应该做到能够发布具有任意上下文、任意大小的事件。这样,当你未来某次想起要向系统询问一个未知的新问题时,可以运用这些数据来回答这些新问题。

  4. 我们应该能够以一种经济适用的方式来实现上述所有这些需求。随着 Netflix 这个业务关键系统规模不断扩大,我们需要确保为该业务关键系统所打造的支撑性系统,其最终的成本不会超过业务关键系统本身。


请记住这些指导原则,接下来让我们来看看 Mantis 是如何为 Netflix 带来更多价值的。

Mantis 如何为 Netflix 带来更多价值

Mantis 投入生产的实际应用已经超过四年了。在此期间,在 Mantis 平台上已经构建了几个关键的运维洞察性应用程序。


在这些洞察性应用程序中,一些值得注意的例子包括:


  • 实时监控 Netflix 流媒体健康状况,该应用程序实时地检查 Netflix 的所有流媒体视频流量,并以精细粒度准确地识别那些对观看体验的负面影响。该系统为 Netflix 服务整体健康状况承担了预警指示的作用,并将在几秒钟内触发警告并通知相关团队。

  • 上下文警报,这个应用程序会实时地分析数十种 Netflix 微服务之间数以百万计的互动,从而识别出异常,并为运营商提供与该异常所相关的丰富的上下文信息。这些由 Mantis 在背后支持的聚合具有天然的实时特性,从而使得异常的平均检测时间从几十分钟减少到几秒钟。考虑到 Netflix 如此巨大的规模,这带来的影响确实十分深远。

  • Raven 允许用户使用我们的 Mantis 查询语言(MQL)对来自数百个流媒体源的实时数据进行各种形式的探测。

  • Cassandra 健康检查则提供了对丰富的运维事件的实时分析,并为 Netflix 里每个 Cassandra 集群生成整体性的健康状况报告。

  • 日志警报,通过实时处理来自数千个 Netflix 服务器的日志数据,来检测应用程序错误。

  • 混沌实验监控,实时地跟踪混沌实验中的用户体验变化,并在遇到负面影响时触发中断混沌实验。

  • 实时个人身份信息(PII)数据,跨越所有流媒体源实时地检测个人身份信息数据样本,以快速识别敏感数据的传输。

欢迎尝试开源的 Mantis

如果想要了解更多关于 Mantis 的信息,可以查看 Mantis 的主页。现在,可以尝试让你自己的第一个 Mantis 集群运转起来,可以选择在本地使用 Docker,也可以在云端用 Mantis CLI 在 AWS 中构建一个小集群。你也可以在 Github 上获取 Mantis 的开源代码,通过用户或开发者邮件列表与社区进行交流,为 Mantis 做出你的一份贡献。


Mantis 主页:https://netflix.github.io/mantis/


原文链接:


Open Sourcing Mantis: A Platform For Building Cost-Effective, Realtime, Operations-Focused Applications


2019-11-12 11:263552

评论

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

双非渣硕!四面阿里收到offer后,才发现学长给的面试笔记有多强大

Java 编程 程序员 面试 计算机

DBA 行业是否将会消亡?

BinTools图尔兹

运维 dba 数据库管理工具

联盟链技术

360技术

如何打造高效技术团队|专访前美篇首席架构师张超

穿过生命散发芬芳

调查采访能力考核

⼤规模短⽂本聚类的设计和实践

百度Geek说

聚类 query 内聚

从Map和Reduce角度谈Hive优化

五分钟学大数据

hive 4月日更 hive性能优化

第一课作业纠正

杰语

罗美琪和春波特的故事...

阿里巴巴云原生

容器 开发者 云原生 开发工具 消息中间件

Fluid 给数据弹性一双隐形的翅膀 -- 自定义弹性伸缩

阿里巴巴云原生

大数据 容器 云原生 监控 弹性计算

中寰-卜钢-采访提纲:车联网行业发展趋势

马踏飞机747

采访

当时尚撞上区块链,为潮酷创意赋予专属“ID”

旺链科技

产业链

想要写优秀的设计测试用例,不懂这个可不行!

程序员阿沐

软件测试 自动化测试 测试开发 测试用例 测试工程师

用知识点+实例+项目完全深入地讲解springboot原理,这份《springboot实战派》火了!

Java架构之路

Java 程序员 架构 面试 编程语言

会议更流畅,表情更生动!视频生成编码 VS 国际最新 VVC 标准

阿里云CloudImagine

阿里云 视频压缩 VVC

灰度发布系统架构设计

xcbeyond

微服务 灰度发布 4月日更

MySQL 表列数和行大小有哪些限制?

码农架构

MySQL 运维

toB SaaS会成为苏州下⼀个“⼀号产业”么?

龙归科技

数字化 tob

Spring Boot 两行代码轻松实现国际化

Java架构师迁哥

我是如何开始写作的

happlyfox

个人成长 4月日更 1 周年盛典

阿里资深技术专家崮德:如何成就更好的自己

阿里巴巴中间件

留存率计算

Flychen

iOS 面试策略之算法基础6-7节

iOSer

ios 面试 算法 ios开发 算法解析

skywalking dubbo agent 分析

kaiwen

Android Crash监控方式

Darren

监控 异常检测 Android开发 NativeCrash

混合云安全简史

龙归科技

混合云

pdf.js使用小结

空城机

大前端 4月日更 pdf.js

国产监控夜莺v4来了,大幅降低部署维护难度

巴辉特

Nightingale 滴滴夜莺

anyHouse-iOS 高仿ClubHouse

anyRTC开发者

ios 音视频 WebRTC RTC 语音通话

Spring Boot 2.0 实现优雅停机

U2647

Spring Boot 4月日更

Disruptor 源码解读

lich0079

Java volatile Disruptor CAS Concurrent

企业架构设计方法TOGAF介绍

joinM

企业架构 技术架构 业务架构 TOGAF 技术与业务

Netflix 开源实时监控平台 Mantis:故障平均检测时间缩减到秒级_数据库_Netflix技术博客_InfoQ精选文章