指标、监控和警报简介

简介

了解基础设施和系统的状态对于确保服务的可靠性和稳定性至关重要。 有关部署的运行状况和性能的信息不仅可以帮助您的团队对问题做出反应,还可以让他们放心地进行更改。 获得这种洞察力的最佳方法之一是使用强大的监控系统,该系统可以收集指标,可视化数据,并在出现故障时提醒操作员。

在本指南中,我们将讨论什么是指标、监控和警报。我们将讨论它们的重要性、它们提供的机会类型以及您可能希望跟踪的数据类型。在此过程中,我们将介绍一些关键术语,并以简短的术语表结束,这些术语是您在探索这一领域时可能会遇到的其他术语。

什么是指标、监控、告警?

指标、监控和警报都是相互关联的概念,共同构成了监控系统的基础。它们能够让您了解系统的运行状况,帮助您了解使用趋势或行为,并了解您所做更改的影响。如果指标超出您的预期范围,这些系统可以发送通知,提示操作员查看,然后可以帮助显示信息,以帮助确定可能的原因。

在这一节中,我们将看看这些单独的概念以及它们是如何组合在一起的。

什么是指标,我们为什么要收集它们?

度量表示可以在整个系统中观察和收集的资源使用情况或行为的原始度量。这些可能是操作系统提供的低级使用摘要,也可能是与组件的特定功能或工作相关的高级数据类型,如每秒处理的请求或Web服务器池中的成员身份。有些指标是与总容量相关的,而另一些指标则表示为指示组件忙碌程度的比率。

通常,最简单的指标是操作系统已经公开的那些指标,用于表示底层物理资源的使用情况。有关磁盘空间、CPU负载、交换使用等的数据已经可用,可以立即提供价值,并且可以转发到监控系统,而不需要太多额外的工作。许多Web服务器、数据库服务器和其他软件也提供自己的指标,这些指标也可以向前传递。

对于其他组件,尤其是您自己的应用程序,您可能需要添加代码或接口来公开您关心的指标。收集和公开指标有时被称为向您的服务添加检测

指标很有用,因为它们提供了对系统行为和运行状况的洞察,尤其是在汇总分析时。它们代表您的监控系统使用的原材料,用于构建环境的整体视图,自动响应变化,并在需要时提醒人类。指标是用于了解历史趋势、关联不同因素以及衡量性能、消耗或错误率变化的基本值。

什么是监控?

度量表示系统中的数据,而监视是收集、聚合和分析这些值以提高对组件特征和行为的认识的过程。来自您环境中不同部分的数据被收集到一个监控系统 中,该系统负责存储、聚合、可视化,并在值满足特定要求时启动自动响应。

一般来说,指标和监控之间的差异反映了数据和信息之间的差异。 数据由原始的、未处理的事实组成,而信息是通过分析和组织数据来构建提供价值的上下文而产生的。 监控获取指标数据,将其聚合,并以各种方式呈现,使人们能够从各个部分的集合中提取见解。

监控系统实现了许多相关功能。他们的首要职责是接受和存储传入数据和历史数据。虽然代表当前时间点的值很有用,但查看这些数字与过去值的关系以提供有关变化和趋势的背景几乎总是更有帮助。这意味着监测系统应该能够在一段时间内管理数据,这可能涉及对较旧的数据进行采样或汇总。

其次,监控系统通常提供数据的可视化。虽然指标可以显示和理解为单独的值或表,但当信息以视觉上有意义的方式组织时,人类更善于识别趋势和理解组件如何组合在一起。监控系统通常用可配置的图形和仪表板表示它们测量的组件。

监测系统提供的另一项功能是组织和关联来自各种输入的数据。要使这些指标有用,管理员需要能够识别不同资源之间和服务器组之间的模式。例如,如果应用程序遇到错误率峰值,管理员应该能够使用监控系统来发现该事件是否与相关资源的容量耗尽重合。

最后,监控系统通常用作定义和激活警报的平台,我们将在下面讨论这一点。

什么是告警?

警报是监控系统的响应组件,它根据度量值的变化执行操作。警报定义由两个组件组成:基于指标的条件或阈值,以及当值超出可接受条件时要执行的操作。

虽然监控系统对于主动解释和调查非常有用,但完整的监控系统的主要好处之一是让管理员脱离系统。 警报允许您定义有意义的情况,以积极管理,同时依靠软件的被动监视来监视不断变化的条件。

虽然通知责任方是最常见的警报操作,但也可以基于阈值违规触发一些程序性响应。例如,指示您需要更多CPU来处理当前负载的警报可以使用自动缩放应用程序该层的脚本来响应。虽然这不是严格意义上的警报,因为它不会导致通知,但相同的监控系统机制通常也可以用来启动这些过程。

