Inteligentní zjišťování – anomálie selhání

Aplikace Přehledy vás automaticky upozorní téměř v reálném čase, pokud u vaší webové aplikace dochází k neobvyklému nárůstu míry neúspěšných požadavků. Zjistí neobvyklý nárůst míry požadavků HTTP nebo volání závislostí, které jsou hlášeny jako neúspěšné. U požadavků mají neúspěšné požadavky obvykle kódy odpovědí 400 nebo vyšší. Pro usnadnění třídění a diagnostiky problému se v podrobnostech výstrah zobrazí 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. Funkce nepotřebuje žádné nastavení ani konfiguraci, protože k predikci normální míry selhání používá algoritmy strojového učení.

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, trvá inteligentní zjišťování anomálií selhání 24 hodin, než se naučí normální chování aplikace, než se zapne a může odesílat výstrahy.

Tady je ukázková výstraha:

Ukázková výstraha inteligentního zjišťování zobrazující analýzu clusteru týkající se selhání

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

  • Míra selhání v porovnání s normálním chováním aplikace.
  • Kolik uživatelů se to týká – abyste věděli, kolik se jich bojíte.
  • 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 charakterizováný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ás můžou informovat o problému. Inteligentní zjišťování ale spustí diagnostickou práci za vás a provede většinu analýzy, kterou byste jinak museli udělat sami. Výsledky získáte přehledně zabalené, což vám pomůže rychle se dostat k kořenu problému.

Jak to funguje

Inteligentní zjišťování monitoruje data přijatá z vaší aplikace a zejména míry 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. Pro požadavky ve výchozím nastavení (pokud nezapíšete vlastní kód pro Successful request == (resultCode < 400) filtrování nebo generování vlastních volání TrackRequest).

Výkon vaší aplikace má typický vzor chování. Některé žádosti nebo volání závislostí jsou 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í využívá strojové učení k nalezení těchto anomálií.

Vzhledem k tomu, že data přicházejí do aplikace Přehledy z webové aplikace, inteligentní zjišťování porovnává aktuální chování se vzory, které se během posledních několika dnů zobrazily. Pokud detektor zjistí neobvyklé zvýšení míry selhání oproti předchozímu výkonu, spustí detektor podrobnější analýzu.

Při aktivaci analýzy služba provede analýzu clusteru u neúspěšného požadavku, aby se pokusila identifikovat vzor hodnot, které charakterizují selhání.

V příkladu uvedeném dříve 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.

Při instrumentaci služby s těmito voláními hledá analyzátor výjimku a selhání závislosti, které jsou přidružené k žádostem v identifikovaném clusteru. Vyhledá také příklad všech protokolů trasování přidružených k těmto požadavkům. Upozornění, které obdržíte, obsahuje tyto další informace, které můžou poskytnout kontext detekce a nápovědy k původní příčině zjištěného problému.

Podrobnosti logiky upozornění

Detekce anomálií selhání spoléhá na vlastní algoritmus strojového učení, takže důvody pro aktivaci nebo neaktivování upozornění nejsou vždy deterministické. Díky tomu jsou primární faktory, které algoritmus používá, následující:

  • Analýza procenta selhání požadavků a závislostí v časovém intervalu 20 minut
  • Porovnání procentuální hodnoty selhání za posledních 20 minut s sazbou za posledních 40 minut a posledních 7 dnů. Algoritmus hledá významné odchylky, které překračují X-krát směrodatné odchylky.
  • Algoritmus používá adaptivní limit pro minimální procento selhání, které se liší v závislosti na objemu požadavků a závislostí aplikace.
  • Algoritmus obsahuje logiku, která dokáže automaticky vyřešit aktivované upozornění, 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í. Na webu Azure Portal můžete zkontrolovat, jestli se vyřešilo upozornění inteligentního zjišťování.

Správa pravidel upozornění anomálií selhání

Vytvoření pravidla upozornění

