博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
开源 apm_使用开源APM软件:InspectIT
阅读量:2522 次
发布时间:2019-05-11

本文共 2546 字,大约阅读时间需要 8 分钟。

开源 apm

在当今时代,软件系统不断变得越来越复杂。 同时,客户对响应时间和可用性的期望比以往更高。 如您所知,性能不佳的服务可能会将客户吸引到竞争对手的产品中。

因此,系统故障和性能不佳通常会对公司的声誉和经济成功产生重大的负面影响。 通过提供方法和工具以确保高质量的服务, (应用程序性能管理)的学科得以拯救。 APM工具提供了监视软件系统的运行状况,检测新出现的性能异常并对其做出React的方法,并允许诊断性能问题的根本原因。 提供了一套商业化的APM工具(AppDynamics,DynaTrace,NewRelic等),它们的功能和成熟度范围很广。 但是,在某些情况下,由于许可证成本,供应商锁定或其他可能对采用开放源代码策略的公司产生负面影响的原因,商用工具可能不适合。

是APM的成熟的开源替代方案。 该工具提供了管理系统性能所需的所有核心功能。 特别是,inspectIT允许您监视系统的运行状况,在出现性能问题时通知您,并为您提供一种用于问题诊断的复杂方法。

InspectIT一目了然

下图显示了该工具的高级概述。

inspectIT背后的体系结构充当您可以建立和扩展的平台,或者您可以使提供的功能适应您的需求。 您可以将其分为三种主要类型的组件:代理,CMR(中央测量存储库)和用户界面。

InspectIT architecture

代理商

代理已连接到系统,您应该对其进行监视或分析,并负责收集数据。 您可以在此处收集基础架构的统计信息(例如,CPU利用率,已用内存等)以及详细的运行时数据。 例如,在Java应用程序中,这些可能是执行跟踪,方法调用的持续时间,JMX Bean或已执行SQL语句。

InspectIT为Java提供了一个全面的代理,该代理采用来收集测量数据。

除了Java代理外,开发人员还创建了多个代理来支持更多平台和编程语言。 例如,他们已经为.NET,Android和Node.js制作了实验代理。 他们还正在开发一种浏览器代理,该代理能够监视最终用户的体验。

CMR

inspectIT CMR(中央度量存储库)是接收代理收集的数据的中央组件。 它管理数据并提供查询接口。 除了数据管理之外,CMR还负责指导代理他们应该收集哪些数据。

CMR区分两种类型的数据:长期数据(CPU利用率,请求响应时间,运行线程等)和详细数据(执行跟踪,方法调用层次结构等)。 详细数据存储在内存中的 ,inspectorIT丰富的客户端可以对其进行分析。 长期数据存储在 ,该是基于Web的仪表板的基础。

用户界面

由于监视系统健康和性能问题诊断是针对不同目标用户和不同需求的两个不同问题,因此inspectIT提供了两个相应的用户界面。

您可以使用基于的Web-UI来地查看系统当前的运行状况。 您可以使用富客户端对收集的详细数据进行进一步分析。 以下案例历史记录进一步探讨了这些用户界面。

案例故事

如果有效使用,那么inspectIT可以改善并确保系统的高质量,从而对最终用户的体验产生积极影响。

为此,我建立了一个虚拟应用程序并附加了inspectIT代理。 使用的应用程序基于Red Hat的开源JBoss展示应用程序 ,在此代表电子商务Web应用程序。 为了展示inspectIT的功能,我集成了性能瓶颈来模拟问题。

使用inspectIT的可定制的基于Web的仪表板,您可以从业务和技术角度查看当前系统状态的概述。 特别是,它可以显示诸如CPU利用率和内存消耗之类的纯技术指标,并且可以将数据与指定的业务环境相关联。

在典型的用例中,系统不是全天候手动监控的,但是希望在出现问题(例如服务器故障或性能下降)时立即通知操作员。 为此,您可以定义触发规则的警报规则,例如在违反规则的情况下发送警报电子邮件。

其中一个示例是一条规则,当请求的响应时间超过定义的阈值时,该警报就会发出警报。

InspectIT dashboard

在下一步中,您将使用inspectIT富客户端来分析收集的数据以发现问题的根本原因。 使用包含在收到的警报电子邮件中的警报ID,您可以访问仪表板。 通过它,您可以:

  • 显示所有违反相应警报规则的请求
  • 研究每个请求的执行跟踪,并检查调用了哪些方法以及执行了多长时间
  • 查看此请求导致的已执行SQL语句和异常
  • 通过数据浏览器请求独立的统计信息(例如,所有SQL语句,方法定时等的汇总)

InspectIT alert

在默认配置中,仅servlet调用和SQL语句被捕获并显示在调用层次结构中。 因此,您无法确切看到丢失的时间。

为解决此问题,请添加其他检测点以收集更多数据。 去做这个:

  • 创建一个新的检测配置文件,您可以在其中定义自定义类,然后应对其进行监视
  • 您可以将这些配置文件分组到环境中,这将允许您在不同的代理上分配一组不同的配置文件

InspectIT profiles environments

保存配置文件或环境后,受影响的类的字节码将与inspectIT代理修改的字节码进行即时交换。   一旦发生这种情况,将立即收集新指定方法的运行时数据。

如果您现在查看一个新捕获的请求,那么数据将更为详细。 使用此数据,您可以确定哪种方法导致响应时间长。 在此示例中,问题的根本原因是先前集成的性能瓶颈的一种方法。

现在,您可以查看源代码,并发现此方法运行缓慢的原因。 例如,也许依赖于第三方服务(这是无法实现的),或者仅仅是代码中的错误。

最后的想法

使用开源APM软件,您可以确保系统的质量并采取措施进一步改善它。 您可以使用该软件立即对问题做出React,并确定问题的根本原因,或者至少在一定程度上详细定位它们。

开发人员正在创建许多强大的功能,这些功能将极大地丰富inspectIT的功能。

这些功能之一是能够关联多个主机上的执行跟踪的功能,这可以增加系统洞察力,从而可以跟踪整个系统中的数据流。 此外,移动(Android,iOS)和浏览器(JavaScript)代理将不再处于试验状态,它们已可以投入生产。 使用这些功能,您可以查看受监视系统的端到端视图。

正在开发的另一个功能是自主异常检测,它可以使用智能和自适应基线,而不是硬阈值。

这只是inspectIT及其功能的简短概述。 还有许多其他功能可供发现。 如果要尝试,可以下载及其文档,也可以从检出完整的源代码。

翻译自:

开源 apm

转载地址:http://zryzd.baihongyu.com/

你可能感兴趣的文章
为什么幻灯片画布不居中
查看>>
flask模板应用-javaScript和CSS中jinja2 --
查看>>
react-native 调用原生方法
查看>>
查看Mac系统所有USB设备信息 解决android studio无法识别真机问题
查看>>
20145238 《信息安全系统设计基础》第2周学习总结
查看>>
android 获取日期
查看>>
HDU-1018 BigNumber(斯特林近似)
查看>>
Excel公式——单元格前加固定字符串
查看>>
BZOJ.4738.[清华集训2016]汽水(点分治 分数规划)
查看>>
testNG框架的四种传参方式
查看>>
stark组件开发之URL别名的设置
查看>>
npm总结
查看>>
css样式margin padding border
查看>>
vim笔记
查看>>
Leetcode: Reorder List && Summary: Reverse a LinkedList
查看>>
Map (就一个json.jar)
查看>>
FPS检测
查看>>
2. 两数相加 golang
查看>>
Winform窗体设计工具源码
查看>>
字典和列表的删除问题, 深浅拷贝
查看>>