然而,警报的主要目的仍然是让人们注意到您系统的当前状态。自动响应是确保仅在需要有知识的人考虑的情况下才触发通知的重要机制。警报本身应该包含有关哪里出了问题以及在哪里查找其他信息的信息。然后,对警报做出响应的个人可以使用监控系统和相关工具(如日志文件)来调查问题的原因并实施缓解策略。

即使是中等复杂性的基础设施也需要区分警报的严重程度,以便可以使用适合问题规模的方法通知负责的团队或个人。 例如,存储利用率的提高可能需要工作票或电子邮件,而面向客户端的错误率或无响应性的增加可能需要向随叫随到的员工发送页面。

跟踪哪种类型的信息比较重要?

随着基础设施的发展,您监视的值的类型和跟踪的信息可能会发生变化。由于系统通常按层次运行,更复杂的层构建在更原始的基础设施之上,因此在规划您的监控策略时,考虑这些不同级别的可用指标可能会很有用。

主机类指标

基本指标层次结构的最底层是基于主机的指标。这些将涉及评估单个计算机的运行状况或性能的任何内容,暂时不考虑其应用程序堆栈和服务。这些主要包括操作系统或硬件的使用情况或性能,例如:

  • CPU
  • 内存
  • 磁盘空间
  • 进程

这些可以让您了解可能影响一台计算机保持稳定或执行工作的能力的因素。

应用指标

您可能需要查看的下一类指标是应用程序指标。这些指标与依赖于主机级资源(如服务或应用程序)的处理或工作单元有关。要查看的特定度量类型取决于服务提供什么、它具有什么依赖关系以及它与哪些其他组件交互。此级别的指标是应用程序的运行状况、性能或负载的指示器:

  • 错误率和成功率
  • 服务故障和重启
  • 响应的性能和延迟
  • 资源使用情况

这些指示器有助于确定应用程序是否正常且高效地运行。

网络和连接指标

对于大多数类型的基础设施,网络和连通性指标将是另一个值得探索的数据集。这些是面向外部可用性的重要衡量标准,但也是确保跨多台计算机的任何系统的其他计算机都可以访问服务的关键。与我们到目前为止讨论的其他指标一样,应该检查网络的总体功能正确性以及提供必要性能的能力,方法是查看:

  • 互联互通
  • 错误率和丢包率
  • 延迟
  • 带宽利用率

监控您的网络层可以帮助您提高内部和外部服务的可用性和响应速度。

服务器池指标

在处理横向扩展的基础设施时,您需要为IS服务器池添加另一层基础设施指标。虽然有关单个服务器的指标很有用,但在规模上,更好地将服务表示为一组机器执行工作并充分响应请求的能力。这种类型的指标在很多方面只是应用程序和服务器指标的更高级别的推断,但本例中的资源是同构服务器,而不是机器级别的组件。您可能希望跟踪以下数据:

  • 池化资源使用情况
  • 规模调整指标
  • 降级实例

收集总结服务器集合运行状况的数据对于了解系统处理负载和响应更改的实际能力非常重要。

对外依赖指标

您可能希望添加到系统中的其他指标是与外部依赖项相关的指标。通常,服务提供状态页或API来发现服务中断,但在您自己的系统中跟踪这些情况-以及您与服务的实际交互-可以帮助您识别可能影响您的运营的提供商问题。可能适用于在此级别进行跟踪的一些项目包括:

  • 服务状态和可用性
  • 成功率和错误率
  • 运行费率和运营成本
  • 资源枯竭

还有许多其他类型的指标可以帮助收集。在不同的关注点水平上概念化最重要的信息可以帮助您确定对预测或识别问题最有用的指标。请记住,较高级别上最有价值的指标可能是较低层提供的资源。

影响您选择监控内容的因素

为了心灵的平静,在理想的世界里,你会从一开始就跟踪与你的系统相关的一切,以防有一天某一项可能与你相关。然而,这可能是不可能的,甚至是不可取的,原因有很多。

以下几个因素可能会影响您选择收集数据并采取行动:

  • 可用于跟踪的资源 :根据您的人力资源、基础设施和预算,您必须将跟踪的范围限制为您能够负担得起的实施和合理管理的范围。
  • 您的应用程序的复杂性和用途 :您的应用程序或系统的复杂性会对您选择跟踪的内容产生很大影响。对于某些软件来说可能是关键任务的项目在其他软件中可能根本不重要。
  • 部署环境 :虽然强大的监控对生产系统最重要,但试运行和测试系统也会从监控中受益,尽管在严重性、粒度和测量的整体指标方面可能会有所不同。
  • 指标有用的可能性 :影响某件事是否被衡量的最重要的因素之一是它在未来的帮助潜力。跟踪的每个额外指标都会增加系统的复杂性并占用资源。数据的必要性也会随着时间的推移而变化,需要定期重新评估。
  • 稳定性有多重要 :简单地说,稳定性和正常运行时间可能不是某些类型的个人或早期项目的优先事项。

