Интеллектуальное обнаружение аномальных сбоев

Application Insights автоматически уведомляет вас (почти в реальном времени), если работа веб-приложения сопровождается чрезмерно частыми неудачными запросами. Эта служба обнаруживает необычное увеличение числа невыполненных HTTP-запросов или вызовов зависимостей. Невыполненными обычно считаются запросы с кодом ответа 400 или больше. Чтобы вам было проще рассмотреть и диагностировать проблему, в подробностях оповещения приводится анализ характеристик сбоев и важные данные приложения. Кроме того, даются ссылки на портал Application Insights для дальнейшей диагностики. Эта функция не требует настройки, так как использует алгоритмы машинного обучения для прогнозирования нормальной частоты невыполненных запросов.

Эта функция работает для любого веб-приложения, размещенного в облаке или на собственных серверах, которые создают запрос приложения или данные зависимостей. (например, при наличии рабочей роли, вызывающей TrackRequest() или TrackDependency()).

После настройки приложения Аналитика для проекта и если приложение создает определенный минимальный объем данных, интеллектуальное обнаружение аномалий сбоя занимает 24 часа, чтобы узнать нормальное поведение приложения, прежде чем он включен и может отправлять оповещения.

Вот пример оповещения:

Пример оповещения системы интеллектуального обнаружения, содержащий связанный анализ кластера после сбоя.

Сведения об оповещении сообщают вам:

  • Количество сбоев по сравнению с обычным поведением приложения.
  • Количество затронутых пользователей, чтобы вы знали, насколько все серьезно.
  • Шаблон характеристик, связанный с ошибками. В этом примере указаны конкретный код ошибки, имя запроса (операция) и версия приложения. Это позволяет сразу же определить фрагмент кода, с которого следует начать поиск. К другим возможностям может относиться определенный тип браузера или клиентской операционной системы.
  • Исключения, трассировки журналов и сбои в зависимостях (базах данных или других внешних компонентах), которые могут быть связаны с описанными ошибками.
  • Прямые ссылки на соответствующие поиски по данным в Application Insights.

Преимущества интеллектуального обнаружения

Обычные оповещения метрик сообщают о возможном наличии проблемы. Но система интеллектуального обнаружения автоматически запускает диагностику, выполняя примерно такой же анализ, который вы проводили бы самостоятельно. Вы получаете тщательно подобранные результаты, что помогает быстро выявить первопричину проблемы.

Как это работает

Система интеллектуального обнаружения отслеживает поступающие из вашего приложения данные, в особенности частоту сбоев. Это правило подсчитывает число запросов, для которых свойство Successful request имеет значение false, и количество вызовов зависимостей, для которых свойство Successful call имеет значение false. Для запросов по Successful request == (resultCode < 400) умолчанию (если вы не пишете пользовательский код для фильтрации или создания собственных вызовов TrackRequest ).

Производительность вашего приложения демонстрирует типичный шаблон поведения. Некоторые запросы или вызовы зависимостей более подвержены сбоям, чем другие; и общая частота сбоев может увеличиться по мере увеличения нагрузки. Для выявления таких аномалий система интеллектуального обнаружения использует машинное обучение.

По мере поступления в Application Insights данных из веб-приложения система интеллектуального обнаружения сравнивает текущее поведение с шаблонами, зарегистрированными за последние несколько дней. Если детектор обнаруживает ненормальный рост частоты сбоев по сравнению с предыдущей производительностью, детектор активирует более подробный анализ.

При запуске анализа служба анализирует кластер по неудачному запросу, чтобы попытаться определить шаблон значений, который характеризует отказы.

В примере, показанном ранее, анализ обнаружил, что большинство сбоев относятся к определенному коду результатов, имени запроса, узлу URL-адреса сервера и экземпляру роли.

При инструментировании службы с этими вызовами анализатор ищет исключение и сбой зависимостей, связанных с запросами в определенном кластере. Он также ищет пример любых журналов трассировки, связанных с этими запросами. Получаемая оповещение содержит эти дополнительные сведения, которые могут предоставить контекст обнаружению и намеку на первопричину обнаруженной проблемы.

Сведения о логике оповещений

Обнаружение аномалий сбоя зависит от собственного алгоритма машинного обучения, поэтому причины запуска оповещений или не всегда детерминированные. Таким образом, основными факторами, которые использует алгоритм, являются:

  • Анализ процента неудачных запросов и зависимостей в скользящем временном окне, составляющем 20 минут.
  • Сравнение процента сбоев за последние 20 минут с скоростью за последние 40 минут и последние семь дней. Алгоритм ищет значительные отклонения, превышающие X-раз стандартного отклонения.
  • Алгоритм использует адаптивное ограничение для минимального процента сбоев, которое зависит от объема запросов или зависимостей приложения.
  • Алгоритм включает логику, которая может автоматически устранить запущенное оповещение, если проблема больше не обнаружена в течение 8–24 часов. Примечание. В текущей версии Уведомление или действие не отправляется при разрешении оповещения интеллектуального обнаружения. Вы можете проверить, разрешено ли оповещение системы интеллектуального обнаружения, на портале Azure.

Управление правилами оповещений об аномалиях сбоев

