可观察性:如何让您的集成开发环境(IDE)进行调试为了生存和发展,企业现在必须仔细研究易于使用的云原生技术(例如API管理和集成解决方案、云原生产品、集成平台即服务和低代码平台),加快上市时间,并实现重用和共享。然而,由于它们的分布式特性,这些云原生应用程序管理起来更加复杂,并且随着它们的扩展而增加。在应用程序中构建可观察性允许跨组织的团队自动收集和分析数据以优化应用程序并解决可能影响用户的潜在问题。此外,它还显着减少了运行时应用程序问题的调试时间。这使开发人员可以更专注于生产任务,例如开发新功能。可观察性具有三个关键组件:日志记录、指标和跟踪。为了全面了解系统的行为,有必要收集这三个组件,仅仅一两个组件是不足以调试应用程序的复杂行为的。本文讨论了可观察性的重要性,并研究了Choreo(一种用于云原生工程的集成平台即服务)如何使开发人员能够使用深度可观察性功能来观察应用程序性能、识别异常和解决问题。1.自动可观察性如果您想在生产中收集日志、指标、跟踪数据而不影响应用程序性能,那么在您的应用程序中构建可观察性需要付出巨大的努力。确保可观察性对性能的影响最小是开发可观察性框架的主要挑战之一。如果要跟踪所有的请求,会带来很大的性能开销。为了使应用程序可观察,开发人员需要编写性能优化的可观察性代码并使用自适应采样等算法,这些算法可以动态控制不同流量条件下的性能开销。不幸的是,许多应用程序开发人员没有实现收集所有三个可观察性支柱的代码。这有两个原因:首先,许多开发人员不具备所需的专业知识水平。其次,所需的工作量使其成为一项代价高昂的工作。将可观察性集成到应用程序中需要多轮优化和广泛测试,以确保没有显着的性能开销。2.Choreo如何提供帮助Choreo的设计方式使开发人员不必自己开发具有可观察性的应用程序。Ballerina是Choreo的底层编程语言,具有强大的可观察性框架,用Ballerina编写的程序可以实现完全的可观察性。Choreo使用Ballerina的可观察性框架为其服务收集可观察性数据。由于Ballerina的可观察性框架经过精心设计以确保最小的性能开销,因此Choreo应用程序可以在启用可观察性的情况下在生产中运行。可观察性数据以各种可视化形式呈现给用户。用户可以使用这些可视化来优化应用程序,然后识别并解决可能对用户体验产生不利影响的问题。图1显示了Choreo应用程序的主要可观察性页面。图1Choreo中的可观察性主页(1)使用平均值调试高响应时间响应时间是一个关键的性能指标,它直接影响用户体验。高响应时间会导致糟糕的用户体验,进而导致用户流失。不幸的是,开发人员在开发应用程序时并不太注意应用程序的响应时间(延迟)。他们只有在生产中部署应用程序后才会发现此类问题。即使开发人员优化了响应时间,工作负载条件也会随时间发生变化,从而导致响应时间异常。Choreo在不同点收集应用程序延迟,这使用户能够立即识别其代码中的瓶颈。较长的响应时间可能是由于您的代码中存在问题,或者可能与调用外部端点的延迟有关。在Choreo中,开发人员可以识别并修复这些问题,而无需花费大量时间进行调试。图2显示了在Choreo中开发的应用程序的延迟细分。重要的是要注意不同的外部(连接器)调用将如何影响总延迟。图2在Choreo中开发的应用程序的延迟分解(2)调试单个请求延迟虽然可以使用指标来调试某些延迟行为,但无法使用图2所示的平均延迟值来调试与延迟相关的更复杂的问题。此类问题的示例包括响应时间的逐渐增加、平均响应时间的突然下降或尖峰(称为电平漂移)以及随机时间点的延迟尖峰。Choreo允许开发人员在更精细的级别上挖掘数据以检测此类问题。例如,Choreo可观察性收集的跟踪数据允许开发人员通过调查单个请求的延迟分解来调试延迟峰值。图3显示了在Choreo中开发的应用程序的吞吐量和延迟行为。图3在Choreo中开发的应用程序的吞吐量和延迟行为这里假设用户知道特定请求的延迟。这可以通过单击图表中的特定点来完成。单击某个点时,可获得单个请求的延迟和延迟细分(Choeo显示请求在请求路径中花费最多时间的位置)。图4说明了这一点。图4查看请求在请求路径中花费最多时间的位置(3)调试复杂问题虽然可以通过分析延迟数据解决大量问题(例如后端缓慢),但有些问题需要更详细的分析。这种类型的分析需要在统一视图中查看多个指标和日志。这些指标包括系统指标(例如CPU和内存)和应用程序指标(例如吞吐量、延迟和错误率)。Choreo的诊断视图对此有所帮助。它允许开发人员深入研究和调试高CPU使用率等行为,并将高CPU使用率与另一个性能指标的变化相关联,例如延迟增加。图5显示了Choreo可观察性的诊断视图。图5.Choreo可观察性诊断视图(4)在低配置环境下调试开发人员经常会因为引入新功能和修复错误等各种原因而需要编写新代码或修改现有代码。发生这种情况时,可能会在应用程序中引入与性能相关的错误。Choreo允许在低配置环境中及早发现此类问题。开发人员可以在配置较少的环境中测试他们的应用程序,并将其性能行为与以前的版本进行比较。如果发现问题,可以在将新版本部署到生产环境之前解决这些问题。即使是全新的应用,开发者也可以通过提供示例测试数据/案例,在低配置环境下测试应用。(5)性能异常警报持续监控可观察性仪表板以识别应用程序中的异常行为是不切实际的。因此,许多系统都有自动检测性能异常并提醒相关方的方法。许多警报系统使用基于阈值的方法向用户发送警报。例如,如果CPU使用率高于80%,则会生成并引发警报。基于阈值的方法具有已知的局限性。首先,它们需要人工配置和确定阈值的专业知识。其次,基于阈值的方法由于无法检测应用程序中的复杂异常模式而导致准确性低。Choreo拥有一个复杂的异常检测框架,该框架使用先进的机器学习和异常检测算法来检测Choreo用户应用程序中的性能异常。它使用从以前的应用程序收集的可观察性数据来训练这些机器学习模型。结论尽管服务网格试图通过收集服务可观察性数据的sidecar微服务提供可观察性解决方案,但默认情况下,通过这些sidecar收集的数据不足以执行云原生应用程序的深度调试。这种调试需要在服务内以更细粒度的级别收集数据(例如,在服务内的不同点分解特定请求的延迟)。Choreo有一个强大的可观察性框架,可以解决服务网格中的问题。Choreo还收集了其应用程序的所有三个可观察性支柱,对应用程序性能的影响最小。它以一种便于调试和检测应用程序性能异常的形式将这些数据呈现给用户。此外,Choreo拥有先进的基于机器学习的异常检测技术,可以准确检测Choreo应用的性能异常。原标题:Observability:LetYourIDEDebugforYou,作者:MalithJayasinghe
