Wykrywanie inteligentne — anomalie błędów
Usługa Application Insights automatycznie wysyła alerty niemal w czasie rzeczywistym, jeśli aplikacja internetowa doświadcza nietypowego wzrostu liczby żądań, które zakończyły się niepowodzeniem. Wykrywa nietypowy wzrost liczby żądań HTTP lub wywołań zależności, które są zgłaszane jako nieudane. W przypadku żądań żądania, żądania, które zakończyły się niepowodzeniem, zwykle mają kody odpowiedzi o wartości 400 lub nowszej. Aby ułatwić klasyfikację i zdiagnozować problem, w szczegółach alertu znajduje się analiza cech błędów i powiązanych danych aplikacji. Istnieją również linki do portalu usługi Application Insights w celu dalszej diagnostyki. Funkcja nie wymaga konfiguracji ani konfiguracji, ponieważ używa algorytmów uczenia maszynowego do przewidywania normalnego współczynnika awarii.
Ta funkcja działa w przypadku dowolnej aplikacji internetowej hostowanej w chmurze lub na własnych serwerach, które generują żądania aplikacji lub dane zależności. Jeśli na przykład masz rolę procesu roboczego, która wywołuje funkcję TrackRequest() lub TrackDependency().
Po skonfigurowaniu usługi Application Insights dla projektu, a jeśli aplikacja generuje pewną minimalną ilość danych, inteligentne wykrywanie anomalii błędów trwa 24 godziny, aby poznać normalne zachowanie aplikacji, zanim zostanie włączona i będzie mogła wysyłać alerty.
Oto przykładowy alert:
Uwaga
Anomalie błędów inteligentnego narzędzia do wykrywania są obliczane dla współczynników niepowodzeń dla łącznych żądań w każdej usłudze App Insights. Te powiadomienia nie będą otrzymywać alertów dla interfejsu API ani aplikacji wysyłającej te żądania. Szczegóły alertu informują:
- Współczynnik awarii w porównaniu z normalnym zachowaniem aplikacji.
- Ilu użytkowników ma to wpływ — więc wiesz, ile się martwić.
- Wzorzec charakterystyczny skojarzony z błędami. W tym przykładzie istnieje określony kod odpowiedzi, nazwa żądania (operacja) i wersja aplikacji. Natychmiast informuje o tym, gdzie zacząć szukać kodu. Inne możliwości mogą być określoną przeglądarką lub systemem operacyjnym klienta.
- Wyjątek, ślady dziennika i błąd zależności (bazy danych lub inne składniki zewnętrzne), które wydają się być skojarzone z scharakteryzowanych błędów.
- Linki bezpośrednio do odpowiednich wyszukiwań danych w usłudze Application Insights.
Zalety wykrywania inteligentnego
Zwykłe alerty metryk informują o problemie. Jednak funkcja wykrywania inteligentnego uruchamia pracę diagnostyczną, wykonując wiele analiz, które w przeciwnym razie trzeba by zrobić samodzielnie. Wyniki są starannie spakowane, co pomaga szybko przejść do korzenia problemu.
Jak to działa
Funkcja wykrywania inteligentnego monitoruje dane odebrane z aplikacji, a w szczególności współczynniki awarii. Ta reguła zlicza liczbę żądań, dla których Successful request
właściwość jest fałsz, a liczba wywołań zależności, dla których Successful call
właściwość ma wartość false. W przypadku żądań domyślnie (chyba że Successful request == (resultCode < 400)
napiszesz niestandardowy kod do filtrowania lub generowania własnych wywołań TrackRequest ).
Wydajność aplikacji ma typowy wzorzec zachowania. Niektóre żądania lub wywołania zależności są bardziej podatne na niepowodzenie niż inne; a ogólny współczynnik awarii może wzrosnąć wraz ze wzrostem obciążenia. Wykrywanie inteligentne używa uczenia maszynowego do znajdowania tych anomalii.
Gdy dane wchodzą do usługi Application Insights z aplikacji internetowej, funkcja wykrywania inteligentnego porównuje bieżące zachowanie z wzorcami widocznymi w ciągu ostatnich kilku dni. Jeśli detektor wykryje nietypowy wzrost współczynnika awarii w porównaniu z poprzednią wydajnością, wykrywacz wyzwala bardziej szczegółową analizę.
Po wyzwoleniu analizy usługa wykonuje analizę klastra w żądaniu, które zakończyło się niepowodzeniem, aby spróbować zidentyfikować wzorzec wartości, które scharakteryzują błędy.
W przedstawionym wcześniej przykładzie analiza odkryła, że większość błędów dotyczy określonego kodu wyniku, nazwy żądania, hosta adresu URL serwera i wystąpienia roli.
Podczas instrumentacji usługi za pomocą tych wywołań analizator szuka wyjątku i błędu zależności skojarzonego z żądaniami w zidentyfikowanym klastrze. Szuka również przykładu wszystkich dzienników śledzenia skojarzonych z tymi żądaniami. Otrzymany alert zawiera te dodatkowe informacje, które mogą dostarczać kontekst wykrywania i wskazówek dotyczących głównej przyczyny wykrytego problemu.
Szczegóły logiki alertu
Wykrywanie anomalii błędów opiera się na zastrzeżonym algorytmie uczenia maszynowego, więc przyczyny wyzwalania alertu lub nie są zawsze deterministyczne. W tym przypadku podstawowymi czynnikami, których używa algorytm, są:
- Analiza procentu niepowodzeń żądań/zależności w kroczącym przedziale czasu 20 minut.
- Porównanie wartości procentowej niepowodzenia w ciągu ostatnich 20 minut do stawki w ciągu ostatnich 40 minut i ostatnich siedmiu dni. Algorytm szuka znaczących odchyleń przekraczających czas X odchylenia standardowego.
- Algorytm używa limitu adaptacyjnego dla wartości procentowej minimalnej awarii, która różni się w zależności od liczby żądań/zależności aplikacji.
- Algorytm zawiera logikę, która może automatycznie rozwiązać wyzwolony alert, jeśli problem nie zostanie już wykryty przez 8–24 godziny. Uwaga: w bieżącym projekcie. powiadomienie lub akcja nie jest wysyłana po rozwiązaniu alertu wykrywania inteligentnego. Możesz sprawdzić, czy alert wykrywania inteligentnego został rozwiązany w witrynie Azure Portal.
Zarządzanie regułami alertów anomalii błędów
Tworzenie reguły alertu
Reguła alertu Anomalies o błędach jest tworzona automatycznie po utworzeniu zasobu usługi Application Insights. Reguła jest automatycznie skonfigurowana do analizowania danych telemetrycznych w tym zasobie. Regułę można utworzyć ponownie przy użyciu interfejsu API REST platformy Azure lub szablonu usługi Resource Manager. Tworzenie reguły może być przydatne, jeśli automatyczne tworzenie reguły nie powiodło się z jakiegoś powodu lub jeśli reguła została usunięta.
Konfiguracja reguły alertu
Aby skonfigurować regułę alertu Anomalie błędów w portalu, otwórz stronę Alerty i wybierz pozycję Reguły alertów. Reguły alertów anomalii błędów są uwzględniane wraz ze wszystkimi alertami ustawionymi ręcznie.
Kliknij regułę alertu, aby ją skonfigurować.
Regułę alertu wykrywania inteligentnego można wyłączyć z portalu lub przy użyciu szablonu usługi Azure Resource Manager.
Ta reguła alertu jest tworzona z skojarzona grupa akcji o nazwie "Wykrywanie inteligentne usługi Application Insights". Domyślnie ta grupa akcji zawiera akcje roli usługi Azure Resource Manager pocztą e-mail i wysyła powiadomienia do użytkowników, którzy mają role Współautor monitorowania lub Czytelnik monitorowania w ramach subskrypcji usługi Azure Resource Manager. Możesz usunąć, zmienić lub dodać grupy akcji wyzwalane przez regułę, tak jak w przypadku każdej innej reguły alertu platformy Azure. Powiadomienia wysyłane z tej reguły alertu są zgodne ze wspólnym schematem alertu.
Usuwanie alertów
Możesz usunąć regułę alertu Anomalies o błędach.
Możesz to zrobić ręcznie na stronie Reguły alertów lub za pomocą następującego polecenia interfejsu wiersza polecenia platformy Azure:
az resource delete --ids <Resource ID of Failure Anomalies alert rule>
Zwróć uwagę, że jeśli usuniesz zasób usługi Application Insights, skojarzona reguła alertu Anomalies o błędach nie zostanie automatycznie usunięta.
Przykład ładunku elementu webhook alertu anomalii błędów
{
"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"
}
Klasyfikacja i diagnozowanie alertu
Alert wskazuje, że wykryto nietypowy wzrost liczby żądań, które zakończyły się niepowodzeniem. Prawdopodobnie wystąpił problem z aplikacją lub jej środowiskiem.
Aby dokładniej zbadać, kliknij pozycję "Wyświetl pełne szczegóły w usłudze Application Insights". Linki na tej stronie prowadzą bezpośrednio do strony wyszukiwania odfiltrowanej do odpowiednich żądań, wyjątków, zależności lub śladów. Aby dokładniej zbadać, kliknij pozycję "Wyświetl pełne szczegóły w usłudze Application Insights" linki na tej stronie przefiltrowane bezpośrednio do strony wyszukiwania przefiltrowanej do odpowiednich żądań, wyjątków, zależności lub śladów.
Możesz również otworzyć witrynę Azure Portal, przejść do zasobu usługi Application Insights dla aplikacji i otworzyć stronę Błędy.
Kliknięcie pozycji "Diagnozowanie niepowodzeń" może pomóc w poznać więcej szczegółów i rozwiązać problem.
Od procentu żądań i liczby użytkowników, których dotyczy problem, możesz zdecydować, jak pilny jest problem. W przedstawionym wcześniej przykładzie wskaźnik awarii wynoszący 78,5% jest porównywany z normalną szybkością 2,2%, wskazuje, że coś złego się dzieje. Z drugiej strony dotyczyło to tylko 46 użytkowników. Te informacje mogą pomóc w ocenie, jak poważny jest problem.
W wielu przypadkach można szybko zdiagnozować problem z podanej nazwy żądania, wyjątku, niepowodzenia zależności i danych śledzenia.
W tym przykładzie wystąpił wyjątek z usługi SQL Database z powodu osiągnięcia limitu żądań.
Przeglądanie ostatnich alertów
Kliknij pozycję Alerty na stronie zasobu usługi Application Insights, aby przejść do najnowszych wyzwolonych alertów:
W przypadku otrzymania alertu wykrywania inteligentnego
Dlaczego otrzymałem ten alert?
- Wykryliśmy nietypowy wzrost liczby żądań, które zakończyły się niepowodzeniem w porównaniu z normalnym punktem odniesienia poprzedniego okresu. Po analizie awarii i skojarzonych danych aplikacji uważamy, że istnieje problem, który należy zbadać.
Czy powiadomienie oznacza, że na pewno mam problem?
- Staramy się ostrzegać o zakłóceniach lub pogorszeniu aplikacji, ale tylko ty możesz w pełni zrozumieć semantyka i wpływ na aplikację lub użytkowników.
Więc patrzysz na moje dane aplikacji?
- L.p. Usługa jest całkowicie automatyczna. Otrzymasz tylko powiadomienia. Dane są prywatne.
Czy muszę subskrybować ten alert?
- L.p. Każda aplikacja, która wysyła dane żądania, ma regułę alertu wykrywania inteligentnego.
Czy mogę anulować subskrypcję lub otrzymywać powiadomienia wysyłane do moich współpracowników?
- Tak, w obszarze Reguły alertów kliknij regułę wykrywania inteligentnego, aby ją skonfigurować. Możesz wyłączyć alert lub zmienić adresatów alertu.
Straciłem wiadomość e-mail. Gdzie można znaleźć powiadomienia w portalu?
- Alerty anomalii błędów można znaleźć w witrynie Azure Portal na stronie alertów usługi Application Insights.
Niektóre alerty dotyczą znanych problemów i nie chcę ich otrzymywać.
- Możesz użyć funkcji pomijania reguł akcji alertów.
Następne kroki
Te narzędzia diagnostyczne ułatwiają inspekcję danych z aplikacji:
Wykrywanie inteligentne jest automatyczne. Ale może chcesz skonfigurować jeszcze kilka alertów?