影响您决策的因素将取决于您的可用资源、项目的成熟度和您所需的服务级别。

监控预警系统的重要特性

虽然每个监控应用程序或服务都有自己的优势和劣势,但最佳选项通常都有一些重要的特点。下面是在评估监测系统时需要寻找的几个更重要的特征。

独立于大多数其他基础设施

适当监测系统的最基本要求之一是不受其他服务的影响。虽然有时将服务组合在一起很有用,但监视系统的核心职责、它在诊断问题方面的帮助以及它与受监视系统的关系意味着监视系统独立可访问是很重要的。您的监控系统不可避免地会对其监控的系统产生一些影响,但您的目标应该是将这种影响保持在最低限度,以减少您的跟踪对性能的影响,并在发生其他系统问题时提高监控的可靠性。

值得信赖

另一个基本要求是可靠性。由于监控系统负责收集、存储和提供对高价值信息的访问,因此您可以相信它每天都能正确运行,这一点很重要。丢失的指标、服务中断和不可靠的警报都会立即对您有效管理基础设施的能力产生有害影响。这不仅适用于核心软件可靠性,也适用于您启用的配置,因为不准确的警报等错误可能会导致对系统的信任丧失。

简单易用的摘要和明细视图

能够按需显示高级别摘要和请求更多详细信息是确保指标数据对操作员有用和可用的重要功能。设计仪表板,以直观易懂的方式显示最常查看的数据,可以帮助用户一目了然地了解系统状态。可以为不同的工作职能或感兴趣的领域创建许多不同的仪表板视图。

同样重要的是,能够从摘要显示中向下钻取以显示与当前任务最相关的信息。动态调整图表的比例,关闭不必要的指标,并叠加来自多个系统的信息,这对于使该工具交互地用于调查或根本原因分析至关重要。

维护历史数据的有效策略

当监控系统拥有丰富的数据历史,可以帮助建立长期的趋势、模式和一致性时,监控系统是最有用的。虽然理想情况下,所有信息都将无限期地保留在其原始粒度中,但成本和资源限制有时会使其有必要以较低的分辨率存储较旧的数据。具有以全粒度和采样格式处理数据的灵活性的监控系统为如何处理不断增长的数据量提供了更广泛的选择。

一个有用的相关功能是能够轻松导入现有数据集。如果降低历史指标的信息密度不是一个有吸引力的选择,那么将较旧的数据分流到长期存储解决方案可能是更好的替代方案。在这种情况下,您不需要在系统中维护较旧的数据,但当您希望分析或使用它时,您需要能够批量重新加载它。

能够关联不同来源的因素

监控系统负责提供整个基础设施的整体视图,因此它需要能够显示相关信息,即使这些信息来自不同的系统或具有不同的特征。管理员应该能够随意地将来自其系统的不同部分的信息粘合在一起,以了解整个基础架构中的潜在交互和整体状态。确保跨系统配置时间同步是能够可靠地关联来自不同系统的数据的先决条件。

轻松开始跟踪新的云计算基础架构

为了使您的监控系统能够准确地代表您的系统,您需要能够随着机器和基础设施的变化进行调整。 在添加额外的机器时,最小的摩擦力将有助于您这样做。 同样重要的是,能够轻松删除退役的机器,而不会破坏与它们相关的收集数据。 系统应该使这些操作尽可能简单,以鼓励将监控设置为实例配置或退出过程的一部分。

一个重要的相关能力是,可以轻松地设置监控系统来跟踪全新的指标。这取决于在核心监控配置中定义指标的方式,以及可用于向系统发送指标数据的机制的种类和质量。定义新的指标通常比添加额外的机器更复杂,但降低添加或调整指标的复杂性将帮助您的团队在适当的时间范围内响应不断变化的需求。

灵活强大的告警功能

要评估的监控系统最重要的方面之一是其警报能力。除了非常严格的可靠性要求外,警报系统还需要足够灵活,能够通过多种媒介通知操作员,并且足够强大,能够编写深思熟虑、可操作的通知触发器。许多系统通过提供与现有寻呼服务或信使应用程序的集成来推迟向其他方实际传递通知的责任。这最大限度地减少了警报功能的责任,并且通常提供了更灵活的选项,因为插件只需要使用外部API。

然而,监控系统不能推迟的部分是定义警报参数。警报的定义基于超出可接受范围的值,但定义可能需要一些细微差别,以避免过度警报。例如,瞬时峰值通常不是问题,但持续的高负荷可能需要操作员的注意。能够清楚地定义警报的参数是组成一组可靠的警报条件的必要条件。

附加术语

