Netflix开源了自己开发的Mantis平台,该平台能让开发者在最小化观察和操作系统的成本的情况下,实时地监控并分析运维事件,并将故障平均检测时间从几十分钟减少到了几秒钟。
2019年10月21日,我们很高兴地宣布,Netflix将Mantis(螳螂)开源了,这个平台能够帮助Netflix的工程师们更好地理解他们所开发的应用程序的各种行为,以确保为Netflix的会员提供最高质量的体验。而且我们相信,我们在Netflix所遇到的种种挑战并不一定是Netflix所独有的,这就是为什么我们要在更广泛的开发社区来分享这个平台。
作为一个流媒体微服务生态系统,在不影响运维判断力的情况下,Mantis平台为开发工程师提供了让观察和操作复杂分布式系统的成本降至最低的能力。开发工程师们已经基于Mantis平台构建了性价比颇高的应用程序,以实现快速识别问题、触发警报、以及实施补救措施,从而最大程度地降低Netflix服务的宕机时间,甚至完全避免发生宕机事故。而遇到类似的指标故障,其他系统可能需要花上十多分钟才能完成精确处理,而Mantis将这一过程从几十分钟减少到了几秒钟,卓然有效地减少了我们的故障平均检测时间。这点是至关重要的,因为任何宕机时间对于Netflix都是致命的,并且会对我们的订阅用户产生非常大的负面影响,因此,宕机过程中每流逝的一秒对我们来说都很重要。
随着Netlix在全球日益增长的会员基数,以及随着这些会员越来越多地使用Netflix提供的服务,我们对Netflix的系统运营健康状况如何进行经济适用、便捷快速且精确无误的监控分析就变得越来越重要。例如,距离我们发表上一篇关于Mantis博客文章(2016年3月)已经有两年半的时间,今日Netflix五分钟的宕机的影响体量已经相当于那时候两小时的宕机。
对于规模巨大又日益增长的系统而言,只使用指标度量和日志分析的传统方法已不能满足当前的系统需求。指标衡量和日志分析方法的前提是,在事故发生之前你预先就知道需要回答什么样的问题。而另一方面,Mantis让我们完全避开这个缺点,这个平台让我们能够回答事先并未预料到的新问题,且不需要添加任何新的工具或配置。Mantis并没有使用日志或度量指标,而是支持将事件普遍化,开发人员可以根据需要从任何能收集数据的应用程序对事件流实现访问。通过这种“按需消费”的模式,你就可以自由地将所有数据发布给Mantis。
如果为了能够在未来回答新的问题就发布100%的运维数据,这么做在传统意义上成本会是非常昂贵的。而Mantis使用了一种随需应变的、响应式的模型,在这些事件被订阅成为事件流之前,你并不需要为这些事件付出任何成本。而为了进一步降低成本,Mantis会为等效的订阅者重新发布相同的数据。通过这种方式,Mantis与其他系统的显著不同之处在于,Mantis允许我们对事件实现基于流的可观察性,同时允许开发工程师使用工具来降低成本,否则过高的成本将有害于业务。
从一开始构建Mantis,我们就把这个指导原则准确无误地铭记于心:让我们确保最小化观察和操作系统的成本,同时也保证了不会牺牲那些必要的和机遇性的监控要点。
以下是构建Mantis平台背后的指导原则。
请记住这些指导原则,接下来让我们来看看Mantis是如何为Netflix带来更多价值的。
Mantis投入生产的实际应用已经超过四年了。在此期间,在Mantis平台上已经构建了几个关键的运维洞察性应用程序。
在这些洞察性应用程序中,一些值得注意的例子包括:
如果想要了解更多关于Mantis的信息,可以查看Mantis的主页。现在,可以尝试让你自己的第一个Mantis集群运转起来,可以选择在本地使用Docker,也可以在云端用Mantis CLI在AWS中构建一个小集群。你也可以在Github上获取Mantis的开源代码,通过用户或开发者邮件列表与社区进行交流,为Mantis做出你的一份贡献。
Mantis主页:https://netflix.github.io/mantis/
领取专属 10元无门槛券
私享最新 技术干货