Slimme detectie - Foutafwijkingen

Application Insights waarschuwt u in bijna realtime automatisch als uw web-app een abnormale toename van de frequentie van mislukte aanvragen ondervindt. Er wordt een ongebruikelijke toename gedetecteerd van de snelheid van HTTP-aanvragen of afhankelijkheidsaanroepen die worden gerapporteerd als mislukt. Voor aanvragen hebben mislukte aanvragen meestal antwoordcodes van 400 of hoger. Om u te helpen bij het opsporen en diagnosticeren van het probleem, wordt een analyse gegeven van de kenmerken van de fouten en gerelateerde toepassingsgegevens in de waarschuwingsdetails. Er zijn ook koppelingen naar de Application Insights-portal voor verdere diagnose. De functie heeft geen configuratie of configuratie nodig, omdat er machine learning-algoritmen worden gebruikt om de normale foutfrequentie te voorspellen.

Deze functie werkt voor elke web-app, gehost in de cloud of op uw eigen servers die toepassingsaanvraag- of afhankelijkheidsgegevens genereren. Als u bijvoorbeeld een werkrol hebt die TrackRequest() of TrackDependency() aanroept.

Nadat u Application Insights voor uw project hebt ingesteld en als uw app een bepaalde minimale hoeveelheid gegevens genereert, duurt het 24 uur voordat slimme detectie van foutafwijkingen het normale gedrag van uw app leert, voordat deze is ingeschakeld en waarschuwingen kan verzenden.

Hier volgt een voorbeeldwaarschuwing:

Voorbeeldwaarschuwing voor slimme detectie met clusteranalyse rond fouten.

In de waarschuwingsgegevens wordt het volgende opgegeven:

  • De foutfrequentie vergeleken met normaal app-gedrag.
  • Hoeveel gebruikers worden beïnvloed, zodat u weet hoeveel u zich zorgen hoeft te maken.
  • Een kenmerkpatroon dat is gekoppeld aan de fouten. In dit voorbeeld is er een bepaalde antwoordcode, aanvraagnaam (bewerking) en toepassingsversie. Dat vertelt u onmiddellijk waar u naar uw code moet kijken. Andere mogelijkheden kunnen een specifiek browser- of clientbesturingssysteem zijn.
  • De uitzondering, logboektraceringen en afhankelijkheidsfouten (databases of andere externe onderdelen) die lijken te zijn gekoppeld aan de gekenmerkte fouten.
  • Koppelingen rechtstreeks naar relevante zoekopdrachten op de gegevens in Application Insights.

Voordelen van slimme detectie

Normale metrische waarschuwingen geven aan dat er mogelijk een probleem is. Maar Slimme detectie start het diagnostische werk voor u, het uitvoeren van veel van de analyse die u anders zelf zou moeten doen. U krijgt de resultaten netjes verpakt, zodat u snel bij de hoofdmap van het probleem kunt komen.

Uitleg

Slimme detectie bewaakt de gegevens die zijn ontvangen van uw app, met name de foutpercentages. Met deze regel wordt het aantal aanvragen geteld waarvoor de Successful request eigenschap onwaar is en het aantal afhankelijkheidsaanroepen waarvoor de Successful call eigenschap onwaar is. Voor aanvragen geldt standaard Successful request == (resultCode < 400) (tenzij u aangepaste code schrijft om uw eigen TrackRequest-aanroepen te filteren of genereren).

De prestaties van uw app hebben een typisch gedrag. Sommige aanvragen of afhankelijkheidsaanroepen zijn gevoeliger voor fouten dan andere; en het totale foutpercentage kan toenemen naarmate de belasting toeneemt. Slimme detectie maakt gebruik van machine learning om deze afwijkingen te vinden.

Naarmate gegevens afkomstig zijn van Application Insights vanuit uw web-app, vergelijkt Slimme detectie het huidige gedrag met de patronen die de afgelopen dagen zijn gezien. Als de detector een abnormale toename van de foutfrequentie met eerdere prestaties detecteert, activeert de detector een uitgebreidere analyse.

Wanneer een analyse wordt geactiveerd, voert de service een clusteranalyse uit op de mislukte aanvraag om een patroon van waarden te identificeren dat de fouten karakteriseert.

