Netflix开源Mantis:基于微服务的运维监控平台


今天,我们很高兴地宣布:Mantis开源了,该平台可帮助Netflix工程师更好地了解其应用程序的行为,以确保为我们的会员提供最高质量的体验。我们认为,在Netflix面临的挑战并不一定是Netflix独有的,这就是我们与广大社区共享它的原因。
作为流式微服务生态系统,Mantis平台为工程师提供了在不影响运营洞察力的情况下,将观察和运维复杂分布式系统的成本降至最低的功能。工程师们在Mantis之上构建了具有成本效益的应用程序,以快速发现问题,触发警报并进行补救,以最大程度地减少或完全避免Netflix服务的停机。
在其他系统可能需要十多分钟才能准确处理指标的情况下,Mantis将其从数十分钟减少到几秒钟,从而有效地减少了我们的平均检测时间。这是至关重要的,因为任何数量的停机时间都是残酷的,并且对我们的成员造成了难以置信的巨大影响-在停机期间,每一秒都很重要。例如,今天发生五分钟的中断相当于我们上次发布Mantis博客时发生的两小时的中断。

使发现新问题变得容易
仅使用度量和日志的传统方式不足以应对大规模且不断增长的系统。指标和日志要求您提前知道要回答什么。另一方面,Mantis通过使我们能够回答新问题而不必添加新的仪器,从而使我们能够完全避开此缺点。Mantis代替了日志或指标,而是使事件民主化,使开发人员可以根据需要从任何检测到的应用程序中获取事件流。通过按需消费,您可以将所有数据自由发布到Mantis。

在解决问题方面具有成本效益
传统上,通过发布100%的运营数据以使您将来能够解决新问题在规模上是令人望而却步的。Mantis使用按需响应模型,在这些事件被订阅之前,您无需为这些事件付费。为了进一步降低成本,Mantis为同等订户重新发布了相同的数据。通过这种方式,Mantis与其他系统的区别在于,它使我们能够在事件上实现基于流的可观察性,同时使工程师能够使用工具来降低原本会对业务造成不利影响的成本。

背后的指导原则
以下是构建螳螂的指导原则。

  1. 我们应该可以访问原始事件。将事件发布到Mantis中的应用程序应该可以自由发布每个事件。如果我们在此阶段过早地转换事件,那么在获取洞察力方面已经处于劣势,因为原始形式的数据已经丢失。
  2. 我们应该能够实时访问这些事件。操作用例本质上是时间敏感的。批量发布,存储然后聚合事件的传统方法太慢。相反,我们应该在事件到达时一次处理和处理事件。随着规模的扩大,影响将在短得多的时间内变得越来越大,这一点变得越来越重要。
  3. 我们应该能够对此数据提出新的问题,而不必在您的应用程序中添加新的工具。尽管内置了使这些系统具有弹性的所有严格条件,但无法提前知道我们的系统可能遇到的每种可能的故障模式。当不可避免地发生这些故障时,重要的是我们可以利用这些数据得出新的见解。您应该可以根据需要发布具有尽可能多的上下文的大型事件。这样,当您想到将来要问系统的新问题时,将可以使用数据来回答这些问题。
  4. 我们应该能够以具有成本效益的方式完成上述所有工作。随着关键业务系统规模的扩大,我们需要确保支持这些关键业务系统的系统最终不会比关键业务系统本身成本更高。

牢记这些指导原则,让我们看一下Mantis如何为Netflix带来价值

如何为Netflix增值
Mantis已经投入生产超过四年了。在此期间,在Mantis平台之上构建了一些关键的操作洞察应用程序。
一些值得注意的例子包括:
实时监控Netflix流健康状况,可实时检查所有Netflix流视频流量,并以细粒度精确地识别对观看体验的负面影响。该系统可作为Netflix服务整体运行状况的预警指示器,并在几秒钟内触发并提醒相关团队。
上下文警报可实时分析数十种Netflix微服务之间的数百万次交互,以识别异常并为运营商提供丰富而相关的上下文。这些由Mantis支持的聚合的实时性允许将检测平均时间从数十分钟减少到几秒钟。鉴于Netflix的规模,这将产生巨大的影响。
Raven允许用户使用我们的Mantis查询语言(MQL)对来自数百个流媒体源的实时数据进行临时浏览。
Cassandra运行状况检查,可实时分析丰富的运行事件,以全面了解Netflix每个Cassandra群集的运行状况。
通过实时处理来自数千个Netflix服务器的数据,对日志数据发出警报,以检测应用程序错误。
混沌实验监控,可实时跟踪用户在混沌练习中的体验,并在出现不利影响时触发混乱练习的中止。
实时个人身份信息(PII)数据检测跨所有流源采样数据,以快速识别敏感数据的传输。