当前位置: 首页 > 科技观察

为什么监控微服务如此重要?

时间:2023-03-22 10:32:00 科技观察

这是因为我们工作在一个系统复杂且分布在多个微服务中的时代。例如,即使是一个简单的电子商务应用程序也可能具有订购、产品目录和运输服务。我们的工具和实践有时难以跟上这种复杂性。它让我想起了音乐和电子游戏。在视频游戏的早期,很多音乐都是以MIDI文件的形式出现的。这些文件只能播放一组音符,这使得音乐感觉单调。现在,音乐可以充实了。我们听到每一种乐器,都在交响乐中演奏。节奏和乐器的结合使音乐比本身更优美。一次一个系统?在软件中,我们练习一次监控一个系统。当我们需要查看其他系统时,我们会切换到其他屏幕或工具。但微服务就像交响乐中的乐器。我们需要一种看待他们的方式,一眼就能看到他们创作的音乐。在本文中,我们将探讨您可以采取的五个步骤,以确保您可以监控您的微服务以查看它们是否和谐地协同工作。这还允许您修复可能导致工作不一致的问题。微服务是什么意思?微服务是一个可自我部署的、以业务为中心的单元。并非所有部署工件都是单独的服务。例如,我可能有一个具有运行时组件和ETL组件的微服务。我想将它们部署在一起,因为它们紧密耦合。在大多数情况下,我还想将它们作为一项服务进行监控。对于微服务,我想将它们视为独立的服务,但也要评估它们之间的相互关系。现在,让我们看看监控微服务时需要采取的五个步骤。1.确保您只需要启动几个服务在实施或学习新事物时,尝试一次启动并运行所有很酷的东西可能很诱人。在软件开发中,我们称之为“闪亮工具综合症”。我们陷入如此多的可能性中,以至于我们可能会在设置事物的复杂性中迷失自我。为避免这种情况,请限制您为微服务监控设置的内容。选择两个或三个服务来连接到新的监控工具。然后对每个重复步骤2到5(见下文)。您应该选择哪种服务?要从本文开头继续进行比较,请选择交响乐中最响亮的乐器。哪些服务对您的业务最具战略意义?选择最具战略意义的服务,将为您带来最大的价值。您可能无法选择最具战略意义的服务。也许其中一些是遗留应用程序,可能无法很好地与较新的工具一起使用,或者没有允许您轻松重新配置它们的测试。在这种情况下,选择一些您认为最安全并且可以在本地运行的服务,以确保连接正常。总体目标是专注于只提供少数服务,无论您选择哪种服务。2.决定先衡量什么与限制注意力的思想一致,你需要熟悉最重要的一到三个最重要的指标来衡量。有些工具有很多功能。例如,Retrace可以执行性能指标、警报、集中日志记录和错误跟踪。如果您还没有选择监控工具,那么查看所有功能可能会让人望而生畏。相反,只查看一到三个最重要的指标可以避免这种分析瘫痪。这将使您能够更快地进入第3步,而无需尝试一下子理解所有内容。您应该关注哪些指标?要确定要关注哪些指标,了解您的业务需求很重要。大多数客户或运营投诉来自哪里?是因为太多服务宕机还是请求太慢?可能是因为在高负载期间弹出了太多数据库错误。您越了解您的业务,就越容易选择正确的指标。此外,您可以更轻松地为老板提供所需的预算,因为您可以购买工具。如果您发现自己处于孤立状态(与其他团队或部门分开),或者不知道什么对您的业务最重要怎么办?从四个金色信号开始。这些信号是从监控服务中获得即时价值的行之有效的方法。它们几乎适用于所有企业。Retrace开箱即用地支持这些功能,并根据您要监控的服务类型具有智能默认值。3、调试APM和录音软件功课做好了,接下来就可以选择监控工具了。使用一到三个重要指标来指导您如何看待指标。如果他们有演示,那么您可以尝试其中的内容,看看它是如何工作的。这是理想的体验,因为屏幕截图只能带您走这么远。无论指标如何,您都希望在监控工具中看到一些信息。首先,您需要轻松概述整个系统。这不仅包括您的运行时服务,还包括您的数据库和其他后端组件。这样,您就可以很容易地感受到整个系统的节奏,就像听到一首所有乐器一起工作的歌曲。您还需要允许跨服务关联的仪表板。这些可能会揭示在代码中不容易看到的关系。(如果您按照下面列出的步骤5,您可以快速从这些日志跳转到集中式日志以查看发生了什么。)该工具应该做什么最后,该工具应该允许您轻松地将概览转换为具体的服务和部分系统的。你应该能够切成几种不同的尺寸。该工具应该完成查明潜在问题的大部分艰苦工作。具有智能默认值的工具将使这变得容易,因为它将以很大的粒度设置所需的监视器组合。您不仅应该查看用于监控的工具,还应该查看用于集中式日志记录的工具。我提出集中式日志记录也是因为监视器总是以某种方式聚合。他们擅长展示趋势和整体健康状况。但在某些时候,您需要更深入地了解正在发生的事情。您无需访问多个日志字段即可查看跨多个微服务的请求的故事。相反,您应该能够在一个地方查看来自多个服务的日志。Retrace具有监控和集中日志记录功能,但这不是必需的。监控工具可以与日志记录工具分开,只要您可以将日志与您在监视器中看到的内容相关联,例如应用程序ID和时间戳。(在第5步中,我们将讨论如何创建强相关的ID。)4.扩展点的检测指标一个好的工具将有一些自动检测服务的方法。通常这意味着您必须添加一个库并配置一些属性才能连接到正确的服务器。确保该工具支持检测所选语言和框架。否则,您将不得不在框架的请求生命周期中找到接缝以进行自我检测。某些框架(例如SpringBoot)具有内置的监控扩展。即使使用自动仪器,大多数工具也应该允许您自定义。这允许您进入应用程序中那些由于不理想情况而演变的奇怪地方。检测和配置后,在本地运行服务,指向监控服务器。确保数据确实从服务进入您的工具。如果您正在使用Retrace,这里有一篇很棒的文章描述了如何验证您的应用程序是否正常工作。5.仪器跟踪您的日志即使一切都已连接并正在运行,我仍然建议您做一件事。我之前提到过集中式日志记录,以及最终找出问题所在的重要性。使用微服务,可能很难跟踪系统中的事件。这使得跨服务的错误几乎不可能被发现。我建议在每项服务中实施跟踪ID。您需要在整个服务中以标准方式执行此操作,以便一个跟踪ID可以在整个系统中流动。OpenTracing标准是执行此操作的好方法,许多框架都有支持它的工具库。有了这个功能,您将能够轻松查询跨多个服务的日志,并探索问题是如何充斥您的软件的。结论监控微服务就像监控大多数系统,但有一些曲折。您将需要一个可以同时监控多个服务的工具。您还需要向每个服务添加跟踪信息,以便您可以查看它们如何交互。有了这些,您将拥有美妙的服务交响乐,随时随地提供见解,使您能够就我们的扩展和架构做出明智的决策。