實施外部工具可以定期通過暴露終端通路應用程式中的功能檢查。這個模式可以幫助驗證的應用和服務被正确執行
它是很好的做法,并且通常是一個業務需求,并監控web應用程式,和中間層和共享服務,以確定它們是可用的,并執行正确的。然而,它更難以監測在雲中運作比它要監控本地服務的服務。舉例來說,你不必完全控制主機環境,而服務通常依賴于平台,供應商和其他公司提供其他服務。
也有一些影響雲托管的應用,如網絡延遲,性能和下面的計算和存儲系統的可用性,以及它們之間的網絡帶寬的因素很多。由于任何這些因素的服務可能完全或部分失敗。是以,您必須定期驗證服務正在執行正确,以確定可用性,這可能是您的服務級别協定(SLA)的一部分所要求的水準。
通過将請求發送到應用程式的端點實施健康監測。該應用程式應該執行必要的檢查,并傳回其狀态的訓示。
一種保健監測檢查通常結合了兩個因素:檢查(如果有的話)的應用程式或服務響應于所述請求發送到健康驗證端點執行,并且結果由工具或架構正在執行健康檢查驗證的分析。的響應代碼表示的應用程式的狀态和任選的任何元件或服務,它使用。的延遲或響應時間檢查由監測工具或架構進行。圖1示出了該模式的執行的概述。

