New Relic 是一个很强大的服务器性能监控工具,New Relic目前专一于SaaS和App性能管理业务,它支持支持agent和API传送数据,可以对部署在本地或在云中的web应用程序进行监控、故障修复、诊断、线程分析以及容量计划。css
New Relic APM将你没有发现的问题暴漏出来,帮助团队减小问题解决的时间,从而集中精力写出更多的代码,而不是一直在停留在故障排除。html
RPM拥有两种基本的组件:做为应用程序插件运行的代理,以及放置在New Relic数据中心中的服务。代理会收集性能数据,每分钟都会经过HTTPS或者HTTP协议异步地发送给RPM服务,New Relic那里会存储并处理这些数据。java
New Relic数据中心会完成如下的工做:数据存储、汇集、修正和可视化。咱们能够经过浏览器访问性能数据。 New Relic不提供在本地运行服务的方案,服务只运行在他们的数据中心上。web
注册一个New Relic帐号(https://newrelic.com/signup)。sql
登陆网站选择APM(Application Performance Management,应用性能管理),选择Get Started,假如已经有了applications,就选择[+Add more],如图:数据库
在这里你还须要一些前置条件才能进行下面的操做:apache
点击按钮就能够看到license_key了。这个license_key每一个newrelic帐号是惟一的,也是Agent能成功发送数据到服务器的关键。c#
我这里是tomcate,因此我解压到我本身的tomcate根目录/usr/local/tomcat/apache-tomcat-7.0.70下浏览器
unzip newrelic-java-3.40.0.zip -d /usr/local/tomcat/apache-tomcat-7.0.70/
切换到/usr/local/tomcat/apache-tomcat-7.0.70/newrelic目录,在目录中找到newrelic.yml配置文件。license_key选项就是第4步得到的key,主要是修改app_name,修改为本身应用名字。tomcat
app_name: Demo APP
cd /usr/local/tomcat/apache-tomcat-7.0.70/newrelic java -jar newrelic.jar install
咱们能够看到以下提示信息:
root@iZ282d1y91zZ:/usr/local/tomcat/apache-tomcat-7.0.70/newrelic# java -jar newrelic.jar install ***** ( ( o)) New Relic Java Agent Installer ***** Installing version 3.40.0 ... * Backed up start script to /usr/local/tomcat/apache-tomcat-7.0.70/bin/catalina.sh.20170721_174419 * Added agent switch to start script /usr/local/tomcat/apache-tomcat-7.0.70/bin/catalina.sh * No need to create New Relic configuration file because: A config file already exists: /usr/local/tomcat/apache-tomcat-7.0.70/newrelic/newrelic.yml ***** Install successful ***** Next steps: You're almost done! To see performance data for your app: 1) Restart your app server 2) Exercise your app 3) Log into http://rpm.newrelic.com Within two minutes, your app should show up, ready to monitor and troubleshoot. If app data doesn't appear, check newrelic/logs/newrelic_agent.log for errors.
出现(***** Install successful)表示安装成功,newrelic/logs/newrelic_agent.log是日志地址。
./catalina.sh stop ./catalina.sh start tail -f logs/newrelic_agent.log
能够看到,Agent已经成功装数据发往newrelic.com的我的帐号。
首先须要关注的是请求的响应时间图表,用这个图表能够对请求在服务器端耗时有个总体印象
从图表上能够看到,在这个时间段,请求的平均耗时是7ms,同时能够看到每一个请求的java代码和数据库执行时间占据了绝大部分,还有少许的外部服务调用时间(好比第3方Oauth或者API)。另外右上角有一个0.771s的浏览器时间,这个是指用户访问网页,从请求发出,到整个页面彻底加载完成(包括图片,css,js等)。
从这里能够看到大部分用户是否满意你的应用响应速度:
从图表能够看到,93%的用户很是满意请求响应时间,100%的用户很是满意页面加载完成的时间。咱们用的指标是NewRelic默认设置的500ms和7s,你还能够本身进行调整。
能够看出在这半个小时的区间,平均每分钟有0.333个请求。用这个图表,经过調整时间段,了解整个应用何时是高峰,何时是低谷,方便将一些批处理,备份等任务放在访问低谷的时间段进行。还有当用户报告没法访问的时候,能够经过查看吞吐量是否有急剧降低,来判断是个例仍是总体故障,来肯定解决问题的优先级。免费版本的NewRelic,只能查看过去24小时的数据,升级到付费账号,能够查看全部的历史数据。
根据请求的时间和请求的次数,列出一个最耗时的请求
咱们能够根据这个排列顺序,来考虑对于访问量大,同时又耗时的请求进行重点性能优化。
点击具体的请求,还能够看到请求耗时的分布状况:
从图表上能够看到这个请求,在forIndex方法上耗费了比较多的时间,另外在DispatcherServlet上也耗费了一些时间。升级到付费版本,还能查看到具体的sql语句执行状况,若是有slow query,还能显示explain的结果。
NewRelic也提供了不少监控的选项,好比ping,内存/存储警报等,能够将报警发送到邮件,或者推送到移动客户端:
对于了解服务器资源和扩容计划颇有帮助。顺便说一个实际遇到的事情,发现过某台主机(咱们用的云主机)的响应时间就是比其余台要慢50%以上,对比发现这台的CPU和Disk IO都比其余台要弱,后来报告给云主机服务商,经过迁移到了新的物理机解决了。
这里就简单介绍一下它免费版本的少许功能,更多的功能留待你们去玩吧。最后还要提一下最喜欢的scalability report和database report,能够申请试用付费账号来体验。
官方文档: https://docs.newrelic.com/docs/apm/new-relic-apm/maintenance/remove-applications-servers
查看日志如图:
等待几分钟(10分钟),看到Application名称变成灰色
删除
完整的安装说明和故障排除文档在:
https://newrelic.com/docs/java/new-relic-for-java
通用的安装指南:
https://newrelic.com/docs/java/java-agent-self-installer
配置参数详解:
https://newrelic.com/docs/java/java-agent-configuration
参考文章: