服務器性能監控之New Relic 入門教程

New Relic 是一個很強大的服務器性能監控工具,New Relic目前專一於SaaS和App性能管理業務,它支持支持agent和API傳送數據,可以對部署在本地或在雲中的web應用程序進行監控、故障修復、診斷、線程分析以及容量計劃。css

New Relic APM將你沒有發現的問題暴漏出來,幫助團隊減小問題解決的時間,從而集中精力寫出更多的代碼,而不是一直在停留在故障排除。html

  • 端對端事務跟蹤:跟蹤一個關鍵事務的性能,這個事務貫穿在整個面向服務應用程序環境。
  • 代碼級的可見性:深刻洞察特定代碼段和SQL語句對性能的影響。
  • 關鍵事務:標記你的最關鍵的事務,當響應時間、調用、錯誤率等這些表現不佳的時候能夠迅速的發現。
  • X光會話:經過展現事務跟蹤長期分析的結果,來得到對一個關鍵事務性能更深刻的瞭解。

簡單工做原理

RPM擁有兩種基本的組件:做爲應用程序插件運行的代理,以及放置在New Relic數據中心中的服務。代理會收集性能數據,每分鐘都會經過HTTPS或者HTTP協議異步地發送給RPM服務,New Relic那裏會存儲並處理這些數據。java

New Relic數據中心會完成如下的工做:數據存儲、彙集、修正和可視化。咱們能夠經過瀏覽器訪問性能數據。 New Relic不提供在本地運行服務的方案,服務只運行在他們的數據中心上。web

安裝 APM(以java監控Tomcate爲例)

  1. 註冊一個New Relic帳號(https://newrelic.com/signup)。sql

  2. 登陸網站選擇APM(Application Performance Management,應用性能管理),選擇Get Started,假如已經有了applications,就選擇[+Add more],如圖:數據庫

  1. 選擇java

在這裏你還須要一些前置條件才能進行下面的操做:apache

  • 你要服務器的管理員權限
  • 你須要配置防火牆容許New Relic 代理訪問網絡(發送數據)。
  • 訪問您的Windows Azure管理門戶。
  1. 獲取本身獨有的license_key,如圖:

點擊按鈕就能夠看到license_key了。這個license_key每一個newrelic帳號是惟一的,也是Agent能成功發送數據到服務器的關鍵。c#

  1. 下載代理

  1. 將下載的文件解壓到應用服務器根目錄

我這裏是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/
  1. 修改配置(能夠不修改直接使用默認的)

切換到/usr/local/tomcat/apache-tomcat-7.0.70/newrelic目錄,在目錄中找到newrelic.yml配置文件。license_key選項就是第4步得到的key,主要是修改app_name,修改爲本身應用名字。tomcat

app_name: Demo APP
  1. 切換到/usr/local/tomcat/apache-tomcat-7.0.70/newrelic 下面運行安裝命令
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是日誌地址。

  1. 重啓tomcate服務,並查看日誌
./catalina.sh stop
./catalina.sh start
tail -f logs/newrelic_agent.log

能夠看到,Agent已經成功裝數據發往newrelic.com的我的帳號。

圖表的簡單說明

Web transactions time(請求的響應時間圖表)

首先須要關注的是請求的響應時間圖表,用這個圖表能夠對請求在服務器端耗時有個總體印象

從圖表上能夠看到,在這個時間段,請求的平均耗時是7ms,同時能夠看到每一個請求的java代碼和數據庫執行時間佔據了絕大部分,還有少許的外部服務調用時間(好比第3方Oauth或者API)。另外右上角有一個0.771s的瀏覽器時間,這個是指用戶訪問網頁,從請求發出,到整個頁面徹底加載完成(包括圖片,css,js等)。

Apdex (Application Performance Index)

從這裏能夠看到大部分用戶是否滿意你的應用響應速度:

從圖表能夠看到,93%的用戶很是滿意請求響應時間,100%的用戶很是滿意頁面加載完成的時間。咱們用的指標是NewRelic默認設置的500ms和7s,你還能夠本身進行調整。

Throughput 吞吐量 (每分鐘的請求數)

能夠看出在這半個小時的區間,平均每分鐘有0.333個請求。用這個圖表,經過調整時間段,瞭解整個應用何時是高峯,何時是低谷,方便將一些批處理,備份等任務放在訪問低谷的時間段進行。還有當用戶報告沒法訪問的時候,能夠經過查看吞吐量是否有急劇降低,來判斷是個例仍是總體故障,來肯定解決問題的優先級。免費版本的NewRelic,只能查看過去24小時的數據,升級到付費賬號,能夠查看全部的歷史數據。

Transactions 最耗時的請求列表

根據請求的時間和請求的次數,列出一個最耗時的請求

咱們能夠根據這個排列順序,來考慮對於訪問量大,同時又耗時的請求進行重點性能優化。

點擊具體的請求,還能夠看到請求耗時的分佈狀況:

從圖表上能夠看到這個請求,在forIndex方法上耗費了比較多的時間,另外在DispatcherServlet上也耗費了一些時間。升級到付費版本,還能查看到具體的sql語句執行狀況,若是有slow query,還能顯示explain的結果。

Error rate 錯誤率

Recent events 最近的事件

NewRelic也提供了不少監控的選項,好比ping,內存/存儲警報等,能夠將報警發送到郵件,或者推送到移動客戶端:

對於瞭解服務器資源和擴容計劃頗有幫助。順便說一個實際遇到的事情,發現過某臺主機(咱們用的雲主機)的響應時間就是比其餘臺要慢50%以上,對比發現這臺的CPU和Disk IO都比其餘臺要弱,後來報告給雲主機服務商,經過遷移到了新的物理機解決了。

應用性能分佈到各個服務器狀態

這裏就簡單介紹一下它免費版本的少許功能,更多的功能留待你們去玩吧。最後還要提一下最喜歡的scalability report和database report,能夠申請試用付費賬號來體驗。

刪除監控實例

官方文檔: https://docs.newrelic.com/docs/apm/new-relic-apm/maintenance/remove-applications-servers

  1. 將newrelic.yml配置文件中agent_enabled改爲false,或者卸載代理
  2. 重啓應用服務器

查看日誌如圖:

  1. 等待幾分鐘(10分鐘),看到Application名稱變成灰色

  2. 刪除

Java Agent官方文檔

完整的安裝說明和故障排除文檔在:

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

參考文章:

https://ruby-china.org/topics/22379

http://blog.sina.com.cn/s/blog_164db169d0102weez.html

相關文章
相關標籤/搜索