Inteligentní detekce – anomálie selhání

Aplikace Přehledy vás automaticky upozorní téměř v reálném čase, pokud vaše webová aplikace zaznamená neobvyklé zvýšení míry neúspěšných požadavků. Zjistí neobvyklý nárůst četnosti požadavků HTTP nebo volání závislostí, které se hlásí jako neúspěšné. U požadavků mají neúspěšné požadavky obvykle kódy odpovědí 400 nebo vyšší. Abychom vám pomohli s tříděním a diagnostikou problému, poskytuje se v podrobnostech upozornění analýza charakteristik selhání a souvisejících dat aplikace. K dispozici jsou také odkazy na portál Přehledy aplikace pro další diagnostiku. Tato funkce nepotřebuje žádnou konfiguraci ani nastavení, protože používá algoritmy strojového učení k predikci normální míry selhání.

Tato funkce funguje pro libovolnou webovou aplikaci hostovanou v cloudu nebo na vlastních serverech, která generují data žádostí o aplikaci nebo závislostí. Pokud máte například roli pracovního procesu, která volá TrackRequest() nebo TrackDependency().

Po nastavení aplikace Přehledy pro váš projekt a pokud vaše aplikace vygeneruje určité minimální množství dat, inteligentní detekce anomálií selhání trvá 24 hodin, než se aplikace zapne a může odesílat výstrahy.

Tady je ukázková výstraha:

Sample smart detection alert showing cluster analysis around failure.

Podrobnosti výstrahy vám sdělí:

  • Míra selhání ve srovnání s normálním chováním aplikace.
  • Kolik uživatelů je ovlivněno – takže víte, kolik máte obavy.
  • Charakteristický vzor přidružený k selháním V tomto příkladu je k dispozici konkrétní kód odpovědi, název požadavku (operace) a verze aplikace. To vám okamžitě řekne, kde začít hledat v kódu. Dalšími možnostmi může být konkrétní prohlížeč nebo klientský operační systém.
  • Výjimka, trasování protokolů a selhání závislostí (databáze nebo jiné externí komponenty), které se jeví jako přidružené k charakteristickým selháním.
  • Odkazuje přímo na relevantní vyhledávání dat v Přehledy aplikace.

Výhody inteligentního zjišťování

Běžná upozornění na metriky vám řeknou, že může dojít k problému. Inteligentní detekce ale spustí diagnostickou práci za vás a provede velkou analýzu, kterou byste jinak museli udělat sami. Dostanete výsledky přehledně zabalené, což vám pomůže rychle se dostat k kořenu problému.

Jak to funguje

Inteligentní detekce monitoruje data přijatá z vaší aplikace a zejména četnost selhání. Toto pravidlo spočítá počet požadavků, pro které Successful request je vlastnost false, a počet volání závislostí, pro které Successful call je vlastnost false. U požadavků ve výchozím nastavení Successful request == (resultCode < 400) (pokud jste nezapsali vlastní kód pro filtrování nebo generování vlastních volání TrackRequest ).

Výkon vaší aplikace má typický vzor chování. Některé požadavky nebo volání závislostí budou náchylnější k selhání než jiné; a celková míra selhání se může zvýšit při nárůstu zatížení. Inteligentní zjišťování používá strojové učení k vyhledání těchto anomálií.

Vzhledem k tomu, že data přicházejí do aplikace Přehledy z vaší webové aplikace, inteligentní detekce porovnává aktuální chování se vzory, které se v posledních několika dnech zobrazují. Pokud je v porovnání s předchozím výkonem pozorováno neobvyklé zvýšení míry selhání, aktivuje se analýza.

Když se aktivuje analýza, služba provede analýzu clusteru na neúspěšném požadavku, aby se pokusila identifikovat vzor hodnot, které charakterizují selhání.

V předchozím příkladu analýza zjistila, že většina selhání se týká konkrétního kódu výsledku, názvu požadavku, hostitele adresy URL serveru a instance role.

Když je vaše služba instrumentovaná s těmito voláními, analyzátor vyhledá výjimku a selhání závislosti, které jsou přidružené k žádostem v clusteru, které identifikoval, společně s příkladem všech protokolů trasování přidružených k těmto požadavkům.

