Smart identifiering – felavvikelser

Application Insights varnar dig automatiskt nästan i realtid om webbappen upplever en onormal ökning av antalet misslyckade begäranden. Den identifierar en ovanlig ökning av antalet HTTP-begäranden eller beroendeanrop som rapporteras som misslyckade. För begäranden har misslyckade begäranden vanligtvis svarskoder på 400 eller högre. För att hjälpa dig att sortera och diagnostisera problemet tillhandahålls en analys av felens egenskaper och relaterade programdata i aviseringsinformationen. Det finns också länkar till Application Insights-portalen för ytterligare diagnos. Funktionen behöver ingen konfiguration eller konfiguration eftersom den använder maskininlärningsalgoritmer för att förutsäga den normala felfrekvensen.

Den här funktionen fungerar för alla webbappar som finns i molnet eller på dina egna servrar som genererar programbegäran eller beroendedata. Om du till exempel har en arbetsroll som anropar TrackRequest() eller TrackDependency().

När du har konfigurerat Application Insights för projektet, och om appen genererar en viss minsta mängd data, tar det 24 timmar för smart identifiering av felavvikelser att lära sig appens normala beteende innan den aktiveras och kan skicka aviseringar.

Här är en exempelavisering:

Sample smart detection alert showing cluster analysis around failure.

Aviseringsinformationen visar följande:

  • Felfrekvensen jämfört med normalt appbeteende.
  • Hur många användare som påverkas – så att du vet hur mycket du behöver oroa dig för.
  • Ett karakteristiskt mönster som är associerat med felen. I det här exemplet finns det en viss svarskod, begärandenamn (åtgärd) och programversion. Det visar omedelbart var du ska börja leta i koden. Andra möjligheter kan vara en specifik webbläsare eller klientoperativsystem.
  • Undantaget, loggspårningar och beroendefel (databaser eller andra externa komponenter) som verkar vara associerade med de karakteriserade felen.
  • Länkar direkt till relevanta sökningar på data i Application Insights.

Fördelar med smart identifiering

Vanliga måttaviseringar säger att det kan finnas ett problem. Men smart identifiering startar diagnostikarbetet åt dig och utför mycket av den analys som du annars skulle behöva göra själv. Du får resultaten snyggt paketerade, vilket hjälper dig att snabbt komma till roten av problemet.

Så här fungerar det

Smart identifiering övervakar de data som tas emot från din app, särskilt felfrekvensen. Den här regeln räknar antalet begäranden som Successful request egenskapen är falsk för och antalet beroendeanrop som Successful call egenskapen är falsk för. För begäranden Successful request == (resultCode < 400) ( såvida du inte skriver anpassad kod för att filtrera eller generera egna TrackRequest-anrop ).

Appens prestanda har ett typiskt beteendemönster. Vissa begäranden eller beroendeanrop är mer benägna att misslyckas än andra. och den totala felfrekvensen kan öka när belastningen ökar. Smart identifiering använder maskininlärning för att hitta dessa avvikelser.

När data kommer in i Application Insights från din webbapp jämför Smart identifiering det aktuella beteendet med de mönster som har setts under de senaste dagarna. Om detektorn upptäcker en onormal ökning av felfrekvensen jämfört med tidigare prestanda utlöser detektorn en mer djupgående analys.

När en analys utlöses utför tjänsten en klusteranalys på den misslyckade begäran för att försöka identifiera ett mönster med värden som kännetecknar felen.

I exemplet som visades tidigare upptäckte analysen att de flesta felen handlar om en specifik resultatkod, begärandenamn, server-URL-värd och rollinstans.

När du instrumentera tjänsten med dessa anrop letar analysatorn efter ett undantag och ett beroendefel som är associerade med begäranden i det identifierade klustret. Den letar också efter ett exempel på spårningsloggar som är associerade med dessa begäranden. Aviseringen du får innehåller den här ytterligare informationen som kan ge kontext till identifieringen och tips om rotorsaken till det identifierade problemet.

Information om aviseringslogik

Identifiering av felavvikelser är beroende av en egen maskininlärningsalgoritm, så orsakerna till att en avisering utlöses eller inte utlöses är inte alltid deterministiska. Med detta sagt är de primära faktorerna som algoritmen använder:

  • Analys av felprocenten för begäranden/beroenden i ett rullande tidsfönster på 20 minuter.
  • En jämförelse av felprocenten under de senaste 20 minuterna, till frekvensen under de senaste 40 minuterna och de senaste sju dagarna. Algoritmen letar efter betydande avvikelser som överskrider X-gånger för standardavvikelsen.
  • Algoritmen använder en anpassningsbar gräns för den minsta felprocenten, som varierar beroende på appens volym av begäranden/beroenden.
  • Algoritmen innehåller logik som automatiskt kan lösa den utlösta aviseringen om problemet inte längre har identifierats i 8–24 timmar. Obs! i den aktuella designen. ett meddelande eller en åtgärd skickas inte när en smart identifieringsavisering har lösts. Du kan kontrollera om en avisering om smart identifiering har lösts i Azure-portalen.

Hantera aviseringsregler för felavvikelser

Skapa aviseringsregel

En aviseringsregel för felavvikelser skapas automatiskt när application insights-resursen skapas. Regeln konfigureras automatiskt för att analysera telemetrin för resursen. Du kan skapa regeln igen med hjälp av Azure REST API eller med hjälp av en Resource Manager-mall. Att skapa regeln kan vara användbart om det automatiska skapandet av regeln misslyckades av någon anledning, eller om du tog bort regeln.

Aviseringsregelkonfiguration

Om du vill konfigurera en aviseringsregel för felavvikelser i portalen öppnar du sidan Aviseringar och väljer Aviseringsregler. Aviseringsregler för felavvikelser ingår tillsammans med eventuella aviseringar som du anger manuellt.

On the Application Insights resource page, click Alerts tile, then Manage alert rules.

Klicka på aviseringsregeln för att konfigurera den.

Rule configuration screen.

Du kan inaktivera aviseringsregeln för smart identifiering från portalen eller med hjälp av en Azure Resource Manager-mall.

Den här aviseringsregeln skapas med en associerad åtgärdsgrupp med namnet "Smart identifiering av Application Insights". Som standard innehåller den här åtgärdsgruppen Azure Resource Manager-rollåtgärder via e-post och skickar meddelanden till användare som har azure resource manager-roller för övervakningsdeltagare eller övervakningsläsare i din prenumeration. Du kan ta bort, ändra eller lägga till de åtgärdsgrupper som regeln utlöser, precis som för andra Azure-aviseringsregler. Meddelanden som skickas från den här aviseringsregeln följer det vanliga aviseringsschemat.

Ta bort aviseringar

Du kan ta bort en varningsregel för felavvikelser.

Du kan göra det manuellt på sidan Aviseringsregler eller med följande Azure CLI-kommando:

az resource delete --ids <Resource ID of Failure Anomalies alert rule>

Observera att om du tar bort en Application Insights-resurs tas inte den associerade aviseringsregeln för felavvikelser bort automatiskt.

Exempel på felavvikelser avisering webhook nyttolast

{
    "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"
}

Sortera och diagnostisera en avisering

En avisering anger att en onormal ökning av den misslyckade begärandefrekvensen upptäcktes. Det är troligt att det finns problem med din app eller dess miljö. En avisering anger att en onormal ökning av den misslyckade begärandefrekvensen upptäcktes. Det är troligt att det finns problem med din app eller dess miljö.

Om du vill undersöka ytterligare klickar du på Visa fullständig information i Application Insights. Länkarna på den här sidan tar dig direkt till en söksida som filtreras efter relevanta begäranden, undantag, beroenden eller spårningar. Om du vill undersöka vidare klickar du på Visa fullständig information i Application Insights. Länkarna på den här sidan tar dig direkt till en söksida som filtrerats efter relevanta begäranden, undantag, beroenden eller spårningar.

Du kan också öppna Azure-portalen, gå till Application Insights-resursen för din app och öppna sidan Fel.

Om du klickar på Diagnostisera fel kan du få mer information och lösa problemet.

Diagnostic search.

Från procentandelen begäranden och antalet användare som påverkas kan du bestämma hur brådskande problemet är. I exemplet som visades tidigare, indikerar felfrekvensen på 78,5 % att det är en normal frekvens på 2,2 %, som indikerar att något dåligt pågår. Å andra sidan påverkades endast 46 användare. Den här informationen kan hjälpa dig att bedöma hur allvarligt problemet är.

I många fall kan du snabbt diagnostisera problemet från begäransnamn, undantag, beroendefel och spårningsdata.

I det här exemplet uppstod ett undantag från SQL Database på grund av att begärandegränsen uppnåddes.

Failed request details.

Granska de senaste aviseringarna

Klicka på Aviseringar på resurssidan för Application Insights för att komma till de senaste utlösta aviseringarna:

Alerts summary.

Om du får en avisering om smart identifiering

Varför fick jag den här aviseringen?

  • Vi har upptäckt en onormal ökning av antalet misslyckade begäranden jämfört med den normala baslinjen för föregående period. Efter analys av fel och associerade programdata anser vi att det finns ett problem som du bör undersöka.

Betyder meddelandet att jag definitivt har ett problem?

  • Vi försöker varna om appavbrott eller försämring, men bara du kan förstå semantiken och påverkan på appen eller användarna fullt ut.

Så du tittar på mina programdata?

  • Nej. Tjänsten är helt automatisk. Det är bara du som får meddelandena. Dina data är privata.

Måste jag prenumerera på den här aviseringen?

  • Nej. Varje program som skickar begärandedata har aviseringsregeln smart identifiering.

Kan jag avbryta prenumerationen eller få meddelanden som skickas till mina kollegor i stället?

  • Ja, I Aviseringsregler klickar du på regeln för smart identifiering för att konfigurera den. Du kan inaktivera aviseringen eller ändra mottagare för aviseringen.

Jag förlorade e-postmeddelandet. Var hittar jag meddelandena i portalen?

  • Du hittar aviseringar om felavvikelser i Azure-portalen på sidan Application Insights-aviseringar.

Några av aviseringarna handlar om kända problem och jag vill inte ta emot dem.

Nästa steg

De här diagnostikverktygen hjälper dig att inspektera data från din app:

Smarta identifieringar är automatiska. Men du kanske vill ställa in några fler aviseringar?