作者:Justin Ellingwood 翻译:云监控团队
指标、监控、告警系统的重要特质
尽管每个监控程序或服务都各有利弊,但是做的比较好的通常具备一些重要的特性。以下是用户评估监控系统时可参考的一些更重要的特征。
01 独立于大多数其它基础架构
合格的监控系统的最基本要求之一是独立于其他服务之外。虽然有时将服务组合在一起是有用的,但监控系统的核心职责是可以诊断问题,以及监控系统与被监控系统的关系意味着独立访问的重要性。虽然监控系统会不可避免地对它监控的系统产生一些影响,但是应该把问题定位追踪时对性能产生的影响降低到最小限度,在其它问题出问题时,提高监控系统的可靠性。
02 可靠性
另一个基本要求是可靠性。由于监控系统负责收集,存储和提供对高价值信息的访问,所以每天对系统的操作是准确无误的很重要。指标下降,服务中断,或者不可靠的告警都会不利于您高效管理基础结构。这不仅对核心软件的可靠性有影响,还对您授权的配置有影响。因为诸如错误的告警之类可能会导致大家丧失对系统的信任。
03 开箱即用的总览和详细视图
显示上层的数据总览并能按需提供更多详细信息是一项重要特性,可确保指标数据对使用者有用且可被消费。通过一种即时且可理解的方式把最常看的数据展现在监控大盘中,能帮助用户一目了然的了解系统状态。可以为不同的工作职能或兴趣领域创建多种仪表板视图。
从总览大盘中下钻与当前任务最相关的信息数据也同样重要。动态调整图形的比例,切换不必要的指标以及覆盖来自多个系统的信息对于监控工具进行问题定位或根因分析至关重要。
04 维护历史数据的有效策略
经过较长时间的沉淀,当监控系统具有丰富的历史数据时,可以帮助建立趋势,模式和一致性,这个时候的监控系统能发挥最大的作用。理想情况下,所有信息都将以其原始粒度无限期保留,但是介于成本和资源的限制,有时可能需要以降低的分辨率存储旧数据。可以全粒度和采样格式处理数据,这样灵活的监控系统为如何处理不断增加的数据量提供了更多选择。
一个有用的功能是轻松导入现有数据集。如果降低历史指标的信息密度并不吸引人,将旧数据卸载到长期存储解决方案可能是更好的选择。在这种情况下,您不需要维护系统中的旧数据,但是当您希望分析或使用它们时,又能够批量重新加载它们。
05 能够关联来自不同来源的因素
监控系统负责提供整个基础架构的整体视图,因此,即使来自不同的系统或具有不同的特征,它也需要能够显示相关信息。管理员应该能够随意将来自系统不同部分的信息粘合在一起,以了解整个基础架构中潜在的交互作用和总体状态。确保跨系统配置时间同步是能够可靠地关联来自不同系统的数据的先决条件。
06 简易跟踪新指标或基础架构
为了让监控系统准确地反映系统状况,需要监控系统能够随着机器和基础架构的变化进行调整。如果能以最小的障碍完成新机器的添加,就可以实现这样的目标。能够轻松删除销毁的服务器,同时不破坏与它关联的收集数据的能力也同样重要。系统应该让这些操作尽可能简单,从而鼓励在实例新增或销毁过程中设置监控。
一个重要的相关功能是,可以在监控系统中通过简单的设置完成对新增指标的监控。这取决于在核心监控配置中定义指标的方式,以及可用于将指标数据发送到系统的机制的种类和质量。定义新指标通常比添加其它机器复杂,但是降低添加或调整指标的复杂度将帮助您的团队在适当的时间范围内响应不断变化的需求。
07 灵活而强大的告警
评估监控系统最重要的方面之一是它的告警功能。除了非常严格的可靠性要求外,告警系统还必须足够灵活,支持通过多种媒介来通知关系人员,并且需要功能强大,可以全面、准确的触发告警。许多系统通过提供与现有页面服务和消息应用的集成,把实际告警通知传递的责任转移到第三方,这让告警功能的责任最小化,同时也提供了更灵活的选项,因为插件只需要使用外部 API。
但是,监控系统无法转移定义告警参数这部分。告警通知是根据超出可接受范围的值来定义的,但是为了避免过度告警,定义可能需要一些细微差别。例如,瞬时陡峰通常不是问题,但持续的高负荷可能需要操作员注意。能够清晰定义告警的参数对健壮,可信赖的告警必不可少。
附加术语
在探索监控生态系统时,可能会遇到很多术语,它们常被用于讨论监控系统的特性,正在处理的数据以及需要考虑的各种因素。尽管还有不够详尽之处,下面的列表可以帮助您了解一些最有可能遇到的术语。
可观察性(Observability):尽管没有严格定义,但可观察性是一个通用术语,用于描述与提高系统感知和可见性相关的过程和技术。包括监控,指标,可视化,链路和日志分析。 资源(Resource):在监控和软件系统的语境中,资源是任何穷尽或有限的依赖关系。根据所讨论的系统的不同,其中资源的含义可能会有很大的不同。 延迟(Latency):延迟是完成动作所花费时间的度量。根据组件的不同,可以用来衡量处理,响应或运行时间。 吞吐量(Throughput):吞吐量表示系统可以处理的最大处理或遍历速率。这可能取决于软件或硬件设计。通常,理论吞吐量和实际观察到的吞吐量之间存在重要区别。 性能(Performance):性能是衡量系统完成工作效率的常用指标。性能是一个笼统的术语,通常包含诸如吞吐量,延迟或资源消耗之类的指标。 饱和度(Saturation):饱和度是对所用容量的度量。完全饱和表示当前正在使用 100%的容量。 可视化(Visualization):可视化是以一种格式显示指标数据的过程,该格式通常以图形或图表进行快速,直观的展示。 日志聚合(Log aggregation):日志聚合是对日志文件进行编译,组织和索引的操作,以简化对日志的管理,搜索和分析。与监控分开的同时,聚合日志也可以与监控系统结合使用,用以定位问题和调查故障。 数据点(Data point):数据点是单个指标的单个度量。 数据集(Data set):数据集是某一指标的数据点的集合。 单位(Units):单位是测量值的上下文。单位定义度量的大小,范围或数量,以了解范围并进行比较。 百分比单位(Percentage Units):百分比单位是用来衡量整理占用的的单位。它表示部分值在总值的占比。 比率单位(Rate Units):比率单位表示恒定时间段内指标的大小。 时间序列(Time series):时间序列数据是代表随时间变化的一系列数据点。大多数指标最好用时间序列表示,因为单个数据点通常表示特定时间的值,然而一系列的点值可用于显示时间段的变化。 采样率(Sampling rate):采样率是对代表性数据点的采集频率(而不是连续采集)的度量。较高的采样率可以更准确地表示指标表现,但是需要更多的资源来处理额外的数据点。 分辨率(Resolution):分辨率是指组成数据集的数据点的密度。在同一时间范围内具有较高分辨率的集合表示较高的采样率和相同行为的更详细视图。 工具(Instrumentation):工具是跟踪软件行为和性能的能力。可以通过向软件添加代码和配置以输出数据,然后为监控系统所用。 观察者效应(The observer effect):观察者效应是监控系统本身对所观察到的现象的影响。由于监控会占用资源,因此监测表现和性能的行为将改变所产生的价值。监控系统试图避免增加不必要的行为,以此带来最小的影响。 过度监控(Over-monitoring):当配置的指标标准和告警的数量与其反应的问题成反比时,就会发生过度监控。过度监控可能会给基础设施带来压力,让查找相关数据变得困难,并使团队对监控和告警系统失去信任。 告警疲劳(Alert fatigue):告警疲劳是由于频繁,不可靠或不适当的优先告警而引起的人的脱敏反应。告警疲劳会导致操作员忽略严重问题,通常需要重新评估告警条件。 阈值(Threshold):告警时,阈值是可接受值与不可接受值之间的边界,如果超出该阈值,则会触发告警。通常将告警配置为一段时间内超过阈值时触发,避免发送有关临时峰值的告警。 分位数(Quantile):分位数是一个划分点,将数据集根据不同值分为不同组。分位数用于将值放入代表数据总体的各个部分的 “存储桶” 中。通常,这是用来将常见值与异常值分开的,以更好地理解典型和极端情况。 趋势(Trend):趋势是一组值指示的总体方向。在确定要跟踪的组件的一般状态时,趋势比单个值更可靠。 白盒监控(White-box monitoring):白盒监控是一个术语,用于描述依赖于对被测组件内部状态的访问的监控。白盒监控可以提供对系统状态的详细了解,并有助于确定问题的原因。 黑盒监控(Black-box monitoring):黑盒监控是仅通过查看系统或组件的输入,输出和行为来观察其外部状态的监控。这种类型的监控可以与用户对系统的体验紧密结合,但是对于查找问题原因却没有多大用处。
结论
收集指标,监控组件和配置告警是设置和管理生产基础设施的重要组成部分。 能够告诉您系统中正在发生的事情,需要注意哪些资源以及导致减速或中断的原因,这些都是非常宝贵的。 尽管设计和实施监控搭建可能是一个挑战,但这是一项投资,可以帮助您的团队确定工作的优先级,将监督的职责委托给自动化系统,并了解基础架构和软件对稳定性及性能的影响 。
|