Inteligentní zjišťování – anomálie selhání
Application Insights 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. Existují také odkazy na portál Application Insights 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í Application Insights 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 aplikace zapne a může odesílat výstrahy.
Tady je ukázková výstraha:
Poznámka:
Anomálie selhání inteligentního detektoru se počítají pro míru selhání u celkových požadavků v jednotlivých App Insights. Tato oznámení nebudou upozorňovat na rozhraní API ani aplikace, které tyto požadavky odesílají. 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 Application Insights.
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í.
S tím, jak data přicházejí do Application Insights z vaší webové aplikace, inteligentní zjišťování porovnává aktuální chování se vzory, které se v posledních několika dnech 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 Application Insights. 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ě.
Kliknutím na pravidlo upozornění ho nakonfigurujte.
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 Inteligentní zjišťování Application Insights. 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 Application Insights, 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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/test-group/providers/microsoft.insights/components/test-rule",
"targetResourceName": "test-rule",
"targetResourceGroup": "test-group",
"targetResourceType": "microsoft.insights/components",
"sourceCreatedId": "1a0a5b6436a9b2a13377f5c89a3477855276f8208982e0f167697a2b45fcbb3e",
"alertRule": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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\":\"aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e\",\"ResourceGroup\":\"test-group\",\"Name\":\"test-rule\"}/SelectedItemGroup/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/test-group/providers/microsoft.insights/components/test-rule/providers/Microsoft.AlertsManagement/alerts/cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a",
"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 Application Insights. 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 prozkoumat další informace, klikněte na Zobrazit úplné podrobnosti v Application Insights. 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 k prostředku Application Insights pro vaši aplikaci a otevřít stránku Selhání.
Kliknutím na Diagnostikovat selhání získáte další podrobnosti a problém vyřešíte.
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ů.
Kontrola nedávných upozornění
Kliknutím na výstrahy na stránce prostředku Application Insights se dostanete k nejnovějším aktivovaným upozorněním:
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í?
- Upozornění anomálií selhání najdete na webu Azure Portal na stránce upozornění Application Insights.
Některá upozornění se týkají známých problémů a nechci je dostávat.
- Můžete použít funkci potlačení pravidel akcí upozornění.
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í?