当您探索监视生态系统时,您将开始遇到一组共享的术语,这些术语经常用于讨论监视系统的特征、要处理的数据以及需要考虑的不同权衡。虽然不是详尽的,但下面的列表可以帮助你介绍一些你最有可能遇到的术语。

  • 可观测性 :虽然没有严格的定义,但可观测性是一个通用术语,用于描述与提高对系统的感知和可见性相关的过程和技术。这可以包括监控、指标、可视化、跟踪和日志分析。
  • 资源 :在监控和软件系统的上下文中,资源是任何可耗尽的或有限的依赖。根据所讨论的系统的不同部分,什么被认为是资源可能会有很大的不同。
  • 时延 :时延是衡量一个动作完成的时长。根据组件的不同,这可以是处理时间、响应时间或行程时间的度量。
  • 吞吐量 :吞吐量表示系统能够处理或遍历的最大速率。这可能取决于软件或硬件设计。通常,理论吞吐量和实际观测吞吐量之间存在重要区别。
  • 性能 :性能是衡量系统完成工作效率的一般指标。性能是一个总括的术语,通常包括吞吐量、延迟或资源消耗等工作因素。
  • 饱和度 :饱和度是对容量使用量的衡量。完全饱和表示当前100%的容量在使用中。
  • 可视化 :可视化是将指标数据以图形或图表的形式快速直观地呈现出来的过程。
  • 日志聚合 :日志聚合是对日志文件进行编译、组织和索引,以便于管理、搜索和分析。虽然与监控分开,但聚合日志可以与监控系统结合使用,以确定原因并调查故障。
  • 数据点 :数据点是单个指标的单次测量。
  • 数据集 :数据集是指标数据点的集合。
  • 单位 :单位是测量值的上下文。单位定义测量的大小、范围或数量,以了解范围并进行比较。
  • 百分比单位 :百分比单位是作为有限整体一部分的度量单位。百分比单位表示一个值在可能的总金额中占了多少。
  • 费率单位 :费率单位表示指标在一段固定时间内的大小。
  • 时间序列 :时间序列数据是表示随时间变化的一系列数据点。大多数指标最好用时间序列来表示,因为单个数据点通常表示特定时间的值,生成的一系列点用来显示随时间的变化。
  • 采样率 :采样率是衡量一个有代表性的数据点被采集的频率,而不是连续采集。更高的采样率更准确地表示测量的行为,但需要更多的资源来处理额外的数据点。
  • 分辨率 :分辨率是指组成数据集的数据点的密度。同一时间范围内分辨率较高的集合表明采样率更高,对相同行为的查看也更细粒度。
  • 插装 :插装是跟踪软件行为和性能的能力。这是通过向软件添加代码和配置以输出数据来实现的,然后监控系统可以使用这些数据。
  • 观察者效应 :观察者效应是监测系统本身对被观察现象的影响。由于监控占用资源,因此测量行为和性能的行为将改变所产生的价值。监测系统试图避免增加不必要的开销,以最大限度地减少这种影响。
  • 过度监控 :当配置的指标和告警的数量与其有用性成反比时,就会发生过度监控。过度监控可能会对基础设施造成压力,使查找相关数据变得困难,并导致团队对其监控和警报系统失去信任。
  • 警报疲劳 :警报疲劳是人类因频繁、不可靠或优先级错误的警报而导致的脱敏反应。警报疲劳会导致操作员忽略严重问题,通常表示需要重新评估警报条件。
  • 阈值 :告警时,阈值是可接受值和不可接受值之间的界限,超过阈值会触发告警。通常,警报被配置为在某个值在特定时间段超过阈值时触发,以避免发送临时峰值警报。
  • 分位数 :分位数是一个分割点,用于根据数据集的值将其划分为不同的组。分位数用于将值放入代表数据总体段的中。通常,这被用来区分普通值和异常值,以便更好地理解什么构成典型案例和极端案例。
  • 趋势 :趋势是一组值所指示的大方向。在确定被跟踪组件的一般状态时,趋势比单个值更可靠。
  • 白盒监控 :白盒监控是一个术语,用于描述依赖于访问被测组件内部状态的监控。白盒监控可以提供对系统状态的详细了解,并有助于确定问题的原因。
  • 黑盒监控 :黑盒监控是通过仅查看系统或组件的输入、输出和行为来观察其外部状态的监控。这种类型的监控可以与用户对系统的体验紧密地结合在一起,但对于查找问题的原因用处较小。

结论

收集指标、监控组件和配置警报是设置和管理生产基础架构的重要组成部分。能够告诉您的系统中发生了什么,哪些资源需要关注,以及是什么导致了速度减慢或停机,这是非常宝贵的。虽然设计和实施您的监控设置可能是一项挑战,但这是一项投资,可以帮助您的团队确定工作的优先顺序,将监督责任委派给自动化系统,并了解您的基础设施和软件对您的稳定性和性能的影响。

Published At
Categories with 技术
comments powered by Disqus