Výsledná analýza se vám odešle jako upozornění, pokud jste ji nenakonfigurovali.

Stejně jako výstrahy, které nastavíte ručně, můžete zkontrolovat stav aktivovaného upozornění, který je možné vyřešit, pokud je problém opravený. Nakonfigurujte pravidla upozornění na stránce Výstrahy prostředku Přehledy vaší aplikace. Na rozdíl od jiných upozornění ale nemusíte nastavovat ani konfigurovat inteligentní zjišťování. Pokud chcete, můžete ji zakázat nebo změnit její cílové e-mailové adresy.

Podrobnosti logiky upozornění

Výstrahy aktivují náš proprietární algoritmus strojového učení, takže nemůžeme sdílet přesné podrobnosti implementace. Díky tomu chápeme, že někdy potřebujete vědět víc o tom, jak základní logika funguje. Primární faktory, které se vyhodnocují a určují, jestli se má aktivovat výstraha:

  • Analýza procenta selhání požadavků/závislostí v časovém intervalu 20 minut
  • Porovnání procenta selhání za posledních 20 minut s mírou za posledních 40 minut a posledních 7 dnů a hledáním významných odchylek, které překračují směrodatnou odchylku X.
  • Použití adaptivního limitu pro minimální procento selhání, které se liší podle objemu požadavků nebo závislostí aplikace.
  • Existuje logika, která dokáže automaticky vyřešit stav monitorování aktivovaných výstrah, pokud se problém už 8 až 24 hodin nezjistí. Poznámka: v aktuálním návrhu. oznámení nebo akce se neodesílají, když se vyřeší upozornění inteligentního zjišťování. V Azure Portal můžete zkontrolovat, jestli se v Azure Portal vyřešila výstraha inteligentního zjišťování.

Konfigurace upozornění

Pravidlo upozornění inteligentního zjišťování můžete zakázat na portálu nebo pomocí azure Resource Manager (viz příklad šablony).

Toto pravidlo upozornění se vytvoří s přidruženou skupinou akcí s názvem "Application Přehledy Smart Detection", která obsahuje akce e-mailu a webhooku a může být rozšířena tak, aby při aktivaci výstrahy aktivovala další akce.

Poznámka

E-mailová oznámení odeslaná z tohoto pravidla upozornění se teď standardně odesílají uživatelům přidruženým k rolím Čtenář monitorování a Přispěvatel monitorování předplatného. Další informace o tom najdete tady. Oznámení odeslaná z tohoto pravidla upozornění se řídí běžným schématem upozornění.

Otevřete stránku Upozornění. Pravidla upozornění anomálií selhání jsou součástí všech upozornění, která jste nastavili ručně, a můžete zjistit, jestli je aktuálně ve stavu výstrahy.

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

Kliknutím na výstrahu ji nakonfigurujte.

Rule configuration screen.

Všimněte si, že pravidlo upozornění anomálií selhání můžete zakázat nebo odstranit, ale nemůžete vytvořit další v rámci stejného prostředku Přehledy aplikace.

Příklad datové části webhooku upozornění na anomálie selhání

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

Třídění a diagnostika výstrahy

Výstraha značí, že se zjistilo neobvyklé zvýšení míry neúspěšných požadavků. Je pravděpodobné, že dojde k nějakému problému s vaší aplikací nebo jeho prostředím.

Pokud chcete prozkoumat další informace, klikněte na Zobrazit úplné podrobnosti v aplikaci Přehledy odkazy na této stránce, přejdete přímo na vyhledávací stránku filtrovanou na příslušné požadavky, výjimku, závislost nebo trasování.

Můžete také otevřít Azure Portal, přejít na prostředek Přehledy aplikace a otevřít stránku Selhání.

Kliknutím na Diagnostikovat selhání získáte další podrobnosti a problém vyřešíte.

Diagnostic search.

