1. 程式人生 > >伺服器效能監控之New Relic 入門教程

伺服器效能監控之New Relic 入門教程

New Relic 是一個很強大的伺服器效能監控工具,New Relic目前專注於SaaS和App效能管理業務,它支援支援agent和API傳送資料,能夠對部署在本地或在雲中的web應用程式進行監控、故障修復、診斷、執行緒分析以及容量計劃。

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

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

簡單工作原理

RPM擁有兩種基本的元件:作為應用程式外掛執行的代理,以及放置在New Relic資料中心中的服務。代理會收集效能資料,每分鐘都會通過HTTPS或者HTTP協議非同步地傳送給RPM服務,New Relic那裡會儲存並處理這些資料。

New Relic資料中心會完成以下的工作:資料儲存、聚集、修正和視覺化。我們可以通過瀏覽器訪問效能資料。 New Relic不提供在本地執行服務的方案,服務只執行在他們的資料中心上。

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

  1. 註冊一個New Relic賬號(

    https://newrelic.com/signup)。

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

  1. 選擇java

在這裡你還需要一些前置條件才能進行下面的操作:

  • 你要伺服器的管理員許可權
  • 你需要配置防火牆允許New Relic 代理訪問網路(傳送資料)。
  • 訪問您的Windows Azure管理門戶。
  1. 獲取自己獨有的license_key,如圖:

點選按鈕就可以看到license_key了。這個license_key每個newrelic賬號是唯一的,也是Agent能成功傳送資料到伺服器的關鍵。

  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,修改成自己應用名字。

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_164db