圖1 - 模式概述
附加的檢查,可能如下進行:在該應用程式的運作狀況監視代碼包括:
•檢查雲存儲或可用性和響應時間的資料庫。
•檢查位于所述應用程式内,或位于其它地方,但應用程式使用的其他資源或服務。
幾個現有的服務和工具可用于監視web應用程式通過送出一個請求到一組可配置的端點,并評價針對一組可配置的規則的結果。它相對容易地建立一個服務端點,其唯一的目的是要在系統上執行一些功能測試。
這可以通過監控工具來執行典型的檢查包括:
•驗證的響應代碼。例如,200的HTTP響應(OK)的訓示應用程式作出反應而不會出現錯誤。該監控系統也可能會檢查是否有其他響應代碼,給出的結果更全面的名額。
•檢查響應的内容,以檢測錯誤,甚至當傳回200(OK)的狀态碼。這可以檢測到影響傳回的網頁或服務響應的僅有部分的錯誤。例如,檢查一個頁面的标題或尋找某個特定的詞組,表示正确的頁面被退回。
•測量響應時間,這表明網絡延遲和應用程式把執行請求的時間相結合。增加的值可以訓示一個新興的問題與該應用程式或網絡。
•檢查資源或位于該應用程式之外的服務,如由應用程式使用,以從全局高速緩存傳遞内容的内容分發網絡。
•檢查SSL證書過期。
•測量用于該應用程式的URL的DNS查詢的響應時間,以便測量的DNS延遲和DNS故障。
•驗證傳回的DNS查詢,以確定正确輸入的URL。這有助于通過在DNS伺服器上成功的攻擊,以避免惡意請求的重定向。
它也是有用的,在可能情況下,以内部部署和托管的位置運作,從這些不同的檢查,以測量和來自不同地方比較的響應時間。理想情況下,你應該監視那些貼近客戶,以得到每個位置的性能進行精确的視圖位置的應用程式。除了提供一個更為堅固的檢查機制,其結果可能會影響部署位置的選擇的應用程式,以及是否在一個以上的資料中心部署。
試驗還應該對所有客戶使用,以確定應用程式正常工作的所有顧客的服務執行個體運作。例如,如果客戶的存儲空間分布在多個存儲賬戶,在監測過程中,必須檢查所有的這些。
在決定如何實作這個模式時,請考慮以下幾點:
•如何驗證響應。例如,僅僅是一個200(OK)狀态碼足以驗證應用程式是否工作正常?雖然這提供了應用程式的可用性的最基本的措施,而且是最小執行這個模式中,它提供了有關操作,趨勢,并在應用中可能即将出現的問題的資訊很少。
Note:
確定應用程式不會正确地當目标資源是發現和處理僅傳回200狀态碼。在某些情況下,使用母版頁來承載目标網頁的時候,例如,伺服器可能會傳回一個200
OK狀态碼,而不是一個404未找到的代碼,即使沒有找到目标内容頁面。
•端點的數量,以暴露于一個應用程式。一種方法是将暴露的至少一個端點的應用程式所使用的核心服務,而另一個用于輔助或低優先級的服務,使得不同級别的重要性将被配置設定給每個監控結果。也可以考慮暴露多個端點,如為每個核心服務,以提供額外的監控粒度。舉例來說,一個健康的驗證檢查可以檢查資料庫,存儲和應用程式使用外部地理編碼服務;每個都需要不同級别的正常運作時間和響應時間。應用程式可能仍然是健康的,如果地理編碼服務,或其他一些背景任務,是幾分鐘不可用。
•是否使用相同的終點監測作為用于一般通路,而是設計為健康驗證檢查一個特定的路徑;例如,/健康檢查/{GUID}/對一般接入端點。這允許應用程式内的某些功能測試由監測工具,例如添加新的使用者注冊,登入,以及将一個測試的順序被執行,同時也證明,一般接入終端是可用的。
•收集在服務響應于監控請求,以及如何傳回該資訊的資訊類型。大多數現有的工具和架構隻看該HTTP狀态代碼端點的回報。要恢複和驗證其他資訊,可能需要建立一個自定義監控實用程式或服務。
•多少資訊收集。在檢查過程中進行過度處理可以重載應用和影響其他使用者,并且所花費的時間可能超過監控系統的逾時,使得它标志着該應用程式為不可用。大多數的應用包括儀表,如錯誤處理程式,并且記錄性能和詳細的錯誤資訊的性能計數器,這可能是足夠的,而不是從一個健康驗證檢查傳回的附加資訊。
•如何配置安全監控端點保護他們免受公衆使用;這可能暴露該應用程式的惡意攻擊,風險敏感資訊的曝光,還是吸引拒絕服務(DoS)攻擊。典型地,這應該在應用程式的配置來完成,以便它可以容易地更新,而無需重新啟動該應用程式。可以考慮使用以下一種或多種技術:通過要求認證◦Secure端點。這可以通過使用在請求報頭中的身份驗證的安全密鑰或通過傳遞憑證與請求來實作,條件是,監控服務或工具支援認證。
◦Use一個不起眼的或隐藏的端點。例如,暴露在端點上一個不同的IP位址,以所使用的預設的應用程式的URL,一個非标準的HTTP端口上配置端點,和/或使用複雜的路徑測試頁。它通常可以指定在應用程式配置額外的端點位址和端口,并為這些端點的DNS伺服器(如果需要),以避免直接指定IP位址添加條目。
◦Expose上接受一個參數的端點的方法,諸如鍵的值或操作模式的值。根據不同的請求時收到的代碼可以執行特定測試或一組測試,或者傳回一個404這個參數提供的值(未找到)錯誤,如果不能被識别的參數值。所識别的參數值可以在該應用程式的配置進行設定。
DoS攻擊是可能對一個單獨的端點,它執行基本功能測試,而不會影響應用程式的動作的影響較小。理想情況下,應避免使用測試可能暴露敏感資訊。如果你必須傳回,可能是對攻擊者有用的資訊,考慮如何将保護端點免受未經授權的通路資料。在這種情況下,僅僅依靠默默無聞是不夠的。還應該考慮使用HTTPS連接配接和加密的任何敏感資料,盡管這會增加伺服器上的負載。
•如何通路正在使用認證固定的端點。不是所有的工具和架構可被配置為包括與健康驗證請求的憑證。例如,微軟的Azure内置健康驗證功能無法提供身份驗證憑據。一些第三方的替代品,可以是Pingdom的,Panopta,NewRelic的,和Statuscake。
•如何確定監控代理是否正确地履行。一種方法是,以暴露一個端點僅傳回來自應用程式的配置或可被用來測試劑的随機值的值。
還要確定監控系統進行自身檢查,如自檢和内置的測試,以避免它在發出假陽性結果。
這種模式非常适合于:
•監控網站和Web應用程式,以驗證可用性。
•監控網站和Web應用程式,以檢查其是否工作正常。
•監控中間層或共享服務來檢測和隔離故障,可能影響其他應用程式。
•要在應用程式中補充現有的儀器,如性能計數器和錯誤處理程式。衛生檢驗檢查并不能取代的日志和審計中的應用程式的需求。儀表能夠提供有價值的資訊為現有的架構,監視計數器和錯誤日志來檢測故障或其他問題。然而,它不能提供的資訊,如果該應用程式是不可用的。
下面的代碼示例,從HealthCheckController類的HealthEndpointMonitoring.Web項目采取包括可以下載下傳本指南的樣品,示範露出一個端點進行一系列健康檢查。
該CoreServices方法,如下所示,執行在應用程式中使用的服務的一系列檢查。如果所有的測試中沒有錯誤執行,該方法傳回一個200(OK)狀态碼。如果有任何的測試引發了異常,該方法傳回一個500(内部錯誤)狀态碼。當發生錯誤時的方法,可任選地傳回附加資訊,如果該監控工具或架構能夠利用它。
該ObscurePath方法顯示了如何讀取應用程式配置的路徑,并用它作為測試端點。這個例子也說明了如何接受一個ID作為參數,并用它來檢查有效的請求。
該TestResponseFromConfig方法顯示了如何可以公開執行一個指定的配置設定值檢查的端點。
在Azure應用程式監控終端的一些選項包括:
•使用微軟的Azure,的内置功能,如管理服務或流量管理器。
•使用第三方服務或Microsoft系統中心操作管理器的架構等。
•建立一個自定義的工具,或者在您自己的或托管的伺服器上運作的服務。
注意:
盡管Azure提供一個合理的全面的監控選項,您可以決定使用額外的服務和工具,以提供額外的資訊。
Azure管理服務提供了各地的警報規則建立了一個全面的内置監控機制。管理服務網頁中的Azure管理門戶Alerts部分,可以配置高達每認購10警報規則為您服務。這些規則指定一條件和用于服務諸如CPU負載的門檻值,或每秒請求或錯誤的數量,并且該服務可以自動發送電子郵件通知給你在每個規則定義的位址。
您可以監視具體費用取決于您選擇适合您的應用程式的托管機制的條件下(如網站,雲服務,虛拟機,或移動服務),但所有這些,包括建立使用網絡端點警報規則的能力您在為您服務的設定指定。此端點應該及時地作出反應,以使警報系統可以檢測到該應用程式是否正常運作。
有關建立監視警報的詳細資訊,請參閱MSDN上的管理服務。
如果你的主機在Azure雲服務網絡和工作角色或虛拟機應用程式時,您可以采取的内置服務在Azure中所謂的流量管理器中的一個優勢。流量管理器是一個路由和負載平衡服務,可以将請求分發到您的雲服務托管的應用程式基于一系列的規則和設定的具體執行個體。
除了請求路由,流量管理坪的URL,端口和相對你定期指定的路徑來确定其規則中定義的應用程式的執行個體是活動的,并響應請求。如果它檢測到一個狀态代碼200(OK)它标志着應用程式可用,其他狀态的代碼會導緻流量管理器來标記應用程式離線。您可以檢視流量管理器控制台的狀态和配置規則來重新路由請求被響應的應用程式的其他執行個體。
但是,請記住,流量管理器将隻等待10秒鐘,以接收來自監控URL的響應。是以,你應該確定你的健康驗證碼這個時間範圍内執行,允許網絡延遲從流量管理器往返于您的應用程式,然後再傳回。
有關使用Windows流量管理器來監視你的應用程式的更多資訊,請參閱MSDN上微軟Azure
Traffic Manager的。流量管理器在多個資料中心部署指南進行了讨論。