Java性能监控:您应该了解的5个开源工具

鲜为人知但有用:开源应用程序性能监视的状态

对于任何应用程序来说,最重要的事情之一就是性能。 我们要确保用户获得他们能获得的最佳体验,并且要知道我们的应用已启动并正在运行。 这就是为什么我们大多数人至少使用一种监视工具的原因。

如果您正在性能监控市场中寻找与众不同的东西,则可以选择一种开源工具。 在下面的文章中,我们收集了一些开源的APM工具,这些工具现在可以作为付费工具的替代品,因此您将能够看到它是否是您的正确选择。

开源

APM市场是一个拥挤的市场。 您拥有知名度很高的名字,例如New Relic,AppDynamics(请参阅此帖子以获取有关它们的概述),以及Dynatrace(我们在之前的文章中进行了比较),以及一些较小或鲜为人知的工具。 由于游戏中有很多玩家,而且他们都知道监视您的应用程序的价值,因此他们自己保留了代码。

但是,市场上还有另一种选择:开源工具。 如果您对一种简单的方法感兴趣,以便在生产中获得应用程序的可见性,并且想知道如何实际监控代码,则这些工具是一个不错的选择。

开源社区中也有一些关键的APM工具,每种工具都有其自己的产品和可能性。 如果您感兴趣,并且想确切地了解APM为您准备了什么开源产品,那么我们介绍了可用于您的前5种工具:

  • 舞台监控器
  • 查明
  • 莫斯基托
  • 焕根
  • 加蒙

1.

Stagemonitor提供了一个Java监视代理程序,该代理程序是在考虑群集应用程序堆栈的情况下构建的。 这意味着它旨在监视在多个服务器上运行的应用程序。 该工具与时间序列数据库(TSDB)集成在一起。 该工具针对处理时间序列数据以及按时间索引的数字数组进行了优化。 这些数据库包括Elasticsearch,Graphite和InfluxDB。

建筑

舞台监视器拱

它是如何工作的?

Stagemonitor包含一个位于Java应用程序中的代理,该代理将指标和请求跟踪发送到中央数据库。 该工具只需要一个实例即可监视所有应用程序,实例和主机,并且可以在您自己的数据中心内部署。

在监视方面,您可以从群集或直接从开发人员服务器查看历史或实时数据,创建自定义警报并为每个指标定义阈值。
Stagemonitor包含一个仪表板,因此您可以可视化和分析您感兴趣的不同指标和请求。您可以创建自定义仪表板,编写自定义插件,甚至使用第三方插件。 它提供了不需要后端的浏览器内窗口小部件,该窗口小部件会自动注入到受监视的网页中。 您可以在以下链接中观看实时演示。

在官方文档中,Stagemonitor声明它也为非基于servlet的应用程序提供支持,您可以在此处查看全部要求 。

舞台监视器-1024x620

Stagemonitor的小部件指标

底线:如果您已经熟悉ELK堆栈,那么绝对值得一试快速测试。

2.

Pinpoint是专为大规模分布式系统设计的APM工具。 它以Google建立的分布式系统跟踪基础结构Dapper为模型,为开发人员提供了有关复杂分布式系统行为的更多信息。

建筑

精确拱门

它是如何工作的?

该工具通过跟踪分布式应用程序之间的事务,有助于分析系统的整体结构以及其中的组件如何互连。 这意味着它旨在解释如何执行每个事务,跟踪组件之间的流程并(提前开个玩笑)查明问题区域和潜在瓶颈。

仪表板有助于可视化组件的连接方式,并允许您实时监视应用程序内部的活动线程。 Pinpoint还使您可以查看请求计数和响应模式,从而能够识别潜在问题。 您可以查看关键细节,包括CPU使用率,内存/垃圾收集和JVM参数。

Pinpoint可以与已安装的代理一起工作,而无需更改任何代码,并且您可以通过为每个组件运行四个简单脚本(包括Collector,Web,Sample TestApp和HBase)在自己的计算机上运行示例实例。

精确1024x629

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-1024x406

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-300x2502x

