关注「学习的一天天」每天学点大数据
热爱学习的你真棒!我是onedayday,每天和你一起学点大数据。
简介
了解基础设施和系统的状态对于确保服务的可靠性和稳定性至关重要。有关部署运行状况和性能的信息不仅可以帮助您的团队对问题做出反应,还可以让他们放心地进行更改。获得这种洞察力的最佳方法之一是使用强大的监控系统,该系统可以收集指标、可视化数据并在出现问题时提醒操作员。
在本指南中,我们将讨论什么是指标、监控和告警。我们将讨论它们为何重要、它们提供哪些类型的机会以及您可能希望跟踪的数据类型。在此过程中,我们将介绍一些关键术语,并以您在探索该领域时可能遇到的一些其他术语的简短词汇表结束。
什么是指标、监控和告警?
指标、监控和告警都是相互关联的概念,它们共同构成了监控系统的基础。它们能够提供对系统运行状况的可见性,帮助您了解使用或行为趋势,并了解您所做更改的影响。如果指标超出您的预期范围,这些系统可以发送通知以提示操作员查看,然后可以帮助显示信息以帮助确定可能的原因。
在本节中,我们将看看这些单独的概念以及它们如何组合在一起。
什么是指标?我们为什么要收集它们?
指标表示可以在整个系统中观察和收集的资源使用或行为的原始测量值。这些可能是操作系统提供的低级使用摘要,也可能是与特定功能或组件工作相关的高级数据类型,例如每秒提供的请求或 Web 服务器池中的成员资格。一些指标与总容量相关,而其他指标则表示为指示组件“繁忙”的比率。
通常,最简单的指标是您的操作系统已经公开的指标,用于表示底层物理资源的使用情况。有关磁盘空间、CPU 负载、交换使用率等的数据已经可用,可立即提供价值,并且无需太多额外工作即可转发到监控系统。许多 Web 服务器、数据库服务器和其他软件也提供自己的指标,这些指标也可以向前传递。
对于其他组件,尤其是您自己的应用程序,您可能需要添加代码或接口来公开您关心的指标。收集和公开指标有时称为向您的服务添加检测。
指标很有用,因为它们可以洞察系统的行为和健康状况,尤其是在进行汇总分析时。它们代表您的监控系统使用的原材料,用于构建环境的整体视图、自动响应变化并在需要时提醒人们。指标是用于了解历史趋势、关联各种因素以及衡量性能、消耗或错误率变化的基本值。
什么是监控?
虽然指标代表系统中的数据,但监控是收集、汇总和分析这些值以提高对组件特征和行为的认识的过程。来自环境各个部分的数据被收集到一个监控系统中,该系统负责存储、聚合、可视化,并在值满足特定要求时启动自动响应。
一般而言,指标和监控之间的差异反映了数据和信息之间的差异。数据由未经处理的原始事实组成,而信息是通过分析和组织数据以构建提供价值的上下文来产生的。监控获取指标数据,对其进行汇总,并以各种方式呈现,让人类能够从单个片段的集合中提取洞察力。
监控系统完成许多相关的功能。他们的首要职责是接受和存储传入的历史数据。虽然代表当前时间点的值很有用,但查看与过去值相关的这些数字以提供有关变化和趋势的背景几乎总是更有帮助。这意味着监控系统应该能够管理一段时间内的数据,这可能涉及采样或聚合旧数据。
其次,监控系统通常提供数据的可视化。虽然指标可以作为单独的值或表格显示和理解,但当信息以视觉上有意义的方式组织时,人类更擅长识别趋势和理解组件如何组合在一起。监控系统通常使用可配置的图形和仪表板来表示它们测量的组件。这使得通过浏览显示器了解复杂变量或系统内变化的相互作用成为可能。
监控系统提供的另一个功能是组织和关联来自各种输入的数据。为了使指标有用,管理员需要能够识别不同资源之间和服务器组之间的模式。例如,如果应用程序遇到错误率高峰,管理员应该能够使用监控系统来发现该事件是否与相关资源的容量耗尽同时发生。
最后,监控系统通常用作定义和激活告警的平台,我们将在接下来讨论。
什么是告警?
告警是监控系统的响应组件,它根据指标值的变化执行操作。告警定义由两个部分组成:基于指标的条件或阈值,以及当值超出可接受条件时要执行的操作。
虽然监控系统对于主动解释和调查非常有用,但完整监控系统的主要好处之一是让管理员脱离系统。告警允许您定义对主动管理有意义的情况,同时依靠软件的被动监控来观察不断变化的情况。
虽然通知责任方是最常见的告警操作,但也可以根据阈值违规触发一些程序化响应。例如,指示您需要更多 CPU 来处理当前负载的告警可以使用自动缩放应用程序该层的脚本进行响应。虽然这不是严格的告警,因为它不会导致通知,但通常也可以使用相同的监控系统机制来启动这些过程。
但是,告警的主要目的仍然是引起人们对系统当前状态的关注。自动响应是一种重要机制,可确保仅在需要知识渊博的人考虑的情况下触发通知。告警本身应包含有关错误以及到何处查找其他信息的信息。然后,响应告警的个人可以使用监控系统和相关工具(如日志文件)来调查问题的原因并实施缓解策略。
即使是中等复杂性的基础设施也需要区分告警严重性,以便可以使用适合问题规模的方法通知负责的团队或个人。例如,存储利用率的提高可能需要工作票或电子邮件,而面向客户的错误率或无响应的增加可能需要向值班人员发送页面。
跟踪什么类型的信息很重要?
随着基础架构的发展,您监控的值类型和跟踪的信息可能会发生变化。由于系统通常按层次运作,更复杂的层建立在更原始的基础设施之上,因此在规划监控策略时考虑这些不同级别的可用指标会很有用。
基于主机的指标
在原始指标层次结构的底部是基于主机的指标。这些将涉及评估单个机器的健康状况或性能,暂时不考虑其应用程序堆栈和服务。这些主要包括操作系统或硬件的使用或性能,例如:
•CPU•内存•磁盘空间•进程
这些可以让您了解可能影响单台计算机保持稳定或执行工作能力的因素。
应用程序的指标
您可能想要查看的下一类指标是应用程序指标。这些是与依赖于主机级资源(如服务或应用程序)的处理或工作单元相关的指标。要查看的具体指标类型取决于服务提供的内容、它具有哪些依赖项以及它与哪些其他组件交互。此级别的指标是应用程序运行状况、性能或负载的指标:
•错误率和成功率•服务失败和重启•响应的性能和延迟•资源使用
这些指标有助于确定应用程序是否正常且高效地运行。
网络和连接指标
对于大多数类型的基础设施,网络和连通性指标将是另一个值得探索的数据集。这些是对外可用性的重要衡量标准,但对于确保跨多台机器的任何系统的其他机器可以访问服务也是必不可少的。与我们目前讨论的其他指标一样,应通过以下方式检查网络的整体功能正确性和提供必要性能的能力:
•连通性•错误率和丢包率•延迟•带宽利用率
监控网络层可以帮助您提高内部和外部服务的可用性和响应能力。
服务器池指标
在处理水平扩展的基础设施时,您需要添加指标的另一层基础设施是服务器池。虽然有关单个服务器的指标很有用,但在规模上,服务更好地表示为一组机器执行工作并充分响应请求的能力。这种类型的指标在很多方面只是应用程序和服务器指标的更高级别外推,但在这种情况下,资源是同类服务器而不是机器级组件。您可能想要跟踪的一些数据是:
•池化资源使用•缩放调整指标•降级实例
收集总结服务器集合健康状况的数据对于了解系统处理负载和响应变化的实际能力很重要。
外部依赖指标
您可能希望添加到系统中的其他指标是与外部依赖项相关的指标。通常,服务会提供状态页面或 API 来发现服务中断,但在您自己的系统中跟踪这些信息——以及您与服务的实际交互——可以帮助您识别可能影响您运营的供应商问题。可能适用于在此级别进行跟踪的一些项目是:
•服务状态和可用性•成功率和错误率•运行率和运营成本•资源枯竭
还有许多其他类型的指标可以帮助收集。将最重要的信息概念化为不同的关注级别可以帮助您确定对预测或识别问题最有用的指标。请记住,较高级别上最有价值的指标可能是较低层提供的资源。
影响您选择监控内容的因素
为了让您安心,在理想的世界中,您将从一开始就跟踪与您的系统相关的所有内容,以防某天某项可能与您相关。然而,这可能是不可能的,甚至是不可取的,原因有很多。
一些可能影响您选择收集和采取行动的因素是:
•可用于跟踪的资源:根据您的人力资源、基础设施和预算,您必须将跟踪的范围限制在您可以实施和合理管理的范围内。•应用程序的复杂性和目的:应用程序或系统的复杂性会对您选择跟踪的内容产生很大影响。对某些软件可能是关键任务的项目在其他软件中可能根本不重要。•部署环境:虽然强大的监控对于生产系统最重要,但分层和测试系统也可以从监控中受益,尽管在严重性、粒度和测量的整体指标方面可能存在差异。•指标有用的可能性:影响某事物是否被衡量的最重要因素之一是它在未来提供帮助的潜力。跟踪的每个额外指标都会增加系统的复杂性并占用资源。数据的必要性也会随着时间的推移而变化,需要定期重新评估。•稳定性有多重要:简而言之,稳定性和正常运行时间可能不是某些类型的个人或早期项目的优先事项。
影响您决策的因素将取决于您的可用资源、项目的成熟度以及您需要的服务水平。
度量、监控和告警系统的重要特质
虽然每个监控应用程序或服务都有其优点和缺点,但最好的选择通常具有一些重要的品质。在评估监控系统时需要寻找的一些更重要的特性如下。
独立于大多数其他基础设施
一个适当的监控系统最基本的要求之一是在其他服务之外。虽然有时将服务组合在一起很有用,但监控系统的核心职责、它对诊断问题的帮助以及它与被监视系统的关系意味着您的监控系统可独立访问很重要。您的监控系统不可避免地会对它所监控的系统产生一些影响,但您应该尽量减少这种影响,以减少跟踪对性能的影响,并在出现其他系统问题时提高监控的可靠性。
可靠和值得信赖
另一个基本要求是可靠性。由于监控系统负责收集、存储和提供对高价值信息的访问,因此您可以相信它每天都能正确运行,这一点很重要。指标丢失、服务中断和不可靠的告警都会对您有效管理基础设施的能力产生直接的有害影响。这不仅适用于核心软件的可靠性,也适用于您启用的配置,因为告警不准确等错误会导致对系统失去信任。
易于使用的摘要和详细信息视图
显示高级摘要和按需询问更多详细信息的能力是确保指标数据对操作员有用且可使用的重要功能。设计仪表板,以可立即理解的方式呈现最常查看的数据,可以帮助用户一目了然地了解系统状态。可以为不同的工作职能或感兴趣的领域创建许多不同的仪表板视图。
同样重要的是能够从摘要显示中向下钻取以显示与当前任务最相关的信息。动态调整图形的比例、关闭不必要的指标以及覆盖来自多个系统的信息对于使该工具以交互方式用于调查或根本原因分析至关重要。
维护历史数据的有效策略
如果监控系统拥有丰富的数据历史,可以帮助建立长期的趋势、模式和一致性,那么它最有用。虽然理想情况下,所有信息都将无限期地保留在其原始粒度,但成本和资源限制有时会使以降低的分辨率存储旧数据成为必要。监控系统可以灵活地以全粒度和采样格式处理数据,为如何处理不断增加的数据量提供了更广泛的选择。
一个有用的相关功能是能够轻松导入现有数据集。如果降低历史指标的信息密度不是一个有吸引力的选择,那么将旧数据卸载到长期存储解决方案可能是更好的选择。在这种情况下,您不需要在系统内维护较旧的数据,但是当您希望分析或使用它时,您需要能够批量重新加载它。
能够关联来自不同来源的因素
监控系统负责提供整个基础设施的整体视图,因此它需要能够显示相关信息,即使它来自不同的系统或具有不同的特征。管理员应该能够随意将来自系统不同部分的信息粘合在一起,以了解整个基础架构中的潜在交互和整体状态。确保跨系统配置时间同步是能够可靠地关联来自不同系统的数据的先决条件。
易于开始跟踪新指标或基础设施
为了让您的监控系统准确地代表您的系统,您需要能够随着机器和基础设施的变化进行调整。添加额外机器时的最小摩擦将有助于您做到这一点。同样重要的是能够轻松移除退役的机器,而不会破坏收集到的与其相关的数据。系统应使这些操作尽可能简单,以鼓励将监控设置为实例供应或停用过程的一部分。
一个重要的相关能力是可以轻松设置监控系统以跟踪全新的指标。这取决于在核心监控配置中定义指标的方式以及可用于将指标数据发送到系统的机制的种类和质量。定义新指标通常比添加额外机器更复杂,但降低添加或调整指标的复杂性将有助于您的团队在适当的时间范围内响应不断变化的需求。
灵活而强大的告警
要评估的监控系统最重要的方面之一是其告警功能。除了非常严格的可靠性要求之外,告警系统还需要足够灵活以通过多种媒介通知操作员,并且足够强大以能够组合周到、可操作的通知触发器。许多系统通过提供与现有寻呼服务或信使应用程序的集成来推迟向其他方实际传送通知的责任。这最大限度地减少了告警功能的责任,并且通常提供更灵活的选项,因为插件只需要使用外部 API。
然而,监控系统不能推迟的部分是定义告警参数。告警是基于超出可接受范围的值定义的,但定义可能需要一些细微差别以避免过度告警。例如,瞬时峰值通常不是问题,但持续升高的负载可能需要操作员注意。能够清楚地定义告警的参数是构成一组可靠、可靠的告警条件的必要条件。
附加术语
当您探索监控生态系统时,您将开始遇到一组共享术语,这些术语经常用于讨论监控系统的特征、正在处理的数据以及需要考虑的不同权衡。虽然并非详尽无遗,但下面的列表可以帮助您了解一些您最有可能遇到的术语。
•可观察性:虽然没有严格定义,但可观察性是一个通用术语,用于描述与提高系统意识和可见性相关的过程和技术。这可以包括监控、指标、可视化、跟踪和日志分析。•资源:在监控和软件系统的上下文中,资源是任何可耗尽或有限的依赖项。根据所讨论的系统的一部分,什么被视为资源可能会有很大差异。•延迟:延迟是衡量完成一个动作所需的时间。根据组件的不同,这可以是处理、响应或旅行时间的度量。•吞吐量:吞吐量表示系统可以处理的最大处理或遍历速率。这可能取决于软件或硬件设计。通常,理论吞吐量和实际观察到的吞吐量之间存在重要区别。•性能:性能是衡量系统完成工作效率的一般指标。性能是一个总称,通常包括吞吐量、延迟或资源消耗等工作因素。•饱和度:饱和度是衡量正在使用的容量的量度。完全饱和表示当前正在使用 100% 的容量。•可视化:可视化是以允许通过图形或图表进行快速、直观解释的格式呈现指标数据的过程。•日志聚合:日志聚合是编译、组织和索引日志文件的行为,以便于管理、搜索和分析。虽然与监控分开,但聚合日志可与监控系统结合使用,以识别原因并调查故障。•数据点:数据点是单个指标的单个测量值。•数据集:数据集是指标的数据点集合。•单位:单位是测量值的上下文。单位定义了测量的幅度、范围或数量,以了解范围并允许进行比较。•百分比单位:百分比单位是作为有限整体的一部分进行的测量。百分比单位表示某个值超出总可能金额的程度。•比率单位:比率单位表示指标在恒定时间段内的大小。•时间序列:时间序列数据是表示随时间变化的一系列数据点。大多数指标最好由时间序列表示,因为单个数据点通常表示特定时间的值,而结果点系列用于显示随时间的变化。•采样率:采样率是衡量收集代表性数据点而不是连续收集的频率。更高的采样率更准确地表示测量的行为,但需要更多的资源来处理额外的数据点。•分辨率:分辨率是指构成数据集的数据点的密度。在同一时间范围内具有更高分辨率的集合表示更高的采样率和相同行为的更精细的视图。•检测:检测是跟踪软件行为和性能的能力。这是通过向软件添加代码和配置以输出数据然后可由监控系统使用来实现的。•观察者效应:观察者效应是监测系统本身对被观察现象的影响。由于监控占用资源,衡量行为和绩效的行为将改变产生的价值。监控系统力求避免增加不必要的开销,以尽量减少这种影响。•过度监控:当配置的指标和告警的数量与其有用性成反比时,就会发生过度监控。过度监控会给基础设施带来压力,难以找到相关数据,并导致团队对其监控和告警系统失去信任。•告警疲劳:告警疲劳是人类对频繁、不可靠或优先级不正确的告警造成的反应迟钝。告警疲劳会导致操作员忽略严重的问题,通常表明需要重新评估告警条件。•阈值:在发出告警时,阈值是可接受和不可接受值之间的边界,如果超过,则会触发告警。通常告警配置为在某个时间段内某个值超过阈值时触发,以避免发送临时峰值告警。•分位数:分位数是用于根据数据集的值将数据集分成不同组的分界点。分位数用于将值放入代表数据总体片段的“桶”中。通常,这用于将常见值与异常值分开,以更好地了解什么是代表性和极端情况。•趋势:趋势是一组值所指示的总体方向。在确定被跟踪组件的一般状态时,趋势比单一值更可靠。•白盒监控:白盒监控是一个术语,用于描述依赖于对被测量组件的内部状态的访问的监控。白盒监控可以提供对系统状态的详细了解,有助于识别问题的原因。•黑盒监控:黑盒监控是通过仅查看其输入、输出和行为来观察系统或组件的外部状态的监控。这种类型的监控可以与用户对系统的体验紧密结合,但对于查找问题原因不太有用。
结论
收集指标、监控组件和配置告警是设置和管理生产基础设施的重要组成部分。能够了解系统中发生的事情、需要注意哪些资源以及导致速度减慢或中断的原因是非常宝贵的。虽然设计和实施您的监控设置可能是一个挑战,但这是一项投资,可以帮助您的团队确定工作的优先级,将监督责任委托给自动化系统,并了解您的基础设施和软件对稳定性和性能的影响.
--END--
▼ 关注「学习的一天天」,获取更多技术干货 ▼
点赞「在看」
分享让你记得更牢👇




