python應用效能監控工具簡介
監控簡介
監視工具捕獲,分析和顯示Web應用程式執行資訊。每個應用程式在Web堆疊的所有層都可能出現問題。監控工具通過展示幫助開發人員和運營團隊響應並修復問題。
捕獲和分析有關生產環境的資料對於主動處理Web應用程式的穩定性,效能和錯誤至關重要。
監視和日誌記錄的目的非常相似,它們有助於診斷應用程式的問題並幫助除錯。主要差異為日誌基於事件觸發,而監視是被動的背景資料集合。
例如發生錯誤時,通過異常處理程式中的程式碼顯式記錄該事件。同時,監視代理程式對程式碼進行檢測,並且不僅收集有關已記錄異常的資料,還收集有關函式和方法效能的資料。
作業系統和網路的監控關注: CPU、記憶體和磁碟利用率,網路頻寬和延遲
應用程式級別監視包含幾個方面。 基於應用程式是重讀,重寫還是受到快速波動的影響而有所不同。涉及應用程式警告和錯誤(500級HTTP錯誤)、應用程式碼效能、模板渲染時間、瀏覽器渲染應用程式的時間、資料庫查詢效能等。
開源監控專案
錯誤跟蹤
- ofollow,noindex">Sentry
最初只是一個Python監控專案,但現在可以用於任何程式語言。
度量
是一個node.js網路守護程式,它監聽指標並聚合它們以便轉移到另一服務(如Graphite)。
儲存時間序列資料,並通過Django Web應用程式在圖形中顯示它們。
是一個用Ruby編寫的開源監控框架,但適用於任何程式語言Web應用程式。
Vimeo的Graph Explorer是一個基於Graphite的儀表板,具有附加功能和平滑的設計。
基於客戶端外掛的監控系統,可以將監控流量傳送到Munin節點,在那裡可以分析和視覺化資料。請注意,此專案是用Perl編寫的,因此必須在收集資料的節點上安裝Perl 5。
使用者監控
測量來自終端使用者瀏覽器的Web應用程式的效能,並將該資料傳送回伺服器以進行收集。
第三方監控服務
第三方監控軟體沒有部署和操作軟體的負擔。但是,託管監控成本不低,應用程式資料有危險,因此這些服務並不適合每個專案。
錯誤跟蹤
用於伺服器端和客戶端,用於捕獲和報告異常。 pyrollbar程式碼庫為Python Web應用程式提供了快速整合。還有一些常見Web框架的具體說明,例如Django和Pyramid。
Sentry是開源工具的託管版本,用於貨幣化並支援進一步開發。
應用程式效能監控(APM)
New Relic提供應用程式和資料庫監控以及用於捕獲和分析堆疊中其他devleoper工具(如Twilio)的資料的外掛。
Opbeat專為django而建。 Opbeat將效能指標,釋出跟蹤和錯誤記錄結合到一個簡單的服務中。
Scout監控Django和Flask應用程式的效能,自動檢測檢視,SQL查詢,模板等。
狀態頁面
Status.io側重於Web應用程式的正常執行時間和響應指標透明度。
StatusPage.io(是的,既有Status又有StatusPage.io)提供了簡單的設定狀態頁面,用於監控應用程式的執行時間。
事件管理
如果應用程式存在穩定性,效能或正常執行時間問題,PagerDuty會向指定人員或組發出警報。
監控資源
如何將託管監控新增到Flask Web應用程式以及如何監控瓶子Web應用程式是一系列文章,介紹如何將託管監控新增到使用任何主要Python Web框架構建的Python Web應用程式。
監督的美德
使用collectd,Graphite和Docker輕鬆監控
StatsD / Graphite Monitoring實用指南是一個詳細的指南,其中包含用於監控基礎架構的程式碼示例。
Bit.ly描述了超出磁碟和記憶體使用等標準指標的“他們忘記監控的10件事”。
四個Linux伺服器監控工具
如何設計有用的監控和圖形視覺化
5年的指標和監控是一個很好的演示,突出了視覺化,因此人類可以理解測量是一個難題。線圖通常不是最佳解決方案,而且它們被過度使用。
Collector Highlight Series有一篇關於StatsD的文章,解釋瞭如何安裝它以及它是如何工作的。
這項關於監控工具的調查有一些關於開發人員和運營人員在其環境中使用的資料和圖表。
Ryan Frantz寫了一篇關於解決監控的好文章,其中新的定義是基於當今複雜系統的監控手段,以及該實踐應如何發展。
監控學習清單
檢視下面的軟體即服務和開源監控工具。第三方服務往往更容易設定和託管資料。開源專案為您提供了更多控制權,但您需要為監控準備其他伺服器。
我的建議是在試用期內安裝New Relic的免費選項,以瞭解它如何與您的應用配合使用。它將使您對應用程式級監視工具的功能有所瞭解。
作為您的應用程式比例,請檢視如何使用Graphite設定其中一個開源監視專案,例如StatsD。這兩個專案的組合將為您提供對您正在收集和視覺化的系統指標的細粒度控制。