它是如何工作的?

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/351365.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【BZOJ1069】【SCOI2007】—最大土地面积(凸包+旋转卡壳)

传送门 考虑枚举任意222个点&#xff0c;那么只需要枚举第二个点的时候旋转卡壳就可以O(n)O(n)O(n)得到最远点对了 #include<bits/stdc.h> using namespace std; inline int read(){char chgetchar();int res0,f1;while(!isdigit(ch)){if(ch-)f-f;chgetchar();}while(isd…

如何在vs2010中修改栈的大小

上次运行程序的时候提示栈溢出&#xff0c;oh,my god 程序栈空间不够用了&#xff0c;没关系&#xff0c;可以设置栈的大小&#xff0c;默认是1MB。 选择 项目->属性->链接器->系统->堆栈保留大小,然后输入你想要的栈大小即可。

android第三方登录appid,AndroidQQ第三方登录

集成QQ登录在lib导入该open_sdk_r5886_lite.jar包AndroidManifest.xmlandroid:name"com.tencent.tauth.AuthActivity"android:launchMode"singleTask"android:noHistory"true" >android:theme"android:style/Theme.Translucent.NoTitleB…

Java数组、集合的三种遍历方式(包懂)

1 for循环 for(int i 0;i<arr.length;i){System.out.print(arr[i]" "); } 2 foreach循环&#xff0c;这种方式结构简单&#xff0c;可以简化代码 for(int i:arr){System.out.print(arr[i]" "); } 3 迭代器遍历 对于数组而言&#xff0c;就没必要转换为…

