智慧型偵測 - 失敗異常
如果您的 Web 應用程式遇到失敗要求率異常上升的情況,Application Insights 會自動以近乎即時的方式警示您。 它會偵測到 HTTP 要求或相依性呼叫的速率異常上升,這些要求或相依性呼叫回報為失敗。 對於要求,失敗的要求通常有 400 或更高的回應碼。 為了協助您分級和診斷問題,警示詳細數據中會提供失敗特性和相關應用程式數據的分析。 其中也有 Application Insights 入口網站的連結,以供進一步診斷。 此功能不需要設定或設定,因為它會使用機器學習演算法來預測一般失敗率。
這項功能適用於裝載於雲端或您自己的伺服器上,以產生應用程式要求或相依性數據的任何 Web 應用程式。 例如,如果您有呼叫 TrackRequest() 或 TrackDependency() 的背景工作角色。
為項目設定 Application Insights 之後,如果應用程式產生特定最少的數據量,智慧偵測失敗異常需要 24 小時才能瞭解應用程式的正常行為,然後才開啟並傳送警示。
以下是範例警示:
警示詳細資料會告訴您:
- 與一般應用程序行為相比,失敗率。
- 有多少使用者受到影響 - 因此您知道要擔心多少。
- 與失敗相關聯的特性模式。 在此範例中,有特定的回應碼、要求名稱(作業)和應用程式版本。 這會立即告訴您開始在程式碼中尋找的位置。 其他可能性可能是特定的瀏覽器或用戶端操作系統。
- 例外狀況、記錄追蹤和相依性失敗(資料庫或其他外部元件)似乎與特徵性失敗相關聯。
- 直接連結到 Application Insights 中相關搜尋的數據。
智慧型手機偵測的優點
一 般計量警示 會告訴您可能有問題。 但智慧偵測會為您啟動診斷工作,執行您自己必須執行的大部分分析。 您可以整齊地封裝結果,協助您快速找出問題的根本。
運作方式
智慧偵測會監視從您的應用程式接收的數據,特別是失敗率。 此規則會計算屬性為 false 的要求 Successful request
數目,以及屬性為 false 的相依性呼叫 Successful call
數目。 針對要求, Successful request == (resultCode < 400)
預設為 (除非您撰寫自定義程式代碼來 篩選 或產生您自己的 TrackRequest 呼叫)。
您的應用程式效能具有一般的行為模式。 某些要求或相依性呼叫比其他要求更容易失敗;且當負載增加時,整體失敗率可能會上升。 智慧型手機偵測會使用機器學習來尋找這些異常狀況。
當來自 Web 應用程式的 Application Insights 數據時,智慧偵測會比較目前的行為與過去幾天所見的模式。 如果偵測器發現失敗率與先前效能的異常上升,偵測器就會觸發更深入的分析。
觸發分析時,服務會對失敗的要求執行叢集分析,以嘗試識別特徵失敗的值模式。
在先前顯示的範例中,分析發現大部分失敗都是關於特定結果碼、要求名稱、伺服器URL主機和角色實例。
當您使用這些呼叫檢測服務時,分析器會尋找與識別叢集中要求相關聯的例外狀況和相依性失敗。 它也會尋找與這些要求相關聯的任何追蹤記錄範例。 您收到的警示包含這項額外資訊,可提供偵測內容,以及偵測到問題的根本原因提示。
警示邏輯詳細數據
失敗異常偵測依賴專屬的機器學習演算法,因此警示引發或不引發的原因不一定是決定性的。 如此一來,演算法使用的主要因素如下:
- 在20分鐘的滾動時間範圍中分析要求/相依性失敗百分比。
- 過去 20 分鐘內失敗百分比與過去 40 分鐘和過去 7 天的速率比較。 演算法正在尋找超過標準偏差 X 倍的重大偏差。
- 演算法會針對最小失敗百分比使用調適性限制,這會根據應用程式的要求/相依性量而有所不同。
- 如果問題不再偵測到 8-24 小時,演算法包含可自動解決引發警示的邏輯。 注意:在目前的設計中。 當智慧偵測警示解決時,不會傳送通知或動作。 您可以檢查智慧偵測警示是否已在 Azure 入口網站 中解決。
管理失敗異常警示規則
警示規則建立
建立 Application Insights 資源時,會自動建立失敗異常警示規則。 此規則會自動設定為分析該資源上的遙測。 您可以使用 Azure REST API 或使用 Resource Manager 範本再次建立規則。 如果規則的自動建立因為某些原因而失敗,或如果您刪除規則,則建立規則可能會很有用。
警示規則設定
若要在入口網站中設定失敗異常警示規則,請開啟 [警示] 頁面,然後選取 [警示規則]。 失敗異常警示規則隨附於您手動設定的任何警示。
按兩下警示規則進行設定。
您可以從入口網站或使用 Azure Resource Manager 範本停用智慧偵測警示規則。
此警示規則是使用名為 「Application Insights 智慧偵測」 的相關聯 動作群組 所建立。根據預設,此動作群組包含電子郵件 Azure Resource Manager 角色動作,並將通知傳送給訂用帳戶中具有監視參與者或監視讀取者訂用帳戶 Azure Resource Manager 角色的使用者。 您可以移除、變更或新增規則所觸發的動作群組,如同任何其他 Azure 警示規則。 從此警示規則傳送的通知會 遵循常見的警示架構。
刪除警示
您可以刪除失敗異常警示規則。
您可以在 [警示規則] 頁面上,或使用下列 Azure CLI 命令手動執行此動作:
az resource delete --ids <Resource ID of Failure Anomalies alert rule>
請注意,如果您刪除Application Insights資源,相關聯的失敗異常警示規則不會自動刪除。
失敗異常警示 Webhook 承載的範例
{
"properties": {
"essentials": {
"severity": "Sev3",
"signalType": "Log",
"alertState": "New",
"monitorCondition": "Resolved",
"monitorService": "Smart Detector",
"targetResource": "/subscriptions/4f9b81be-fa32-4f96-aeb3-fc5c3f678df9/resourcegroups/test-group/providers/microsoft.insights/components/test-rule",
"targetResourceName": "test-rule",
"targetResourceGroup": "test-group",
"targetResourceType": "microsoft.insights/components",
"sourceCreatedId": "1a0a5b6436a9b2a13377f5c89a3477855276f8208982e0f167697a2b45fcbb3e",
"alertRule": "/subscriptions/4f9b81be-fa32-4f96-aeb3-fc5c3f678df9/resourcegroups/test-group/providers/microsoft.alertsmanagement/smartdetectoralertrules/failure anomalies - test-rule",
"startDateTime": "2019-10-30T17:52:32.5802978Z",
"lastModifiedDateTime": "2019-10-30T18:25:23.1072443Z",
"monitorConditionResolvedDateTime": "2019-10-30T18:25:26.4440603Z",
"lastModifiedUserName": "System",
"actionStatus": {
"isSuppressed": false
},
"description": "Failure Anomalies notifies you of an unusual rise in the rate of failed HTTP requests or dependency calls."
},
"context": {
"DetectionSummary": "An abnormal rise in failed request rate",
"FormattedOccurenceTime": "2019-10-30T17:50:00Z",
"DetectedFailureRate": "50.0% (200/400 requests)",
"NormalFailureRate": "0.0% (over the last 30 minutes)",
"FailureRateChart": [
[
"2019-10-30T05:20:00Z",
0
],
[
"2019-10-30T05:40:00Z",
100
],
[
"2019-10-30T06:00:00Z",
0
],
[
"2019-10-30T06:20:00Z",
0
],
[
"2019-10-30T06:40:00Z",
100
],
[
"2019-10-30T07:00:00Z",
0
],
[
"2019-10-30T07:20:00Z",
0
],
[
"2019-10-30T07:40:00Z",
100
],
[
"2019-10-30T08:00:00Z",
0
],
[
"2019-10-30T08:20:00Z",
0
],
[
"2019-10-30T08:40:00Z",
100
],
[
"2019-10-30T17:00:00Z",
0
],
[
"2019-10-30T17:20:00Z",
0
],
[
"2019-10-30T09:00:00Z",
0
],
[
"2019-10-30T09:20:00Z",
0
],
[
"2019-10-30T09:40:00Z",
100
],
[
"2019-10-30T10:00:00Z",
0
],
[
"2019-10-30T10:20:00Z",
0
],
[
"2019-10-30T10:40:00Z",
100
],
[
"2019-10-30T11:00:00Z",
0
],
[
"2019-10-30T11:20:00Z",
0
],
[
"2019-10-30T11:40:00Z",
100
],
[
"2019-10-30T12:00:00Z",
0
],
[
"2019-10-30T12:20:00Z",
0
],
[
"2019-10-30T12:40:00Z",
100
],
[
"2019-10-30T13:00:00Z",
0
],
[
"2019-10-30T13:20:00Z",
0
],
[
"2019-10-30T13:40:00Z",
100
],
[
"2019-10-30T14:00:00Z",
0
],
[
"2019-10-30T14:20:00Z",
0
],
[
"2019-10-30T14:40:00Z",
100
],
[
"2019-10-30T15:00:00Z",
0
],
[
"2019-10-30T15:20:00Z",
0
],
[
"2019-10-30T15:40:00Z",
100
],
[
"2019-10-30T16:00:00Z",
0
],
[
"2019-10-30T16:20:00Z",
0
],
[
"2019-10-30T16:40:00Z",
100
],
[
"2019-10-30T17:30:00Z",
50
]
],
"ArmSystemEventsRequest": "/subscriptions/4f9b81be-fa32-4f96-aeb3-fc5c3f678df9/resourceGroups/test-group/providers/microsoft.insights/components/test-rule/query?query=%0d%0a++++++++++++++++systemEvents%0d%0a++++++++++++++++%7c+where+timestamp+%3e%3d+datetime(%272019-10-30T17%3a20%3a00.0000000Z%27)+%0d%0a++++++++++++++++%7c+where+itemType+%3d%3d+%27systemEvent%27+and+name+%3d%3d+%27ProactiveDetectionInsight%27+%0d%0a++++++++++++++++%7c+where+dimensions.InsightType+in+(%275%27%2c+%277%27)+%0d%0a++++++++++++++++%7c+where+dimensions.InsightDocumentId+%3d%3d+%27718fb0c3-425b-4185-be33-4311dfb4deeb%27+%0d%0a++++++++++++++++%7c+project+dimensions.InsightOneClassTable%2c+%0d%0a++++++++++++++++++++++++++dimensions.InsightExceptionCorrelationTable%2c+%0d%0a++++++++++++++++++++++++++dimensions.InsightDependencyCorrelationTable%2c+%0d%0a++++++++++++++++++++++++++dimensions.InsightRequestCorrelationTable%2c+%0d%0a++++++++++++++++++++++++++dimensions.InsightTraceCorrelationTable%0d%0a++++++++++++&api-version=2018-04-20",
"LinksTable": [
{
"Link": "<a href=\"https://portal.azure.com/#blade/AppInsightsExtension/ProactiveDetectionFeedBlade/ComponentId/{\"SubscriptionId\":\"4f9b81be-fa32-4f96-aeb3-fc5c3f678df9\",\"ResourceGroup\":\"test-group\",\"Name\":\"test-rule\"}/SelectedItemGroup/718fb0c3-425b-4185-be33-4311dfb4deeb/SelectedItemTime/2019-10-30T17:50:00Z/InsightType/5\" target=\"_blank\">View full details in Application Insights</a>"
}
],
"SmartDetectorId": "FailureAnomaliesDetector",
"SmartDetectorName": "Failure Anomalies",
"AnalysisTimestamp": "2019-10-30T17:52:32.5802978Z"
},
"egressConfig": {
"displayConfig": [
{
"rootJsonNode": null,
"sectionName": null,
"displayControls": [
{
"property": "DetectionSummary",
"displayName": "What was detected?",
"type": "Text",
"isOptional": false,
"isPropertySerialized": false
},
{
"property": "FormattedOccurenceTime",
"displayName": "When did this occur?",
"type": "Text",
"isOptional": false,
"isPropertySerialized": false
},
{
"property": "DetectedFailureRate",
"displayName": "Detected failure rate",
"type": "Text",
"isOptional": false,
"isPropertySerialized": false
},
{
"property": "NormalFailureRate",
"displayName": "Normal failure rate",
"type": "Text",
"isOptional": false,
"isPropertySerialized": false
},
{
"chartType": "Line",
"xAxisType": "Date",
"yAxisType": "Percentage",
"xAxisName": "",
"yAxisName": "",
"property": "FailureRateChart",
"displayName": "Failure rate over last 12 hours",
"type": "Chart",
"isOptional": false,
"isPropertySerialized": false
},
{
"defaultLoad": true,
"displayConfig": [
{
"rootJsonNode": null,
"sectionName": null,
"displayControls": [
{
"showHeader": false,
"columns": [
{
"property": "Name",
"displayName": "Name"
},
{
"property": "Value",
"displayName": "Value"
}
],
"property": "tables[0].rows[0][0]",
"displayName": "All of the failed requests had these characteristics:",
"type": "Table",
"isOptional": false,
"isPropertySerialized": true
}
]
}
],
"property": "ArmSystemEventsRequest",
"displayName": "",
"type": "ARMRequest",
"isOptional": false,
"isPropertySerialized": false
},
{
"showHeader": false,
"columns": [
{
"property": "Link",
"displayName": "Link"
}
],
"property": "LinksTable",
"displayName": "Links",
"type": "Table",
"isOptional": false,
"isPropertySerialized": false
}
]
}
]
}
},
"id": "/subscriptions/4f9b81be-fa32-4f96-aeb3-fc5c3f678df9/resourcegroups/test-group/providers/microsoft.insights/components/test-rule/providers/Microsoft.AlertsManagement/alerts/7daf8739-ca8a-4562-b69a-ff28db4ba0a5",
"type": "Microsoft.AlertsManagement/alerts",
"name": "Failure Anomalies - test-rule"
}
分級和診斷警示
警示表示偵測到失敗的要求率異常上升。 您的應用程式或其環境可能會有一些問題。
若要進一步調查,請按兩下 [在Application Insights 中檢視完整詳細數據]。 此頁面中的連結會直接帶您前往 篩選至相關要求、例外狀況、相依性或追蹤的搜尋頁面 。 若要進一步調查,請按兩下 [在Application Insights 中檢視完整詳細數據],此頁面中的連結會帶您直接前往 篩選至相關要求、例外狀況、相依性或追蹤的搜尋頁面 。
您也可以開啟 Azure 入口網站,流覽至應用程式的 Application Insights 資源,然後開啟 [失敗] 頁面。
按兩下 [診斷失敗] 可協助您取得更多詳細數據並解決問題。
從要求百分比和受影響的用戶數目,您可以決定問題有多緊急。 在先前顯示的範例中,失敗率 78.5% 與正常比率為 2.2%, 表示發生不良狀況。 另一方面,只有46位使用者受到影響。 此資訊可協助您評估問題有多嚴重。
在許多情況下,您可以從提供的要求名稱、例外狀況、相依性失敗和追蹤數據,快速診斷問題。
在此範例中,由於達到要求限制,SQL 資料庫 發生例外狀況。
檢閱最近的警示
按兩下 Application Insights 資源頁面中的 [警示 ],以取得最近引發的警示:
如果您收到智慧偵測警示
為什麼我收到此警示?
- 我們偵測到與前一個期間一般基準相比,失敗的要求率異常上升。 分析失敗和相關聯的應用程式數據之後,我們認為您應該調查有問題。
通知是否表示我確實有問題?
- 我們會嘗試對應用程式中斷或降低發出警示,但只有您可以完全瞭解語意和對應用程式或用戶的影響。
那麼,您正在查看我的應用程式數據?
- 否。 服務完全是自動的。 只有您會收到通知。 您的資料是 不公開的。
我是否必須訂閱此警示?
- 否。 傳送要求數據的每個應用程式都有智慧偵測警示規則。
我可以取消訂閱或取得傳送給同事的通知嗎?
- 是,在 [警示規則] 中,按兩下智慧偵測規則進行設定。 您可以停用警示,或變更警示的收件者。
我遺失了電子郵件。 在入口網站中哪裡可以找到通知?
- 您可以在 Application Insights 警示頁面中的 Azure 入口網站 中找到失敗異常警示。
有些警示是關於已知問題,我不想收到這些警示。
- 您可以使用 警示動作規則 隱藏功能。
下一步
這些診斷工具可協助您檢查來自應用程式的資料:
智慧偵測是自動的。 但是,或許您會想要再設定一些警示?
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應