Pravidlo upozornění anomálií selhání se vytvoří automaticky při vytvoření prostředku Přehledy aplikace. Pravidlo se automaticky nakonfiguruje tak, aby analyzovalo telemetrii daného prostředku. Pravidlo můžete znovu vytvořit pomocí rozhraní Azure REST API nebo pomocí šablony Resource Manageru. Vytvoření pravidla může být užitečné, pokud automatické vytvoření pravidla z nějakého důvodu selhalo nebo pokud jste pravidlo odstranili.

Konfigurace pravidla upozornění

Pokud chcete nakonfigurovat pravidlo upozornění anomálií selhání na portálu, otevřete stránku Upozornění a vyberte Pravidla upozornění. Pravidla upozornění anomálií selhání jsou součástí všech výstrah, které nastavíte ručně.

Na stránce Prostředek Přehledy aplikace klikněte na dlaždici Upozornění a potom na Spravovat pravidla upozornění.

Kliknutím na pravidlo upozornění ho nakonfigurujte.

Obrazovka konfigurace pravidla

Pravidlo upozornění inteligentního zjišťování můžete zakázat na portálu nebo pomocí šablony Azure Resource Manageru.

Toto pravidlo upozornění se vytvoří s přidruženou skupinou akcí s názvem "Application Přehledy Smart Detection". Ve výchozím nastavení tato skupina akcí obsahuje akce role Azure Resource Manageru e-mailem a odesílá oznámení uživatelům, kteří mají ve vašem předplatném role Přispěvatel monitorování nebo Čtenář monitorování. Můžete odebrat, změnit nebo přidat skupiny akcí, které pravidlo aktivuje, stejně jako u jakéhokoli jiného pravidla upozornění Azure. Oznámení odeslaná z tohoto pravidla upozornění se řídí běžným schématem upozornění.

Odstranění výstrah

Pravidlo upozornění anomálií selhání můžete odstranit.

Můžete to provést ručně na stránce Pravidla upozornění nebo pomocí následujícího příkazu Azure CLI:

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

Všimněte si, že pokud odstraníte prostředek Přehledy aplikace, přidružené pravidlo upozornění anomálií selhání se neodstraní automaticky.

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

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

Určení priorit a diagnostika výstrahy

Výstraha indikuje, ž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 Přehledy aplikace. Odkazy na této stránce vás přesměrují přímo na vyhledávací stránku filtrovanou na relevantní požadavky, výjimku, závislost nebo trasování. Pokud chcete provést další šetření, klikněte na Zobrazit úplné podrobnosti v aplikaci Přehledy odkazy na této stránce vás přesměrují přímo na vyhledávací stránku filtrovanou na relevantní požadavky, výjimku, závislost nebo trasování.

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

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

Diagnostické vyhledávání.

V procentech požadavků a počtu ovlivněných uživatelů můžete rozhodnout, jak je problém naléhavé. V příkladu uvedeném dříve 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 se to týká jenom 46 uživatelů. Tyto informace vám můžou pomoct vyhodnotit, jak je problém závažný.

V mnoha případech můžete problém rychle diagnostikovat 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 ze služby SQL Database kvůli dosažení limitu požadavků.

Podrobnosti o neúspěšných žádostech

Kontrola nedávných upozornění

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

Souhrn výstrah

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

Proč se mi zobrazilo toto upozornění?

  • Zjistili jsme neobvyklý nárůst 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á oznámení, že mám určitě problém?

  • Snažíme se upozornit na přerušení nebo snížení výkonu aplikace, ale jenom vy plně rozumíte sémantice a dopadu na aplikaci nebo uživatele.

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

  • Ne. Služba je zcela automatická. Oznámení dostanete 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 požadavku, má pravidlo upozornění inteligentního zjišťování.

Můžu se odhlásit nebo dostávat oznámení odeslaná mým 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ýstrahy anomálií selhání najdete na webu Azure Portal na stránce upozornění Přehledy aplikace.

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é. Možná byste ale chtěli nastavit další upozornění?