你应当如何学习C++(以及编程)(rev#1)

你应当如何学习C(以及编程)(rev#1) By 刘未鹏(pongba) C的罗浮宫(http://blog.csdn.net/pongba) JavaScript是世界上最受误解的语言&#xff0c;其实C何尝不是。坊间流传的错误的C学习方法一抓就是一大把。我自己在学习C的过程中也走了许多弯路&#xff0c;浪费了不少时间。 为…

android 悬浮窗口和主界面同时显示,Android 悬浮窗口(及解决6.0以上无法显示问题)...

思路实现通过WindowManager添加一个View&#xff0c;创建一个系统顶级的窗口&#xff0c;实现悬浮窗口的效果。本篇思路&#xff0c;来源于郭霖大神的悬浮窗口教程。大致介绍WindowManager 类创建的对象&#xff1a;Context.getSystemService(Context.WINDOW_SERVICE)常用API:a…

谷歌guava_Google Guava BloomFilter

谷歌guava当Guava项目发布版本11.0时&#xff0c;新添加的功能之一是BloomFilter类。 BloomFilter是唯一的数据结构&#xff0c;用于指示元素是否包含在集合中。 使BloomFilter有趣的是&#xff0c;它将指示元素是否绝对不包含或可能包含在集合中。 永远不会出现假阴性的特性使…

CMDB学习之三数据采集

判断系统因为是公用的方法&#xff0c;所有要写基类方法使用&#xff0c;首先在插件中创建一个基类 将插件文件继承基类 思路是创建基类使用handler.cmd ,命令去获取系统信息&#xff0c;然后进行判断&#xff0c;然后去执行 磁盘 &#xff0c;cpu&#xff0c;网卡&#xff0c;…

linux下挂载iso镜像的方法

新建目录/mnt/cdrom 执行命令 mount /dev/cdrom /mnt/cdrom 12[rootocdp1 cdrom]# mount /dev/cdrom /mnt/cdrommount: /dev/sr0 写保护&#xff0c;将以只读方式挂载进入/mnt/cdrom文件夹下发现里面是空的&#xff0c;说明挂载失败。 现在很多发行版中&#xff0c;光驱都不是/…

android onitemclicklistener 参数,android – OnItemClickListener从模型中获取数据

我是Android开发的新手,我正在尝试构建一个ListView,它使用gson从Web服务获取数据.我有一个模型类,一个列表类,一个适配器类和活动类.该列表工作正常,它获得了数据,现在我想将OnItemClickListener集成到它并将数据传递给第二个活动.我想得到项ID(DistrictId)并将其传递给下一个…

Java 8:对速度3.0.1“森林”流ORM的更深入了解

沿着这条路 我一直在为开源项目Speedment &#xff08;它是Stream ORM Java Toolkit和Runtime&#xff09;做出贡献&#xff0c;并且刚刚发布了一个新的主要版本3.0.1“ Forest”。 版本的发布以加利福尼亚州帕洛阿尔托的大街小巷命名&#xff0c;大多数贡献者都在这里工作。 沿…

读《人月神话》有感

翻开《人月神话》这本书&#xff0c;我感觉看这本与我们学的相关的书不相似&#xff0c;书中用了很多的形象的比喻&#xff0c;来阐述项目管理中的一些问题&#xff0c;让人以很轻松愉悦心态去阅读。书开始就形象有有趣的把软件危机比作&#xff1a;焦油坑。让我感觉到&#xf…

android 弹窗in,Android监听程序处于INACTIVITY(未操作状态)时间并作出相应的操作

最近遇到一个需求&#xff0c;app五分钟未操作需要返回到主页面。一开始就想到去监听onTouch和onClick事件&#xff0c;这个方法看似可行&#xff0c;但是实际操作起来还是很繁琐的&#xff0c;一不小心就达不到需要的效果。然后就果断放弃了。后来看api发现activity中有一个叫…

用gdb调试nasm汇编程序

对于一个程序员来说&#xff0c;调试是很重要的&#xff0c;可以节约找到bug的时间&#xff0c;不过以前在linux下一直是对c进行调试的&#xff0c;今天突然要对汇编进行调试还真不知道怎么调&#xff0c;特别是对linux下调试汇编程序基本没搞过。记得以前上课学masm时&#xf…

android 防腾讯新闻标题栏,仿腾讯视频android客户端上方的标题栏

如图&#xff0c;上方的导航栏是不是很酷&#xff0c;首先它本身是可以滑动的&#xff0c;然后右侧有一个可以查看所有Tab的按钮&#xff0c;然后他和下方的ViewPager还是联动的&#xff0c;可以通过点击它切换ViewPager&#xff0c;并且ViewPager滑动&#xff0c;它也会随着改…

链接克隆 完整克隆_深入克隆

链接克隆 完整克隆在继续克隆概念之前&#xff0c;让我们用对象创建概念刷新基础知识。 使用new运算符创建对象时&#xff0c;对象将在堆中获取内存分配。 堆中的对象创建 在Java中&#xff0c;理想情况下仅通过引用变量修改对象&#xff0c;即仅复制对象的内存地址&#xff…

linux系统调用和库函数调用的区别

Linux下对文件操作有两种方式&#xff1a;系统调用&#xff08;system call&#xff09;和库函数调用&#xff08;Library functions&#xff09;。可以参考《Linux程序设计》&#xff08;英文原版为《Beginning Linux Programming》&#xff0c;作者是Neil Matthew和Richard S…

如果您在2016年编写过Java代码-这是您不容错过的趋势

2016年最有趣的Java相关主题 关于代码&#xff0c;有很多热门话题&#xff0c;而要跟上所有事情&#xff0c;这是一项全职的工作。 如果您想知道如何从谷壳中分离出小麦&#xff0c;我们已经为您完成了工作。 在下面的文章中&#xff0c;我们将介绍2016年最热门的内容&#x…

第三届蓝桥杯省赛---第39级台阶

第39级台阶 小明刚刚看完电影《第39级台阶》&#xff0c;离开电影院的时候&#xff0c;他数了数礼堂前的台阶数&#xff0c;恰好是39级! 站在台阶前&#xff0c;他突然又想着一个问题&#xff1a; 如果我每一步只能迈上1个或2个台阶。先迈左脚&#xff0c;然后左右交替&#xf…

android 视图覆盖,如何在Android中添加覆盖视图超过其他视图?

设为背景&#xff01;只是开玩笑…你需要的是把你的意见放在一个RelativeLayout里.会有什么工作&#xff1a;xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"fill_parent"android:layout_height"fill_parent"&…