在
遠端監控基礎知識和故障排除
中,我們**了 windows azure 平台提供的基礎指標、資訊源、工具和指令碼,介紹了有關監控和應用程式執行狀況的基本原則。我們演示了如何利用這些基本原則對在 windows azure 上部署的簡單解決方案(少數幾個計算節點例項,單個 windows azure sql 資料庫例項)進行故障排除。在本文章中,我們將詳述該主題並討論在
windows azure 中的雲服務基礎
專案中實施的遠端監控系統的應用程式執行狀況測量。在本部落格隨附的詳細 wiki 文章中,我們將向您演示如何使用 csf 測量框架,該框架與 windows azure diagnostics (wad) 整合,可為您的應用程式提供統一的執行狀況測量體驗。csf 應用程式中使用的技術的可靠性已在大規模 azure 部署上得到證實。
關於您的應用程式的最佳資訊**是應用程式本身。雖然可以憑藉良好的工具和強大的遠端監控系統更輕鬆地獲取資訊,但如果不首先測量應用程式執行狀況,則根本無法獲取資訊。此外,如果您沒有持續測量所有應用程式元件的執行狀況,則在生產中開始伸縮時不太可能達到運營效率。(故障排除問題變得複雜得多,個人甚至團隊都無法立即解決。)只有持續測量整個應用程式的執行狀況並使用該測量進行遠端監控,才能相對高效輕鬆地大規模提取維護應用程式正常執行所需的資訊。
csf 提供了一些元件,可用於快速測量應用程式執行狀況,並構建乙個有效的遠端監控系統:
· 資料訪問層提供了重試邏輯、並提供專為伸縮而設計的合理重試策略。
· 構建於 nlog 之上的日誌記錄框架
· wad 的可伸縮自定義配置,支援伸縮。
· 將此資訊收集和移動到可查詢的遠端監控系統中的資料管道。
· 運營遠端監控報告的樣本集,可用於監控應用程式
通過採用這些做法及使用所提供的元件和配置,有助於系統進行伸縮,並讓您深入了解如何制定更精確的開發計畫和提高運營效率,從而達到使用的資源更少,客戶滿意度更高的最終目的。這讓您可以提供高品質的使用者體驗,並先於使用者**即將發生的問題。請參閱相應的 wiki 文章,深入了解
不要相信這種感覺。許許多多企業的一些熱門產品或服務都在某些時候無法伸縮,並出現過一次或多次長時間停機。使用者往往很少會長期使用乙個不可靠的系統,他們可能會選擇改用其他系統,也許會使用試圖與您競爭並搶奪市場的創業公司的系統。
當然,有些人可能已經構建了自己的應用程式執行狀況測量框架並實施了許多最佳做法。出於該原因,我們
在 codeplex.com 上提供了將所有遠端監控元件作為源**的完整 csf 應用程式
。在應用程式中實施執行狀況測量時,請注意以下關鍵事項:
· 為大批量(高容量、高延遲、精細資料)和零碎(低容量、低延遲、**值資料)建立分開的通道。
· 對於零碎資訊使用標準 windows azure diagnostics 資訊源(如效能計數器和跟蹤)。
· 記錄對外部服務的所有 api 呼叫,包括上下文、目標位置、方法、計時資訊(延遲)和結果(成功/失敗/重試)。使用大批量日誌記錄通道,以避免因測量資訊過多而導致遠端監控系統崩潰。
· 記錄完整的異常詳細資訊,但請勿使用exception.tostring()
· 寫入表儲存中的資料(效能計數器、事件日誌、跟蹤事件)都寫入到乙個臨時分割槽中, 60秒後再真正上傳到儲存伺服器。試圖寫入過多資料(點**過多,收集間隔過低)會導致分割槽崩潰。確保錯誤突增不會觸發大量試圖插入表儲存的操作,因為這可能會觸發限制事件。
· 使用記秒錶方法收集資料庫和其他服務的響應時間
· 請勿將實時站點資料和遠端監控資訊發布到同乙個儲存帳戶中,而應使用專用的儲存帳戶進行診斷。
· 選擇適當的收集間隔(5 分鐘至 15 分鐘),以減少必須傳輸和分析的資料量,例如,「pt5m」。
· 確保可以在執行時修改日誌記錄配置,而不必強制重置例項。還要驗證配置是否足夠精細,以便能夠記錄系統的具體方面,如資料庫、快取或其他服務。
C 軟體監控外部程式執行狀態
需要外掛程式乙個程式,用於監控另乙個程式執行狀態,一旦檢測到另一程式關閉,就觸發乙個事件做其他處理。引用的類 using system.diagnostics 引入process 類 宣告private process myprocesses 主要處理部分,該段 可放在定時器中迴圈檢測監控的程式是否...
C 軟體監控外部程式執行狀態
需要外掛程式乙個程式,用於監控另乙個程式執行狀態,一旦檢測到另一程式關閉,就觸發乙個事件做其他處理。引用的類 1usingsystem.diagnostics 引入process 類宣告1 privateprocess myprocesses 主要處理部分,該段 可放在定時器中迴圈檢測監控的程式是否...
C 軟體監控外部程式執行狀態
需要外掛程式乙個程式,用於監控另乙個程式執行狀態,一旦檢測到另一程式關閉,就觸發乙個事件做其他處理。引用的類 using system.diagnostics 引入process 類 宣告private process myprocesses 主要處理部分,該段 可放在定時器中迴圈檢測監控的程式是否...