复杂的架构、更快部署的压力以及对最佳性能的需求给监控团队带来了更大的压力。因此,越来越多的人正在寻求实施更先进的监控技术。在本文中,我们以 Postgres 为例来区分基本和高级监控。
基本监控与高级监控
基本监控是红灯/绿灯监控,例如你的系统是正常还是宕机?你的系统是否出现故障?
与高级监控解决的问题(例如你是否满足服务质量保证)相比,基本监控(例如了解你的系统是否出现故障)虽然问题简单,但是它的重要性不亚于高级监控。基本监控应优先考虑实际产生价值的地方----通常是用户接近的系统和服务。
如果你已经应用了基本监控,但还不了解你的系统,则需要高级监控技术。
与红灯/绿灯基本监控不同,高级监控主要负责观察系统以了解其行为是否正常。这是一个容易问,但很难回答的问题。事实上,回答这个问题通常是一个很长的过程。它需要围绕你认为系统应该如何运行,并观察其实际运行方式,使之不断向期望的方式靠近。一旦达到这一点,高级监控通常会自动化观察和诊断。
基本监控与高级监控:Postgres
为了更好地说明高级监控技术包括哪些,以及它们与基本监控有何不同,让我们以 Postgres 为例。
连接与服务质量
如果你使用基本的监控技术来监控 Postgres,那么你通常监控以下内容:
- Postgres 正在运行吗?
- 系统空间不足?
- 系统服务可以查询吗?
- 简单查询是否返回预期结果?
这些是容易的简单的--开/关、健康/不健康、真/假--的问题。当你开始应用高级监控技术时,事情就不那么简单了,而且更加模糊了。你现在要问的是你期望它的行为方式。例如,Postgres 的工作是接收连接请求并回答应用程序的问题,通过高级监控,你可以观察到,监控以下内容:
- 正在运行或应用程序询问的所有查询是什么?
- 查询的延迟配置文件是什么,它是否已更改?
- 我们预计什么时候会耗尽空间?
- 服务饱和度如何?
高级监控的第一步,就是能够观察正在发生的事情并将其与你期望发生的事情进行比较。例如,你可能希望 Postgres 上运行的工作负载看起来像某种方式,而你的监控系统告诉你工作负载实际上并不像你期望的那样。这不一定是坏事,这只是意味着某些事情可能需要你注意。如果你仅应用基本监控并且只是检查工作负载连接是否打开/关闭,那么这可能不足以诊断问题。 Postgres 的基本监控是与功能有关的,而高级监控则会涉及服务质量、性能和行为。
综合分析与实时分析
基本监控往往是综合分析的。然而,仅仅依靠综合工作并不能提供真实、准确的见解。
高级监控有时包括综合分析,但它往往是实时观察系统的行为——这意味着你实际上是在观察系统中发生的真实事件并对其进行测量。例如,当用户登录应用程序时,可能会运行多个查询。为确保满足性能要求,使用高级监控的工程师将观察以下测量值:
- 每个查询需要多长时间?
- 结果集的大小是多少?
- 是否有查询错误?
虽然综合分析具有价值,但最先进的监控依赖于对实际工作的观察来指导分析和决策。
瞬时观察与历史分析
虽然知道 Postgres 上是否有剩余磁盘空间可能会有所帮助,但拥有磁盘空间使用的历史记录测量值更有价值。这为你提供了见解,例如磁盘空间消耗的速度。
例如, Postgres 的并发连接数,经典问题之一是知道你是否有足够的连接。使用基本监控,你并不能准确回答。但是,当你应用高级监控时,你可以随着时间的推移每几秒钟记录一下你有多少并发用户,让你更好地了解空间不足的情况并根据需要进行实时动态调整。
通过这些历史数据,你可以识别趋势并了解系统的行为,以便你可以准确地规划容量:
- 你的用户连接数量是否接近极限?
- 你的用户连接数量是否在稳步增长?
如果两周前你有 100 个用户,上周有 110 个,本周有 120 个,那么下周可能会更大。历史数据可让你了解这些趋势,从而准确规划未来的容量。
应用高级监控的回报
获得有关你的系统的惊人见解
应用高级监控的一些最大优势并非来自实际拥有高级监控,而是让你进入高级监控的旅程。
工程师对系统应该如何工作有期望,但通常并不准确。并不是期望不好,相反,你可能假设有人在系统中做了某事或某事以某种方式连接,但事实证明并非如此。将你的期望与一组测量值对比通常令人大开眼界。你了解了一些关于你的系统的东西,或者你了解了它的破坏性,这两种学习都是有价值的。事实上,学习有关系统的新知识通常比找到损坏的部分更有价值。
提高效率并加快修复速度
应用高级监控技术通常可以帮助你诊断系统中的低效率问题,无论是页面加载缓慢的低效问题,还是物流方面的低效问题,举个例子。无论是什么,你都将深入了解你的系统,了解你的系统中挑战你的期望的事物,并注意到你以前从未遇到过的问题。你还能够及时修复问题,甚至从一开始就防止它们发生。
有信心了解你的系统
系统越复杂,解决问题就越困难。当今的 IT 环境非常复杂,并且有如此多的系统组件,以至于当系统出现故障时,故障可能会出现在其他地方。高级监控使工程师有信心了解他们操作的复杂系统。这在故障排除、容量规划和故障预测方面非常有用。如果你对系统的行为方式有深入的了解,那么你就可以预测下一次故障将在何处或何时发生。
如果你没有适当的监控,那么你将所有时间都花在救火上,这最终会让你的员工筋疲力尽,并脱离产品路线图。高级监控不会消除所有救火工作,但你的问题将不会变得那么紧急,并且你在解决它们时会更有信心。
监控是一段旅程
有些组织已经意识到如果他们实施更先进的监控技术,他们可以获得的好处,但许多组织并没有改变他们的流程和工具。关键是要记住它不必在一夜之间发生。转向更高级的监控是一段旅程,你可以设定节奏。当你开始那段旅程时,你将立即获得意想不到的收益。