In het voorbeeld dat eerder werd weergegeven, ontdekte de analyse dat de meeste fouten betrekking hebben op een specifieke resultaatcode, aanvraagnaam, server-URL-host en rolinstantie.

Wanneer u uw service met deze aanroepen instrumenteren, zoekt de analyse naar een uitzondering en een afhankelijkheidsfout die is gekoppeld aan aanvragen in het geïdentificeerde cluster. Er wordt ook gezocht naar een voorbeeld van traceringslogboeken die zijn gekoppeld aan deze aanvragen. De waarschuwing die u ontvangt, bevat deze aanvullende informatie die context kan bieden voor de detectie en hint op de hoofdoorzaak van het gedetecteerde probleem.

Details van waarschuwingslogica

Detectie van foutafwijkingen is afhankelijk van een eigen machine learning-algoritme, dus de redenen voor een waarschuwing die wordt geactiveerd of niet worden geactiveerd, zijn niet altijd deterministisch. Met dat gezegd hebbende, zijn de belangrijkste factoren die door het algoritme worden gebruikt:

  • Analyse van het foutpercentage van aanvragen/afhankelijkheden in een doorlopend tijdvenster van 20 minuten.
  • Een vergelijking van het foutpercentage in de afgelopen 20 minuten, met de snelheid in de afgelopen 40 minuten en de afgelopen zeven dagen. Het algoritme zoekt naar significante afwijkingen die de X-tijden van de standaarddeviatie overschrijden.
  • Het algoritme gebruikt een adaptieve limiet voor het minimale foutpercentage, dat varieert op basis van het volume van aanvragen/afhankelijkheden van de app.
  • Het algoritme bevat logica waarmee de geactiveerde waarschuwing automatisch kan worden opgelost, als het probleem gedurende 8-24 uur niet meer wordt gedetecteerd. Opmerking: in het huidige ontwerp. een melding of actie wordt niet verzonden wanneer een waarschuwing voor slimme detectie is opgelost. U kunt controleren of een waarschuwing voor slimme detectie is opgelost in Azure Portal.

Waarschuwingsregels voor foutafwijkingen beheren

Waarschuwingsregel maken

Er wordt automatisch een waarschuwingsregel voor foutafwijkingen gemaakt wanneer uw Application Insights-resource wordt gemaakt. De regel wordt automatisch geconfigureerd om de telemetrie op die resource te analyseren. U kunt de regel opnieuw maken met behulp van de Azure REST API of met behulp van een Resource Manager-sjabloon. Het maken van de regel kan handig zijn als het automatisch maken van de regel om een of andere reden is mislukt of als u de regel hebt verwijderd.

Configuratie van waarschuwingsregel

Als u een waarschuwingsregel foutafwijkingen in de portal wilt configureren, opent u de pagina Waarschuwingen en selecteert u Waarschuwingsregels. Waarschuwingsregels voor foutafwijkingen worden samen met waarschuwingen die u handmatig instelt, opgenomen.

Klik op de resourcepagina van Application Insights op de tegel Waarschuwingen en vervolgens op Waarschuwingsregels beheren.

Klik op de waarschuwingsregel om deze te configureren.

Scherm Regelconfiguratie.

U kunt waarschuwingsregel voor slimme detectie uitschakelen vanuit de portal of met behulp van een Azure Resource Manager-sjabloon.

Deze waarschuwingsregel wordt gemaakt met een bijbehorende actiegroep met de naam 'Application Insights Smart Detection'. Deze actiegroep bevat standaard acties voor azure Resource Manager-rollen e-mail en verzendt meldingen naar gebruikers met het Azure Resource Manager-abonnement Controlebijdrager of Bewakingslezer in uw abonnement. U kunt de actiegroepen verwijderen, wijzigen of toevoegen die door de regel worden geactiveerd, net als voor elke andere Azure-waarschuwingsregel. Meldingen die vanuit deze waarschuwingsregel worden verzonden, volgen het algemene waarschuwingsschema.

Waarschuwingen verwijderen

U kunt een waarschuwingsregel foutafwijkingen verwijderen.

U kunt dit handmatig doen op de pagina Waarschuwingsregels of met de volgende Azure CLI-opdracht:

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

