可观测性 vs. 监控:理解差异

导航至

此帖子由 Siddhant Varma 撰写。向下滚动阅读作者的简介。

observability-vs-monitoring

软件开发不仅仅是构建和部署软件。即使在您成功部署后,您还需要处理各种各样的操作和活动。最常见的两种是可观测性和监控。虽然它们在很多方面都很相似,但重要的是要理解它们不完全相同,并且每种都有其自身的用途。

在这篇文章中,我将帮助您理解可观测性和监控之间的差异。

什么是可观测性?

首先,让我们确保您理解可观测性是什么。它是通过从多个来源收集与系统行为相关的各种数据点,来了解您的系统在任何给定时刻的行为方式的能力。它通常用于相当复杂的系统,例如分布式系统或微服务架构。

为了衡量可观测性,您需要查看系统生成的输出。然后,您需要根据该输出收集一些数据点。这些数据点通常包括指标、日志和追踪。最后,您需要分析和处理这些数据点,以推断系统的内部状态或行为。

指标、日志和追踪

指标是关于您的系统的定量数据。网络延迟、吞吐量、错误率等是一些指标的示例。

日志是系统中发生的事件的记录。例如,应用程序日志将为您提供与应用程序相关的事件的详细信息或描述,例如用户何时通过身份验证进入您的系统,何时向数据库发出写入查询等。

最后,追踪是关于请求通过系统的流入和流出的数据。例如,网络追踪将测量所有传入和传出的网络请求,并为您提供有关数据包丢失、带宽消耗等详细信息。

什么是监控?

监控是定期观察您的系统并收集和分析某些数据点的过程,这些数据点指示系统如何运行。此类数据点通常包括 CPU 使用率、内存使用率、网络流量和错误率。这些数据点可帮助您了解系统是否足够强大以在没有任何异常的情况下运行,或者是否存在需要诊断和处理的潜在问题。

监控帮助您确定系统的可靠性和可用性。它可以帮助您立即检测和修复可能直接影响最终用户的问题。您还可以使用监控来长期收集有关您的系统的更多数据。这可以帮助您分析可能导致系统完全故障或中断的模式。

可观测性 vs. 监控:主要差异

现在您已经了解了可观测性和监控的含义,让我们看看它们之间的差异。我们将从范围、时间范围、主动性和粒度方面对它们进行比较。

范围

范围定义了可观测性和监控扩展的范围。当我们谈论范围时,我们指的是这些概念涵盖的系统范围,从一些指标到所有指标。

可观测性根据外部输出为您提供有关系统内部状态的见解。这意味着整个系统都是范围,因为您试图了解系统作为一个整体如何行为或执行。另一方面,监控仅关注某些指标。例如,当您测量 CPU 利用率或内存使用率时,您仅测量系统的整体性能。这意味着在监控中,范围严格限制为性能指标。

时间范围

您知道监控可以帮助您收集可以在一段时间内分析以形成模式的数据。因此,监控的时间范围更长,因为您是在一段时间内收集数据。

另一方面,可观测性仅向您显示系统的当前状态。从可观测性收集的数据仅与系统在那个时刻的行为方式有关。

主动性

由于可观测性用于分析系统的当前状态,并将整个系统作为其范围,因此它是一个主动过程。开发人员或可靠性工程师在分析系统的可观测性时必须更加主动。这可以帮助他们预测和预防错误和问题在发生之前。

另一方面,监控更具反应性。它是关于了解问题何时已经发生并提醒工程师和开发人员,以便他们可以采取行动。

粒度

虽然您在可观测性和监控中都收集数据,但数据的粒度差异很大。由于可观测性处理的是当前系统,旨在避免未来出现问题和错误,因此它倾向于收集更精细的数据。例如,可观测性中的网络追踪为您提供有关网络请求中任何数据包丢失的详细信息。

另一方面,监控侧重于高级指标,这意味着数据不如可观测性数据精细。例如,监控网络请求将为您提供有关网络上获得的流量的数据,而不会为您提供任何更精细的详细信息,例如带宽消耗或数据包丢失。

总结差异

总而言之,当您想要深入了解当前场景中整个系统的内部运作时,最好使用可观测性。这包括您的整个应用程序、其性能、网络行为、与其他应用程序的通信、其基础设施等。可观测性将帮助您回答有关您的系统的特定事件或行为的复杂问题。

另一方面,监控会随时间推移跟踪性能指标,您可以使用该数据来优化您未来的系统。工程师反应性地使用监控来确保系统按预期运行,以便他们可以解决任何问题或潜在的瓶颈。

可观测性和监控之间的关系

现在您已经了解了这些概念的差异,我们可以更深入地探讨它们之间的关系。您已经看到可观测性关注的是整个系统,而监控仅关注系统的某些方面,例如性能。

如果您的系统有任何当前正在发生的紧急问题,可观测性将帮助您检测到它们。同时,监控将帮助您检测瓶颈和其他正在发生的历史问题。但是,在监控系统并了解要警惕什么之后,您可以使用可观测性查看实时复发性问题是否正在爆发。

重要的是要理解两者都绝对必要。每种都有助于您确保您的系统按预期执行和运行。您还可以使用这些过程来更好地了解您的系统并为未来对其进行优化。

取得适当的平衡

作为可靠性工程师或开发人员,您需要在两者之间取得适当的平衡。仅关注监控将使您对系统的看法狭隘,并且检测当前问题可能会变得具有挑战性。另一方面,过度关注可观测性可能会使您因信息过载而不知所措。

可观测性和监控都旨在实现不同的目标。您需要根据您希望实现的目标来确定它们的优先级。如果您想实时了解和分析系统的行为以获得更大的图景,请关注可观测性。如果您需要通过指标和警报诊断问题,请关注监控。

关于作者

Siddhant 是一位全栈 JavaScript 开发人员,在前端工程方面拥有专业知识。他曾与印度多家初创公司合作进行扩展,并在 Ed-Tech 和医疗保健行业拥有构建产品的经验。Siddhant 对教学充满热情,并且擅长写作。他还向许多毕业生教授过编程,帮助他们成为更好的未来开发人员。