乐趣区

关于java:监控告警满飞天运维在家睡到自然醒

本文论述了 Netflix 的系统监控实际:自研 Telltale,胜利运行并监控着 Netflix 100 多个生产应用程序的运行状况。

难忘的经验

置信很多运维人都有过这样的经验:监控零碎某个指标超过阈值,触发告警。大半夜里,你被紧急号召。

半睁着眼,你满脸纳闷:“零碎真出问题了吗,还是仅仅须要调整下告警?上一次有人调整咱们的告警阈值是在什么时候?有没有可能是上游或者上游的服务呈现了问题?”

鉴于这是一次十分重要的利用告警,因而你不得不从床上爬起来,迅速关上电脑,而后浏览监控仪表盘来追踪问题源头。

忙了半天,你还没确认这个告警是来自于零碎的问题,但也意识到,从海量数据中寻找线索时,工夫正在流逝。你必须尽快定位告警的起因,并祷告零碎稳固运行。

对咱们的用户来讲,持重的 Netflix 服务至关重要。当你坐下来看《养虎为患》时,你必定心愿它能顺利播放。

多年来,咱们从常常在深夜被号召的工程师那里理解到应用程序监控的痛点:

  • 过多的告警
  • 太多滚动浏览的仪表盘
  • 太多的配置
  • 过多的保护

Telltale

咱们的流媒体团队须要一个全新的监控零碎,能够让团队成员疾速地诊断和修复问题;因为在零碎告警的紧急情况下,每一秒都至关重要!

咱们的 Node 团队 须要一个仅需一小撮人就能运维大型集群的零碎。因而,咱们构建了 Telltale。

Telltale 的个性如下:

会集监控数据源,创立整体监控视图:
Telltale 会集了各种监控数据源,从而能创立对于应用程序运行状况的整体监控视图。

多维度判断应用程序的健康状况:
Telltale 能够通过多个维度判断一个应用程序的衰弱状况,而无需依据繁多指标频繁调整告警阈值。

及时告警:
因为咱们晓得应用程序在什么状况下是失常的,所以能在应用程序有异样趋势时及时告诉应用程序的所有者。

显示要害数据:
指标是理解利用程序运行状态的要害。但很多时候,你领有太多的指标、太多的图表以及太多的监控仪表盘。而 Telltale 仅显示应用程序中有用的相干数据及其上游和上游服务的数据。

用色彩辨别问题的重大水平:
咱们应用不同的色彩来示意问题的重大水平(除抉择色彩之外,还能够让 Telltale 显示不同的数字),以便运维人员一眼就能判断出应用程序的运行状况。

高亮提醒:
咱们还会对一些监控事件进行高亮提醒,比方部分区域的网络流量疏散及就近的 服务部署,这些信息对于全面理解服务的衰弱状况至关重要,尤其是在真正产生系统故障的状况下。

这就是咱们的 Telltale 监控。它现已胜利运行并提供监控服务,监控着 Netflix 100 多个生产应用程序的运行状况。

应用程序衰弱评估模型

微服务并非是孤立存在和运行的。它须要特定的依赖,与其余服务进行数据交互,甚至位于不同的 AWS 区域。

下面的调用图是一个绝对简略的图,其中波及许多服务,理论的调用链可能会更深更简单。

一个应用程序是零碎生态的一部分,它的运行状态可能会受到相干属性变动的强劲影响,也有可能会受到区域范畴内某些事件的影响从而产生根本性扭转。

canary 的启动可能会对应用程序产生肯定影响。在肯定水平上,上游或上游服务的部署同样也能够带来肯定的影响。

Telltale 通过应用多个维度的数据源构建一个一直自我优化的模型来监控应用程序的衰弱度:

  • Atlas 时序指标
  • 区域网络流量疏散
  • Mantis 实时流数据
  • 基础架构变更事件
  • Canary 部署及应用
  • 上、上游服务的运行状况
  • 表征 QoE 的相干指标
  • 告警平台收回的报警

不同的数据源对应用程序衰弱度的影响权重不同。例如,与错误率减少相比,响应工夫的减少对应用程序的影响要小很多。

错误代码有很多,然而某些特定的错误代码的影响要比其余错误代码的影响大。在服务上游部署 canary 可能不如在上游部署带来的成果显著。

区域网络流量转移意味着某个区域的网络流量降为零而另一个区域的网络流量会加倍。

你能够感触下不同的指标对于监控的影响。监控指标的具体含意决定了咱们应该如何迷信无效地应用它来进行监控。

在构建应用程序健康状况视图时,Telltale 思考了所有这些因素。应用程序衰弱评估模型是 Telltale 的外围。

智能监控

每个服务运维人员都晓得告警阈值调整的难度。将阈值设置得太低,你会收到大量虚伪告警。

如果适度弥补并放宽告警阈值,就会错过重要的异样正告。这样导致的最终后果是对告警不足信赖。Telltale 能够帮忙你罢黜一直调整相干配置的繁琐工作。

通过提供精确的和严格管理的数据源,咱们能让应用程序所有者的设置和配置过程变得更加容易。

这些数据源通过依照肯定的组合利用到程序的配置中,以实现最常见的服务类型配置。

