鲜为人知但有用:开源应用程序性能监视的状态
对于任何应用程序来说,最重要的事情之一就是性能。 我们要确保用户获得他们能获得的最佳体验,并且要知道我们的应用已启动并正在运行。 这就是为什么我们大多数人至少使用一种监视工具的原因。
如果您正在性能监控市场中寻找与众不同的东西,则可以选择一种开源工具。 在下面的文章中,我们收集了一些开源的APM工具,这些工具现在可以作为付费工具的替代品,因此您将能够看到它是否是您的正确选择。
开源
APM市场是一个拥挤的市场。 您拥有知名度很高的名字,例如New Relic,AppDynamics(请参阅此帖子以获取有关它们的概述),以及Dynatrace(我们在之前的文章中进行了比较),以及一些较小或鲜为人知的工具。 由于游戏中有很多玩家,而且他们都知道监视您的应用程序的价值,因此他们自己保留了代码。
但是,市场上还有另一种选择:开源工具。 如果您对一种简单的方法感兴趣,以便在生产中获得应用程序的可视性,并且想知道实际上如何监视代码,则这些工具是一个不错的选择。
开源社区中也有一些关键的APM工具,每种工具都有其自己的产品和可能性。 如果您感兴趣,并且想确切地了解APM为您准备了什么开源产品,那么我们介绍了可用于您的前5种工具:
- 舞台监控器
- 查明
- 莫斯基托
- 焕根
- 加蒙
1.
Stagemonitor提供了一个Java监视代理程序,该代理程序是在考虑群集应用程序堆栈的情况下构建的。 这意味着它旨在监视在多个服务器上运行的应用程序。 该工具与时间序列数据库(TSDB)集成在一起。 该工具针对处理时间序列数据以及按时间索引的数字数组进行了优化。 这些数据库包括Elasticsearch,Graphite和InfluxDB。
建筑
它是如何工作的?
Stagemonitor包含一个位于Java应用程序中的代理,该代理将指标和请求跟踪发送到中央数据库。 该工具只需要一个实例即可监视所有应用程序,实例和主机,并且可以在您自己的数据中心内部署。
在监视方面,您可以从群集或直接从开发人员服务器查看历史或实时数据,创建自定义警报并为每个指标定义阈值。
Stagemonitor包含一个仪表板,因此您可以可视化和分析您感兴趣的不同指标和请求。您可以创建自定义仪表板,编写自定义插件,甚至使用第三方插件。 它提供了不需要后端的浏览器内窗口小部件,该窗口小部件会自动注入到受监视的网页中。 您可以在以下链接中观看实时演示。
在官方文档中,Stagemonitor声明它也为非基于servlet的应用程序提供支持,您可以在此处查看全部要求 。
Stagemonitor的小部件指标
底线:如果您已经熟悉ELK堆栈,那么绝对值得一试快速测试。
2.
Pinpoint是专为大规模分布式系统设计的APM工具。 它以Google建立的分布式系统跟踪基础结构Dapper为模型,为开发人员提供了有关复杂分布式系统行为的更多信息。
建筑
它是如何工作的?
该工具通过跟踪分布式应用程序之间的事务,有助于分析系统的整体结构以及其中的组件如何互连。 这意味着它旨在解释如何执行每个事务,跟踪组件之间的流程并(提前开个玩笑)查明问题区域和潜在瓶颈。
仪表板有助于可视化组件的连接方式,并允许您实时监视应用程序内部的活动线程。 Pinpoint还使您可以查看请求计数和响应模式,从而能够识别潜在问题。 您可以查看关键细节,包括CPU使用率,内存/垃圾收集和JVM参数。
Pinpoint可以与已安装的代理一起工作,而无需更改任何代码,并且您可以通过为每个组件运行四个简单脚本(包括Collector,Web,Sample TestApp和HBase)在自己的计算机上运行示例实例。
Pinpoint的ServerMap
底线:如果您听说过Dapper,或者想监视和分析您的复杂分布式系统,则一定要检出此工具。
3.
MoSKito提供三种工具合二为一:
- MoSKito-Essential –基本的独立项目。 这是MoSKito功能的核心,可让您监视应用程序
- MoSKito-Central –集中式存储服务器,用于保存性能数据
- MoSKito-Control –一种监视多节点Web应用程序性能的工具
它是如何工作的?
首先,您需要做的就是将.jar文件拖放到WEB-INF / lib文件夹中,或者在web.xml文件中添加一个小的新部分。 工具启动并运行后,它将收集性能数据,对其进行实时分析以及将其存储以进行历史分析。
该工具收集所有性能指标,例如线程,内存,缓存,存储,服务,注册,付款,转换,SQL,负载分配等。 它不需要更改代码,支持所有主要的应用服务器(Tomcat,Jetty,JBoss,WebLogic),并将数据保存在本地。
您还将获得一个通知系统,以了解何时达到阈值以及要监视的用户操作的记录。 该工具与基于Web的仪表板一起,还提供了一个移动应用程序,可随时随地监视您的应用程序。
MoSKito的必备
底线: MoSKito于2007年首次推出,现在它已成为众所周知且稳定的工具,受到团队和社区的支持,包括付费支持选项。 对于任何开源工具来说,这也是一个巨大的优势。
4.
Glowroot以快速,干净和简单的APM工具而自豪。 它将允许跟踪捕获缓慢的请求和错误,并且您将能够记录每个用户操作的时间跟踪以及SQL捕获和聚合。 该工具还提供了具有可配置保留的所有数据的历史汇总。
它提供了图表以可视化响应时间细分和响应时间百分位数,其响应式UI允许您从移动设备以及台式机监视应用程序。
建筑
Glowroot体系结构
它是如何工作的?
要开始使用Glowroot,您需要下载并解压缩主安装文件,然后将-javaagent:path / to / glowroot.jar添加到应用程序的JVM参数中。 启动应用程序后,剩下的就是将浏览器指向http:// localhost:4000。
该工具启动并运行后,您将获得连续的性能分析(带有过滤选项),并能够为响应时间百分位数和MBean属性设置警报。 Glowroot为跨多个线程的异步请求提供全面支持,并且支持Tomcat,TomEE,JBoss EAP,Wildfly,Jetty和Glassfish。
灼根的仪表板
底线:如果您想要的是简洁明了的产品,那么毫无疑问,您想在这里查看其他工具来了解Glowroot。
5.
Kamon是一种对反应友好的工具包,是为在JVM之上运行的应用程序而构建的。 更具体地说,它是为使用Typesafe Reactive Platform(使用Scala,Akka,Spray和/或Play!)构建的应用程序制作的,但仍提供对任何其他JVM平台和语言的支持。
建筑
它是如何工作的?
Kamon随所有度量标准记录和跟踪操作API以及可选模块一起作为核心模块分发,这些API为应用程序提供字节码检测和/或报告功能。 换句话说,它提供了一个简单的API,用于记录JVM应用程序的指标和跟踪信息。
Kamon的所有模块都可以通过Maven Central获得,您需要将它们添加为项目的编译依赖项。 包含了您感兴趣的模块后,只需启动Kamon,所有可用的模块将自动启动,您无需显式激活/启动它们。
跟踪模块将允许记录有关在应用程序中执行的功能的数据,而指标模块将允许您控制通过用户代码或其他Kamon模块提供的工具跟踪的实体的注册。 它还具有其他功能,例如过滤,配置仪器工厂和调度指标订阅。
底线:如果您使用多种JVM语言,或者主要是Scala / Akka,并且想要“一种工具来监视所有语言”,Kamon可能是最友好的选择。
现在您已经有了干草堆……
APM工具非常适合为您提供有关应用程序是否已启动并正在运行,或者是否有阻碍该应用程序的信息。 唯一的问题是,一旦找到问题所在的干草堆,您就必须开始四处寻找导致问题的真正原因。
有一个更好的解决方案,而不是在日志文件中进行筛选以尝试查找出哪里出了问题,发生了什么以及可能造成了什么原因。 OverOps不仅会为您提供何时何地的答案,还将向您显示错误发生的原因–在整个调用堆栈中为您提供导致错误的完整源代码和变量状态。 检查一下 。
最后的想法
这些是APM空间中付费工具的一些不错的选择。 但是……有些人可能认为采用开放源代码选项主要是节省几美元的一种方法。 同样重要的是要记住,虽然您无需开具使用该工具的发票,但这并不一定意味着它会更便宜。
开源工具需要付出一定的代价:安装,故障排除以及维护当然都是由您自己的工程师甚至您自己完成的。 更不用说您可能最终会浪费时间寻求对您遇到的特定问题的支持,而社区从未听说过。
我们的2美分是开源可能很棒,但是您还应该牢记其他成本,然后才能做出决定。
您认为我们应该检出其他开源APM工具吗? 在下面的评论中告诉我们有关它们的信息!
翻译自: https://www.javacodegeeks.com/2016/11/java-performance-monitoring-5-open-source-tools-know.html