从后端到页面:如何全方位监控 Ruby 应用?
【編者按】本文參考技術分享 ,由 OneAPM 工程師補充整理,并且已經征得原作者的同意。
為什么選擇 OneAPM ?
在性能監控領域,業界比較有名的是 New Relic 還有 Appdynamic,不過這兩家公司都在在國外,在國內訪問速度很慢暫且不提,畢竟,國外的東西說不定啥時候就被那個啥了(你懂的),所以筆者一直在等待中國也有類似的產品出來。在國內的話,首先訪問會比較快,而且只有中國人才最懂中國人,做出來的產品也會符合中國用戶的審美和需求。如果這個產品穩定、口碑好、不出問題,那就是很不錯的選擇,國內最早開始深耕應用性能管理行業的 OneAPM 應該就是一個典型的代表。另外,OneAPM 使用起來很簡單,官網有一些教程,按照那教程,只需花費幾分鐘的時間,操作幾個步驟就可以搞定了,筆者使用了 Ruby Insight,裝一個 gem 就能搞定,然后頁面性能監控(Bi)甚至自動起來了,完全避免了手動部署的麻煩。
使用 OneAPM 監控 Ruby 應用
登錄 OneAPM 官網,注冊賬號,進入主頁面,選擇「應用監控」,添加一個應用,選擇「Ruby」那個 tab,里面列出了5個步驟,按照這些步驟就可以設置成功:
第一步是把授權編號復制,這個是要用到的。
第二步是復制 oneapm.yml 文件存放到 config 目錄下。這個是主要的配置文件。剛才復制的授權編號也是要放到這個文件中的。
第三步是把那個 gem 添加到 Gemfile 文件,并進行 bundle install 就好了。
現在主要的問題是第二步,那個配置文件里面的項目名和你建立的應用的項目名的對應。
License_key 就是授權編號,一段字符串,為了保密,筆者是存到配置文件中的。其他的內容都基本沒改,唯一有改的地方就是 app_name,這個名字就是要跟你建立的 OneAPM 應用的名字一致才行。
筆者在線上就有一個 OneAPM 應用就叫 Rails365,把里面的 app_name 替換成 Rails365 就好了。
按照官方教程說的,重新啟動并部署你的項目,試著訪問幾個頁面,稍等片刻,就能很快在 OneAPM 的監控頁面上看到數據了。
或許用 Rails 的 Notifications 結合 Hightcharts 圖表顯示也能實現類似 OneAPM 的效果,至少能得到每個頁面的訪問時間,數據庫語句的執行時間,但是現在有更方便的 OneAPM,我們就可以嘗試去用它。如果要進一步,還可以去研究那個 gem 的源碼,知道它是如何實現的。
OneAPM for Ruby
來簡單說說 Ai Ruby 探針的功能:
安裝好 OneAPM Ruby Agent 之后進入總覽頁面,能夠對 Web 事務響應時間,Apdex 值(滿意度),吞吐量,Web 慢事務,錯誤率,服務器信息,告警事件有個總體了解。
比較中意 Web 事務的功能,可以點進具體事務進行分析。如圖,點進 Web 事務功能后,可以看到響應時間占比最高的事務。
為了分析慢事務原因,點進 articles/index 這個較慢的事務,通過 Breakdown Table 可以看到事務的細分內容。
對數據庫,外部服務也可以進行監控,能監控到 SQL 語句。對 RubyVM 的監控也是有的。
錯誤信息功能也比較有用,不僅可以看到錯誤發生的時間、次數、類型、請求地址,還能看到詳細的堆棧信息,顯示代碼行數。
關于應用監控的各種配置,可以在「應用設置」中自行修改,這一點還是比較靈活易用的。
OneAPM 的網站監控平臺(Browser Insight)
在網站開發完成并且上線之后,隨著業務的完善與增多,訪問網站的人也越來越多,這個時候你就需要維護網站了。不僅僅是業務上的維護,還包括運維,監控等。你可能會監控每天的訪問量有多少,增長了沒,這個時候可以用常用的 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 官方博客。
總結
以上是生活随笔為你收集整理的从后端到页面:如何全方位监控 Ruby 应用?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 模仿腾讯QQ的web登陆面板
- 下一篇: 简单破解 Sencha Architec