Telltale 能够主动追踪服务之间的依赖关系,以构建应用程序衰弱评估模型中的拓扑。

通过数据源治理以及拓扑监测,在不必付出很大的致力状况下就能使配置放弃最新状态。那些须要手动实际的一些场景依然反对手动配置和调整。

没有任何一个独立的算法能够实用咱们所有的监控场景。因而,咱们采纳了混合算法,包含统计算法、基于规定的算法和机器学习算法。

不久后,咱们将在 Netflix Tech Blog 上发表一篇针对咱们监控算法的文章。

Telltale 还具备分析器,可用于趋势探测或内存透露监测。智能监控意味着咱们的用户可以信赖咱们的监控后果。

这表明故障产生时,用户能更快地定位和解决零碎异样问题。

智能告警

智能监控必然会促成智能告警。当 Telltale 检测到应用程序中的运行异样时,就会产生异样事件。

团队能够抉择通过 Slack、电子邮件或 PagerDuty(均由咱们的外部告警零碎提供反对)进行告警。

如果该异样问题是由上游或上游零碎引起的,则 Telltale 的上下文感知路由会揭示服务对应的保护团队。

智能告警还意味着运维团队针对特定异样只会收到一个告诉,也就是说,告警风暴曾经成为过来式。

在零碎呈现问题时,把握精确的信息至关重要。咱们的 Slack 告警程序还会启动一个蕴含无关事件上下文信息的线程,提供 Telltale 辨认到的异样问题信息及问题产生的起因。

正确的上下文能够不便咱们理解应用程序的以后状态,以便值班运维的工程师能有针对性的定位和修复问题。

异样告警事件会一直倒退而且领有本人的生命周期,因而及时更新事件状态至关重要。告警异样是恶化了还是好转了?是否要思考新的监控信息或事件?

Telltale 在以后事件产生扭转时会更新 Slack 线程。零碎返回失常状态后,该线程将被标记为“已解决”,因而用户一眼就能晓得哪些异样事件正在解决中,哪些异样事件已胜利修复。

这些 Slack 线程不仅仅实用于 Telltale。团队还能够用它们来共享无关事件的其余数据,不便进一步察看、实践剖析和探讨。

异样信息数据和探讨全副集中在一个线程中,不便达成针对以后异样的共识,有利于更快提出问题的解决方案以及异样事件的预先剖析。

咱们致力于进步 Telltale 告警的品质。一种办法是向咱们的用户学习。因而,咱们在 Slack 音讯中提供了反馈按钮。

用户能够通知咱们当前某些状况不须要再产生告警,或提供某些告警不合理的起因。智能告警意味着用户可以信赖咱们的告警。

为什么我的应用服务运行状态欠佳?各种类型的监控数据、应用程序相干常识以及跨多种服务数据的相关性,有助于 Telltale 检测剖析利用程序运行衰弱度升高的起因。

这些起因包含实例异样、相干依赖的监测和部署异样、数据库异样或者网络流量顶峰等。突出高亮显示这些可能的起因能够帮忙运维人员节俭大量贵重的工夫。

异样事件治理

当 Telltale 发送告警时,它还会创立一个快照,其中援用了不失常的监控信号数据。随着新监控信息的到来,会将其增加到此快照中。

这简化了团队的很多预先审查流程。当须要复查过来的异样问题时,“应用程序事件摘要”性能能够从各个方面显示以后的问题,包含一些要害指标,比方总停机工夫和 MTTR(均匀解决工夫)。

咱们心愿帮忙咱们的团队理解更多的异样事件的模式,以便进步咱们服务的整体可用性。

部署监控

能够看出,Telltale 的应用程序衰弱评估模型及其智能监控性能十分弱小,所以咱们也会将其利用于平安部署方面。咱们从开放源码交付平台 Spinnaker 开始测试。

随着 Spinnaker 逐步推出新版本,咱们应用 Telltale 间断监监控运行新版本实例的运行状态。

继续监控意味着新部署在问题呈现时能自行进行并进行回滚操作。这意味着部署存在问题时的影响半径较小,持续时间更短。

继续优化

在简单的零碎中,运行微服务十分具备挑战性。Telltale 的智能监控和告警性能能够帮忙咱们运维人员进步零碎可用性、升高运维人员的劳动强度并缩小工作人员大半夜被叫醒的频率。

咱们为 Telltale 做到的这些性能晋升感到高兴。然而远没有完结,咱们仍在一直摸索新算法,以进步告警的准确性。

咱们将在当前的 Netflix Tech Blog 文章中具体介绍咱们的工作进展。咱们依然在对应用程序衰弱评估模型进行进一步评估和改良。

咱们置信服务运行日志和跟踪数据中会蕴含更多有价值的信息,这样咱们就能采集到更有用的指标数据。咱们很期待与平台其余团队进行单干,共同开发这些新性能。

将新利用监控引入 Telltale 能够享受到很好的服务体验,然而无奈很好的进行扩大,所以咱们相对能够优化和进步自服务的用户界面。

咱们确信,有更好的启发式办法能帮忙用户找出影响服务衰弱度的一些因素。Telltale 简化了应用程序的监控。

起源 | http://7t4z2.cn/2Oa14

退出移动版