APM市场非常拥挤。市场上还有另一种选择:开源工具。如果你对在生产中获得应用程序可见性的简单方法感兴趣,并且想知道代码实际上是如何被监控的,那么这些工具是一个很好的选择。想学习java技术的同学,不妨报个Java培训班,有明确清晰的学习路线,理论知识+实战操作,可以获得快速提升。
开源社区中也有一些关键的APM工具,每种工具都有自己的产品和可能性。这里为你介绍五大可用工具。
1.Stagemonitor
Stagemonitor提供了一个Java监控代理,它是在考虑集群应用程序堆栈的情况下构建的。这意味着它旨在监视在多个服务器上运行的应用程序。该工具与时间序列数据库(TSDB)集成。此工具针对处理时间序列数据以及按时间索引的数字数组进行了优化。这些数据库包括Elasticsearch、Graphite和InfluxDB。
它是如何工作的?
Stagemonitor包括一个位于Java应用程序中的代理,它向中央数据库发送指标和请求跟踪。该工具只需要一个实例来监控所有应用程序、实例和主机,并且可以部署在你自己的数据中心内。
在监控方面,你可以从集群或直接从developerserver查看历史或实时数据,创建自定义警报并为每个指标定义阈值。
Stagemonitor包括一个仪表板,因此你可以可视化和分析你感兴趣的不同指标和请求。你可以创建自定义仪表板,编写自定义插件,甚至使用第三方插件。它提供了一个无需后端的浏览器内小部件,可以自动注入到被监控的网页中。你可以通过以下链接观看现场演示。对java感兴趣的同学可以参加java培训,你可以学会更多的java新技术。
在官方文档中,Stagemonitor声明它也支持非基于servlet的应用程序,你可以在这里查看完整的需求。
一句话:如果你已经熟悉ELKstack,它绝对值得一试。
2.Pinpoint
Pinpoint是为大规模分布式系统设计的APM工具。它模仿Dapper,一个由Google构建的分布式系统跟踪基础设施,为其开发人员提供更多关于复杂分布式系统行为的信息。
它是如何工作的?
该工具通过跟踪跨分布式应用程序的事务,帮助分析系统的整体结构以及其中的组件是如何相互连接的。这意味着它旨在解释每个事务是如何执行的,跟踪组件之间的流程,以及(前面的坏笑话)指出有问题的领域和潜在的瓶颈。
仪表板有助于可视化组件的连接方式,并允许你实时监控应用程序内部的活动线程。Pinpoint还允许你查看请求计数和响应模式,以便你能够识别潜在的问题。你可以查看关键的详细信息,包括CPU使用率、内存/垃圾收集和JVM参数。
Pinpoint与无需任何代码更改就可以安装的代理一起工作,你可以在自己的机器上运行一个示例实例,方法是为每个组件运行四个简单的脚本:Collector、Web、SampleTestApp和HBase。
一句话:如果你听说过Dapper,或者想要监视和分析你复杂的分布式系统,你绝对应该看看这个工具。想对java有更深入的了解,可以参加java培训,在专业老师的指导下,可以很全面地掌握java最新的相关知识和技能。
3.MoSKito
MoSKito提供三合一工具:
moskito-Essential–基本的独立项目。它是MoSKito功能的核心,让你可以监控你的应用程序
moskito-Central–用于保存性能数据的中央存储服务器
moskito-Control——一个监控多节点web应用程序性能的工具
它是如何工作的?
要开始,你所需要做的就是将.jar文件放入WEB-INF/lib文件夹,或者在WEB.xml文件中包含一个新的小节。一旦该工具启动并运行,它就会收集性能数据,实时分析,并将其存储以进行历史分析。
该工具收集你的所有性能指标,如线程、内存、缓存、存储、服务、注册、支付、转换、SQL、负载分布等。它不需要修改代码,支持所有主要的应用服务器(Tomcat、Jetty、JBoss、WebLogic),并将数据保存在本地。
你还可以获得一个通知系统来了解何时达到阈值,以及你想要监控的用户操作的记录。除了基于web的仪表盘,该工具还提供了一个移动应用程序,可随时监控你的应用。
一句话:MoSKito于2007年首次推出,现在它是一个众所周知的稳定工具,受到团队和社区的支持,包括付费支持选项。这对任何开源工具来说都是一个巨大的优势。java培训课程结构良好,以正确的顺序涵盖了所有这些基本主题,使你的学习更加轻松。
4.Glowroot
Glowroot以其快速、干净和简单的APM工具而自豪。它将允许对缓慢的请求和错误进行跟踪捕获,并且你将能够记录每个用户操作的时间跟踪,以及SQL捕获和聚合。该工具还提供了所有数据的历史汇总,并具有可配置的保留期。
它提供了可视化响应时间分解和响应时间百分比的图表,它的响应UI将允许你从移动设备和桌面监控你的应用程序。
它是如何工作的?
要开始使用Glowroot,需要下载并解压缩主安装文件,并将-Javaagent:path/to/glowroot.jar添加到应用程序的JVM参数中。启动应用程序后,剩下的就是将浏览器指向http://localhost:4000。
一旦该工具启动并运行,你将获得连续的概要分析(带有过滤选项),并能够设置响应时间百分比和MBean属性的警报。Glowroot完全支持跨多线程的异步请求,它支持Tomcat、TomEE、JBossEAP、Wildfly、Jetty和Glassfish。
如果干净和简单是你正在寻找的,毫无疑问你会想看看Glowroot而不是这里的其他工具。越来越多的人选择参加java培训来开启自己Java开发人员的职业人生,这是一个快速有效的学习方式,可以在短时间内掌握java所需的技能,更好地找到工作。
5.Kamon
Kamon是一个反应友好的工具包,为运行在JVM之上的应用程序而构建。更具体地说,它是为使用类型安全反应平台(使用Scala、Akka、Spray和/或Play!),但仍然支持任何其他JVM平台和语言。
它是如何工作的?
Kamon作为一个核心模块发布,包含所有的度量记录和跟踪操作API以及可选模块,为你的应用程序提供字节码工具和/或报告功能。或者换句话说,它提供了一个简单的API来记录度量和跟踪JVM应用程序的信息。
Kamon的所有模块都可以通过MavenCentral获得,你需要将它们作为编译依赖项添加到你的项目中。一旦你包含了你感兴趣的模块,只需启动Kamon,所有可用的模块将自动启动,你不需要显式激活/启动它们。
跟踪模块将允许记录关于在你的应用程序中执行的功能的数据,度量模块将允许你控制由用户代码或由其他Kamon模块提供的工具跟踪的实体的注册。它还具有其他功能,如过滤、配置仪器工厂和调度指标订阅。
一句话:如果你正在使用多种JVM语言,或者主要是Scala/Akka,并且想要“一个工具来监控它们”,Kamon可能是最友好的选择。
总结
在APM领域,这些是付费工具的很好的替代品。但是……有些人可能认为选择开源软件是省钱的好方法。同样重要的是要记住,虽然你不需要为使用该工具开具发票,但这并不一定意味着它更便宜。在java培训中,有更加系统全面的课程,明确清晰的学习路线,学习起来既轻松,又高效。