Создание правила генерации оповещений

Правило генерации оповещений о сбоях создается автоматически при создании ресурса приложения Аналитика. Правило автоматически настраивается для анализа телеметрии в этом ресурсе. Правило можно создать повторно с помощью REST API Azure или с помощью шаблона Resource Manager. Создание правила может быть полезно, если автоматическое создание правила завершилось сбоем по какой-либо причине или если вы удалили правило.

Конфигурация правила генерации оповещений

Чтобы настроить правило оповещений об аномалиях на портале, откройте страницу "Оповещения" и выберите "Правила генерации оповещений". Правила оповещений о сбоях включаются вместе с любыми оповещениями, заданными вручную.

Щелкните плитку

Щелкните правило генерации оповещений, чтобы настроить его.

Экран настройки правила.

Правило генерации оповещений интеллектуального обнаружения можно отключить на портале или с помощью шаблона Azure Resource Manager.

Это правило генерации оповещений создается с связанной группой действий с именем "Приложение Аналитика интеллектуальное обнаружение". По умолчанию эта группа действий содержит действия роли Azure Resource Manager электронной почты и отправляет уведомления пользователям, у которых есть роли "Участник мониторинга" или "Читатель мониторинга" в подписке Azure Resource Manager. Вы можете удалить, изменить или добавить группы действий, которые активируются правилом, как и для любого другого правила генерации оповещений Azure. Уведомления, отправленные из этого правила генерации оповещения, соответствуют общей схеме оповещений.

Удаление оповещений

Вы можете удалить правило оповещений об аномалиях сбоя.

Это можно сделать вручную на странице правил генерации оповещений или с помощью следующей команды Azure CLI:

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

Обратите внимание, что при удалении ресурса Application Insights связанное правило генерации оповещений об аномалиях сбоев не удаляется автоматически.

Пример полезных данных веб-перехватчика для оповещения об аномальных сбоях

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

Рассмотрение и диагностика проблемы

Оповещение означает, что обнаружен чрезмерный рост частоты невыполненных запросов. Скорее всего, возникла проблема с приложением или его средой.

Для дальнейшего изучения нажмите кнопку "Просмотреть полные сведения в приложении Аналитика". Ссылки на этой странице позволяют напрямую переходить к странице поиска, отфильтрованной по соответствующим запросам, исключениям, зависимостям или трассировкам. Для дальнейшего изучения щелкните "Просмотреть полные сведения в приложении Аналитика" ссылки на этой странице, чтобы перейти на страницу поиска, отфильтрованную по соответствующим запросам, исключениям, зависимостям или трассировкам.

Вы также можете открыть портал Azure, перейти к ресурсу Application Insights для приложения и открыть страницу "Сбои".

Щелкнув "Диагностика сбоев", вы можете получить дополнительные сведения и устранить проблему.

Поиск по журналу диагностики.

В зависимости от процента запросов и числа вовлеченных пользователей вы можете решить, насколько срочно необходимо решить проблему. В приведенном выше примере скорость сбоя 78,5% сравнивается с нормальной частотой 2,2%, указывает на то, что происходит что-то плохое. С другой стороны, она затронула только 46 пользователей. Эта информация поможет вам оценить, насколько серьезна проблема.

Во многих случаях можно быстро диагностировать проблему из имени запроса, исключения, сбоя зависимостей и предоставленных данных трассировки.

В нашем примере поступило исключение от Базы данных SQL, связанное с достижением лимита запросов.

Сведения о невыполненном запросе.

Просмотр последних оповещений

Щелкните Оповещения на странице ресурсов Application Insights, чтобы получить последние сработавшие оповещения.

Сводка оповещений.

При возникновении оповещения интеллектуального обнаружения

Почему я получил это оповещение?

  • Мы обнаружили аномальное увеличение количества неудачных запросов по сравнению с обычными показателями за предыдущий период. После анализа сбоев и связанных данных приложения мы считаем, что возникла проблема.

Уведомление означает, что определенно возникла какая-то неполадка?

  • Мы оповещать о нарушении или ухудшении работы приложения, однако только вы имеете полное представление о семантике и влиянии на приложение или пользователей.

Итак, вы просматриваете данные приложения?

  • № Служба работает полностью в автоматическом режиме. Уведомления получаете только вы. Ваши данные остаются конфиденциальными.

Нужно ли мне подписаться на это оповещение?

  • № У каждого приложения, которое отправляет данные запросов, имеется правило генерации оповещений интеллектуального обнаружения.

Можно отменить подписку или настроить пересылку уведомлений моим коллегам?

  • Да, в области "Правила генерации оповещений" щелкните правило интеллектуального обнаружения, чтобы настроить его. Вы можете отключить это оповещение или изменить его получателей.

Не могу найти письмо. Где найти уведомления на портале?

  • Оповещения об аномалиях сбоя можно найти на странице оповещений портал Azure приложения Аналитика.

Некоторые из оповещений относятся к известным проблемам, и я не хочу их получать.

Следующие шаги

Эти диагностические средства позволяют проверять данные, поступающие из приложения:

Интеллектуальное обнаружение действует автоматически. но, возможно, вам потребуется настроить некоторые дополнительные оповещения.