V procentech požadavků a počtu ovlivněných uživatelů můžete rozhodnout, jak je problém urgentní. V předchozím příkladu míra selhání 78,5 % porovnává s normální mírou 2,2 %, znamená, že se děje něco špatného. Na druhou stranu bylo ovlivněno pouze 46 uživatelů. Pokud to byla vaše aplikace, mohli byste posoudit, jak je to vážné.

V mnoha případech budete moct rychle diagnostikovat problém z názvu požadavku, výjimky, selhání závislostí a zadaných dat trasování.

V tomto příkladu došlo k výjimce z SQL Database kvůli dosažení limitu požadavků.

Failed request details.

Kontrola nedávných upozornění

Kliknutím na upozornění na stránce prostředku Přehledy aplikace se dostanete k nejnovějším aktivovaným upozorněním:

Alerts summary.

Jaký je rozdíl ...

Inteligentní detekce anomálií selhání doplňuje další podobné, ale jedinečné funkce aplikačních Přehledy.

  • Upozornění na metriky jsou nastavená vámi a můžou monitorovat širokou škálu metrik, jako je obsazenost procesoru, míra požadavků, doba načítání stránek atd. Můžete je použít k upozornění, například pokud potřebujete přidat další prostředky. Inteligentní detekce anomálií selhání naproti tomu pokrývá malou škálu kritických metrik (aktuálně pouze neúspěšná rychlost požadavků), která vás upozorní téměř v reálném čase, jakmile se míra neúspěšných požadavků webové aplikace zvýší v porovnání s normálním chováním webové aplikace. Na rozdíl od upozornění na metriky inteligentní detekce automaticky nastaví a aktualizuje prahové hodnoty v reakci na změny chování. Inteligentní zjišťování také spustí diagnostickou práci za vás a ušetří vám čas při řešení problémů.

  • Inteligentní detekce anomálií výkonu také využívá strojové inteligence k zjišťování neobvyklých vzorů v metrikách a nevyžaduje se žádná konfigurace. Na rozdíl od inteligentní detekce anomálií selhání je účelem inteligentní detekce anomálií výkonu najít segmenty zpracování využití, které by mohly být špatně obsluhovány – například konkrétními stránkami konkrétního typu prohlížeče. Analýza se provádí denně a pokud se najde nějaký výsledek, pravděpodobně bude mnohem méně naléhavé než upozornění. Naproti tomu analýza anomálií selhání se provádí nepřetržitě u příchozích dat aplikace a budete upozorněni během několika minut, pokud jsou míry selhání serveru vyšší, než se čekalo.

Pokud se zobrazí upozornění inteligentního zjišťování

Proč se mi zobrazilo toto upozornění?

  • Zjistili jsme neobvyklé zvýšení míry neúspěšných požadavků ve srovnání s normálním směrným plánem předchozího období. Po analýze selhání a přidružených dat aplikace si myslíme, že došlo k problému, na který byste se měli podívat.

Znamená to, že oznámení znamená, že mám určitě problém?

  • Snažíme se upozorňovat na přerušení nebo snížení výkonu aplikace, ale plně pochopit sémantiku a dopad na aplikaci nebo uživatele.

Takže se díváte na data aplikace?

  • Ne. Služba je zcela automatická. Oznámení získáte jenom vy. Vaše data jsou soukromá.

Musím se přihlásit k odběru tohoto upozornění?

  • Ne. Každá aplikace, která odesílá data žádosti, má pravidlo upozornění inteligentního zjišťování.

Můžu zrušit odběr nebo dostávat oznámení odeslaná kolegům?

  • Ano, v pravidlech upozornění klikněte na pravidlo inteligentního zjišťování a nakonfigurujte ho. Výstrahu můžete zakázat nebo změnit příjemce výstrahy.

Ztratil jsem e-mail. Kde na portálu najdu oznámení?

  • V protokolech aktivit. V Azure otevřete prostředek Přehledy aplikace a pak vyberte Protokoly aktivit.

Některá upozornění se týkají známých problémů a nechci je dostávat.

Další kroky

Tyto diagnostické nástroje vám pomůžou zkontrolovat data z vaší aplikace:

Inteligentní detekce jsou automatické. Ale možná byste chtěli nastavit několik dalších upozornění?