對于任何嚴肅的應用程序來說,監控都是必不可少的。如果您沒有關于系統狀態的實時信息,您就不能希望運行一個高度可用的系統。在當今時代,放棄這種跨功能需求幾乎是疏忽大意。
監控有許多方面可以通過使用略有不同的工具來涵蓋。其中一些工具專門針對技術方面。一個例子是基礎設施的狀態或在微服務中觀察到的錯誤。這無疑是重要的,但它也不能說明用戶與您的軟件互動的方式。這就是為什么您希望使用從用戶的角度看待您的應用程序的工具來增強您的監控能力。這是一個有價值的觀點,揭示了許多隱藏的問題。在這篇文章中,我想談談合成事務監控。這是一種通過模擬真實用戶的動作來監控系統的方法。
什么是合成交易?
“合成交易”一詞并不是您每天都能聽到的。所以在我們進入監控部分之前,讓我們先談談這個。合成事務是模擬用戶在應用程序中的操作的腳本或工具。
假設我們正在談論一個 Web 應用程序。它可以針對 API 運行。大多數現代應用程序都會公開一些 API,這些 API 很自然地需要檢查。用戶通常不會直接與您的 API 交互,盡管在某些情況下您希望保存來自實際活動的一系列調用。
通常,用戶從真正的瀏覽器訪問您的應用程序。因此,合成事務也必須在此環境中運行。在這種情況下,腳本模擬用戶在瀏覽器中執行的操作。這些動作,從頭到尾,在你的系統中完成一個流程。一種或另一種方式,您希望以一種可以重復運行它們的格式存儲這些操作。然后,您可以在閑暇時再次執行它們。
在合成交易之上監控
正如您可能已經猜到的那樣,綜合監控是關于使用我們剛剛討論的綜合事務來監控您的系統。本質上,您的監控工具會定期運行您從不同位置定義的腳本。然后它會編譯結果并為您匯總數據。
當您使用這種類型的監控時,您需要注意以下幾點:
- 您知道這些交易是否有效。
- 你有歷史。它跟蹤每次運行的時間及其結果。
- 您可以訪問具有詳細粒度的每次運行的時間信息。
與其他監控機制相比,有一個關鍵的區別:監控本身是應用程序中觸發流量的一個。
合成監控非常有用
現在我們知道了這種監控的作用,是時候詢問它的價值了。對你有什么好處?是否值得將此方法納入您的生態系統?
我已經簡要提到了這一點。您從綜合監控中獲得的最重要價值是一個新的視角。鑒于您模擬實際交互,結果接近于用戶體驗您的應用程序的方式,這是一個強大的信號。從業務角度考慮:您的利益相關者可能并不特別關心服務器的內存使用情況,但我敢打賭,他們非常有興趣了解您的結帳流程是否仍然正常運行。
所以這是第一個好處。您確保您的核心流程仍在運行。這聽起來很基本,但您不會相信組織經常不確定他們的應用程序是否有效。
此外,您還可以獲得詳細的性能信息。您的監控系統存儲的所有這些運行都顯示了您的應用程序在實際流程中的運行速度。請記住,性能很重要。
最后,您有機會過渡到基于警報的方法。如果應用程序的核心流程出現故障,那聽起來肯定是您想盡快解決的問題,不是嗎?您可能希望將這些警報連接到您的事件管理軟件,以確保快速通知待命的人。
設置綜合監控
設置此監控會有所不同,具體取決于您選擇的監控工具,盡管它們之間有一些相似之處。如果您監控 API,則需要配置對正確端點的調用以及傳遞適當的標頭和參數。它看起來很像使用Postman。如果您要檢查經過身份驗證的路由,則需要使用例如OAuth2提供憑據。
同時,基于瀏覽器的測試通常使用一個界面,您可以在其中結合多個導航步驟、斷言和其他原語來構建用戶瀏覽您網站的旅程。如果您更喜歡靠近代碼,他們傾向于通過JavaScript支持自定義腳本。
測試和監控之間的模糊界限
我不了解你,但對我來說,這些合成交易聽起來很像端到端測試。測試什么時候結束,什么時候開始監控?
這是一條模糊的線!通過兩個鏡頭看它:
- 就時間而言,測試發生在發布之前和發布之后的監控。
- 就意圖而言,您進行測試以防止錯誤傳遞給您的用戶,并進行監控以盡快發現錯誤。
這是一個很好的心智模型,但是作為一個組織,你越快,就越難將它們區分開來。如果您遵循Accelerate背后的原則,則四個關鍵指標之一是平均恢復時間 (MTTR)。優化該指標需要快速檢測錯誤部署,如果沒有精確可靠的監控,這幾乎是不可能的。
在我看來,隨著你的速度越來越快,兩者最終都會成為同一枚硬幣的不同面。您可以在任何地方運行合成事務,具體取決于它們正在測試或監控的上下文。
綜合監控在綜合監控設置中的位置
綜合監測與其他類型的監測共存。如果您正在徹底監控您的應用程序,那么您的工具帶中有多種監控方式:
- 應用程序性能監控 ( APM )
- 真實用戶監控 ( RUM )
- 基礎設施監控
這個類比并不完美,但我認為它很好地表明了這些測試的位置。
在我看來,合成交易不是觀察基本構建塊的工具。信號中有太多噪聲,無論如何其他工具更充分地實現了這一目的。但是,提供系統的高級概述是這個概念真正閃耀的地方。畢竟,您是在模擬真實用戶的行為,不是嗎?這是您美味的監控蛋糕上的櫻桃!
增強您的監控能力
讓我們回顧一下我們學到的東西。合成事務模擬用戶在應用程序中的操作。我們以這些交易為核心建立監控。我們一遍又一遍地收集這些腳本并收集有關結果及其性能的數據。當您在設置中添加一個非常接近客戶體驗您的應用程序的方式的監控層時,它非常有用。合成只是一件,屬于一個更大的監控生態系統。結合其他監控變體,它們為操作您平臺的人們提供可觀察性和高枕無憂。如果您對此感興趣,投資于監控是構建彈性系統的關鍵。