【編者按】本文參考技術分享 ,由 OneAPM 工程師補充整理,而且已經徵得原做者的贊成。html
在性能監控領域,業界比較有名的是 New Relic 還有 Appdynamic,不過這兩家公司都在在國外,在國內訪問速度很慢暫且不提,畢竟,國外的東西說不定啥時候就被那個啥了(你懂的),因此筆者一直在等待中國也有相似的產品出來。在國內的話,首先訪問會比較快,並且只有中國人才最懂中國人,作出來的產品也會符合中國用戶的審美和需求。若是這個產品穩定、口碑好、不出問題,那就是很不錯的選擇,國內最先開始深耕應用性能管理行業的 OneAPM 應該就是一個典型的表明。另外,OneAPM 使用起來很簡單,官網有一些教程,按照那教程,只需花費幾分鐘的時間,操做幾個步驟就能夠搞定了,筆者使用了 Ruby Insight,裝一個 gem 就能搞定,而後頁面性能監控(Bi)甚至自動起來了,徹底避免了手動部署的麻煩。前端
登陸 OneAPM 官網,註冊帳號,進入主頁面,選擇「應用監控」,添加一個應用,選擇「Ruby」那個 tab,裏面列出了5個步驟,按照這些步驟就能夠設置成功:數據庫
第一步是把受權編號複製,這個是要用到的。後端
第二步是複製 oneapm.yml 文件存放到 config 目錄下。這個是主要的配置文件。剛纔複製的受權編號也是要放到這個文件中的。瀏覽器
第三步是把那個 gem 添加到 Gemfile 文件,並進行 bundle install 就行了。ruby
如今主要的問題是第二步,那個配置文件裏面的項目名和你創建的應用的項目名的對應。服務器
License_key 就是受權編號,一段字符串,爲了保密,筆者是存到配置文件中的。其餘的內容都基本沒改,惟一有改的地方就是 app_name,這個名字就是要跟你創建的 OneAPM 應用的名字一致才行。網絡
筆者在線上就有一個 OneAPM 應用就叫 Rails365,把裏面的 app_name 替換成 Rails365 就行了。app
按照官方教程說的,從新啓動並部署你的項目,試着訪問幾個頁面,稍等片刻,就能很快在 OneAPM 的監控頁面上看到數據了。運維
或許用 Rails 的 Notifications 結合 Hightcharts 圖表顯示也能實現相似 OneAPM 的效果,至少能獲得每一個頁面的訪問時間,數據庫語句的執行時間,可是如今有更方便的 OneAPM,咱們就能夠嘗試去用它。若是要進一步,還能夠去研究那個 gem 的源碼,知道它是如何實現的。
來簡單說說 Ai Ruby 探針的功能:
安裝好 OneAPM Ruby Agent 以後進入總覽頁面,可以對 Web 事務響應時間,Apdex 值(滿意度),吞吐量,Web 慢事務,錯誤率,服務器信息,告警事件有個整體瞭解。 比較中意 Web 事務的功能,能夠點進具體事務進行分析。如圖,點進 Web 事務功能後,能夠看到響應時間佔比最高的事務。
爲了分析慢事務緣由,點進 articles/index 這個較慢的事務,經過 Breakdown Table 能夠看到事務的細份內容。
對數據庫,外部服務也能夠進行監控,能監控到 SQL 語句。對 RubyVM 的監控也是有的。
錯誤信息功能也比較有用,不只能夠看到錯誤發生的時間、次數、類型、請求地址,還能看到詳細的堆棧信息,顯示代碼行數。
關於應用監控的各類配置,能夠在「應用設置」中自行修改,這一點仍是比較靈活易用的。
在網站開發完成而且上線以後,隨着業務的完善與增多,訪問網站的人也愈來愈多,這個時候你就須要維護網站了。不只僅是業務上的維護,還包括運維,監控等。你可能會監控天天的訪問量有多少,增加了沒,這個時候能夠用經常使用的 Google Analyse,百度統計,站長工具等來完成。不過,這些工具主要統計瀏覽量,來源分析等,進而幫助公司運營人員的決策,營銷推廣,但是,網站的訪問量上來以後,一定會遇到性能瓶頸。這個時候就須要找出那些低性能代碼或影響頁面加載等問題的來源,頁面性能監控軟件就變得尤其重要了。經過觀察每一個頁面的訪問時間來查看哪些頁面甚至哪些代碼是有問題或者能夠優化的,OneAPM 的 Browser Insight(Bi)就是解決這個事情的。它能幫助網站進行性能監控,包括頁面的響應時間、AJAX 錯誤、腳本錯誤等。
(一)總覽頁面
下圖是總覽頁面,因爲屏幅的問題沒有截取全。在 Bi 的總覽頁面咱們能夠看到該功能的大概顯示,包括響應時間、Web 事務、頁面 Trace 以及分地域的頁面加載時間等,讓研發或者運維對監控的頁面有一個大概的瞭解。
從左邊的功能列表能夠看到, OneAPM 的 Bi 主要是從受訪頁面、AJAX、腳本錯誤、瀏覽器、地理和運營商這幾個維度來監控分析前端頁面的。
(二)受訪頁面
下圖是受訪頁面的功能頁面,能夠看到,不但從 5 個維度分解了加載時間,並且還有加載時間的排序,甚至有慢加載追蹤,能夠比較詳細的定位到各類資源加載。
還有一個值得說下的是受訪頁面的這幾個加載時間的維度的區分,OneAPM 作的比較有本身的特色,在總覽頁面有對於幾個時間的具體分析註釋。
(三)AJAX、頁面錯誤
這兩個維度分別從 AJAX 和 HTTPS 角度來分析監控頁面的錯誤或者時間緩慢的調用頁面,雖然維度不同可是界面比較類似,就不給你們一一列舉了,簡單看一下界面就行了。
(四)瀏覽器、運營商、地理
這三個功能應該算是 OneAPM 的 Bi 的另一個核心功能點了,瀏覽器能夠按照將訪問頁面的瀏覽器一一識別出來,方便研發或者運維人員有針對性的優化頁面。
地理界面能夠從國內還有國外兩個維度查看訪問被監控頁面的響應時間等,國內的還能夠深刻到地級市的使用加載狀況。
運營商界面是針對於網絡運營商的監控,能夠看到各個運營商所提供的網速的狀況,並且還能夠區分網絡制式,作的確實很精細了。
##總結
或許經過其餘工具例如 Rails 的 Notifications 結合 Hightcharts 圖表也能有相似的效果,可是 OneAPM 確實很方便實用的達到了性能監控分析的這一目的。從國內來說,OneAPM 確實是性能監控方面比較靠得住的廠家,你們能夠免費註冊試用一下。
OneAPM for Ruby 可以深刻到全部 Ruby 應用內部完成應用性能管理和監控,包括代碼級別性能問題的可見性、性能瓶頸的快速識別與追溯、真實用戶體驗監控、服務器監控和端到端的應用性能管理。想閱讀更多技術文章,請訪問 OneAPM 官方博客。