Als u een Application Insights-resource verwijdert, wordt de bijbehorende waarschuwingsregel foutafwijkingen niet automatisch verwijderd.

Voorbeeld van foutafwijkingen waarschuwing webhook nettolading

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

Een waarschuwing classificeren en diagnosticeren

Een waarschuwing geeft aan dat er een abnormale toename van de mislukte aanvraagsnelheid is gedetecteerd. Het is waarschijnlijk dat er een probleem is met uw app of de bijbehorende omgeving.

Als u verder wilt onderzoeken, klikt u op Volledige details weergeven in Application Insights. Met de koppelingen op deze pagina gaat u rechtstreeks naar een zoekpagina die is gefilterd op de relevante aanvragen, uitzonderingen, afhankelijkheid of traceringen. Als u verder wilt onderzoeken, klikt u op 'Volledige details weergeven in Application Insights' door de koppelingen op deze pagina rechtstreeks naar een zoekpagina te gaan die is gefilterd op de relevante aanvragen, uitzonderingen, afhankelijkheid of traceringen.

U kunt ook Azure Portal openen, naar de Application Insights-resource voor uw app navigeren en de pagina Fouten openen.

Als u op Fouten vaststellen klikt, krijgt u meer informatie en lost u het probleem op.

Diagnostische zoekopdracht.

Vanuit het percentage aanvragen en het aantal betrokken gebruikers kunt u bepalen hoe urgent het probleem is. In het voorbeeld dat eerder werd weergegeven, wordt het foutpercentage van 78,5% vergeleken met een normale snelheid van 2,2%, wat aangeeft dat er iets slecht aan de hand is. Aan de andere kant werden slechts 46 gebruikers beïnvloed. Deze informatie kan u helpen te beoordelen hoe ernstig het probleem is.

In veel gevallen kunt u het probleem snel vaststellen op basis van de aanvraagnaam, uitzondering, afhankelijkheidsfout en traceringsgegevens.

In dit voorbeeld is er een uitzondering op SQL Database omdat de aanvraaglimiet is bereikt.

Details van mislukte aanvraag.

Recente waarschuwingen bekijken

Klik op Waarschuwingen op de application insights-resourcepagina om naar de meest recente geactiveerde waarschuwingen te gaan:

Samenvatting van waarschuwingen.

Als u een waarschuwing voor slimme detectie ontvangt

Waarom heb ik deze waarschuwing ontvangen?

  • Er is een abnormale toename van mislukte aanvragen gedetecteerd in vergelijking met de normale basislijn van de voorgaande periode. Na analyse van de fouten en de bijbehorende toepassingsgegevens, denken we dat er een probleem is dat u moet onderzoeken.

Betekent de melding dat ik zeker een probleem heb?

  • We proberen te waarschuwen voor app-onderbreking of -degradatie, maar alleen u kunt de semantiek en de impact op de app of gebruikers volledig begrijpen.

Dus, kijkt u naar mijn toepassingsgegevens?

  • Nee De service is volledig automatisch. Alleen u ontvangt de meldingen. Uw gegevens zijn privé.

Moet ik me abonneren op deze waarschuwing?

  • Nee Elke toepassing die aanvraaggegevens verzendt, heeft de waarschuwingsregel Voor slimme detectie.

Kan ik me afmelden of de meldingen ontvangen die naar mijn collega's worden verzonden?

  • Ja, klik in waarschuwingsregels op de regel voor slimme detectie om deze te configureren. U kunt de waarschuwing uitschakelen of geadresseerden voor de waarschuwing wijzigen.

Ik heb het e-mailbericht verloren. Waar vind ik de meldingen in de portal?

  • U vindt waarschuwingen voor foutafwijkingen in Azure Portal op de pagina Met waarschuwingen van Application Insights.

Sommige waarschuwingen hebben betrekking op bekende problemen en ik wil ze niet ontvangen.

  • U kunt de functie voor onderdrukking van waarschuwingsregels gebruiken.

Volgende stappen

Met deze diagnostische hulpprogramma's kunt u de gegevens van uw app inspecteren:

Slimme detecties zijn automatisch. Maar misschien wilt u wat meer waarschuwingen instellen?