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

导航到

本文由Siddhant Varma撰写。向下滚动阅读作者的简介。

observability-vs-monitoring

软件开发不仅仅是构建和部署软件。即使成功部署后,也需要处理一系列的操作和活动。其中最常见的是可观测性和监控。虽然它们在许多方面都很相似,但重要的是要理解它们并不完全相同,每个都有自己的目的。

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

什么是可观测性?

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

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

指标、日志和跟踪

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

日志是系统发生事件的记录。例如,应用程序日志将提供有关应用程序事件(如用户验证到您的系统、他们对数据库执行写入查询等)的详细信息或描述。

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

什么是监控?

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

监控可以帮助您确定系统的可靠性和可用性。它可以帮助您即时检测和修复可能直接影响最终用户的问题。您还可以使用监控收集更多关于系统随时间推移的数据。这有助于您分析可能导致系统完全失败或停机的模式。

可观测性 vs 监控:关键差异

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

范围

范围定义了可观测性和监控的范围。当我们谈到范围时,我们指的是这些概念覆盖的系统范围,从几个指标到全部。

可观察性通过外部输出让您了解系统的内部状态。这意味着整个系统都是范围,因为您试图了解系统作为一个整体是如何表现或运行的。另一方面,监控只关注某些指标。例如,当您测量CPU利用率或内存使用时,您只是测量系统的整体性能。这意味着在监控中,范围严格限于性能指标。

时间段

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

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

主动性

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

另一方面,监控更加被动。它是关于知道问题何时已经发生,并通知工程师和开发人员,以便他们可以采取行动。

粒度

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

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

总结差异

总结来说,当您想深入了解当前场景下整个系统的内部运作时,可观察性是最佳选择。这包括您整个应用程序、其性能、网络行为、与其他应用程序的通信、其基础设施等。可观察性将帮助您回答有关系统特定事件或行为的复杂问题。

另一方面,监控随着时间的推移跟踪性能指标,您可以使用这些数据来优化您的系统以供未来使用。监控是由工程师被动使用的,以确保系统按预期运行,以便他们在出现问题时或潜在的瓶颈时可以处理。

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

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

如果您的系统有任何当前正在发生的即时问题,可观察性将帮助您检测它们。同时,监控将帮助您检测瓶颈和其他正在发生的历史问题。然而,在监控系统并知道要关注什么之后,您可以使用可观察性实时查看是否发生了重复问题。

理解这两者都是绝对必要的非常重要。它们各自都能帮助你确保系统按照预期运行和操作。你还可以使用这些流程来更好地理解你的系统,并为其未来的优化做准备。

寻求平衡

作为一名可靠性工程师或开发者,您需要在两者之间寻求平衡。只关注监控将使你对系统的了解变得狭隘,检测现有问题可能会变得具有挑战性。另一方面,过分关注可观察性可能会让你陷入信息过载。

可观察性和监控都是为了实现不同的目标而设计的。您需要根据您希望实现的目标来优先考虑它们。如果您想实时了解和分析您系统的行为以获得更大的视角,请关注可观察性。如果您需要通过指标和警报来诊断问题,请关注监控。

关于作者

Siddhant是一位全栈JavaScript开发者,擅长前端工程。他在印度与多家初创公司合作,并拥有在教育科技和医疗保健行业构建产品的经验。Siddhant对教学充满热情,擅长写作。他还教授编程给许多毕业生,帮助他们成为更好的未来开发者。