Схема приложений: рассмотрение распределенных приложений

Карты приложений представляют логическую структуру распределенного приложения. Отдельные компоненты приложения определяются их свойством roleName или name в записываемой телеметрии. Эти компоненты представлены как круги на карте и называются узлами. Http-вызовы между узлами представляются как стрелки, подключающие эти узлы, называемые соединителями или ребрами. Узел, который выполняет вызов, является "источником" вызова, а принимающий узел является "целевым" для вызова.

Схема приложений позволяет выявлять сбои и проблемы с производительностью во всех компонентах распределенного приложения. Каждый узел на схеме представляет компонент приложения или его зависимости, отображая КПЭ работоспособности и состояние оповещений. Вы можете щелкнуть любой компонент, чтобы получить более подробные диагностические данные (например, события Application Insights). Если приложение использует службы Azure, то можно также выбрать данные системы диагностики Azure, например рекомендации Помощника по базам данных SQL.

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

Что такое компонент?

Компоненты — это независимо развертываемые части распределенного приложения или приложения для микрослужб. Разработчики и операционные команды могут просматривать данные телеметрии, созданные компонентами приложения, на уровне кода. Например:

  • Компоненты отличаются от "наблюдаемых" внешних зависимостей, таких как Azure SQL и Центры событий Azure, к которым у вашей команды или организации может не быть доступа (к коду или данным телеметрии).
  • Компоненты выполняются на любом количестве экземпляров серверов, ролей или контейнеров.
  • Они могут являться отдельными ресурсами Application Insights, даже если подписки отличаются. Они также могут представлять собой разные роли, связанные с одним ресурсом Application Insights. В предварительной версии схемы компоненты отображаются независимо от того, как они настроены.

Схема составных приложений

Вы увидите все данные топологии на нескольких уровнях компонентов, связанных с приложением. Компонентами могут быть различные ресурсы Application Insights или различные роли в одном ресурсе. Схема приложений находит компоненты, отслеживая HTTP-вызовы зависимостей, выполняемые между серверами, на которых установлен пакет SDK для Application Insights.

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

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

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

Screenshot that shows an example of an application map.

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

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

Diagram that shows application map details.

Анализ сбоев

Нажмите кнопку Анализ сбоев, чтобы открыть панель Сбои.

Screenshot that shows the Investigate failures button.

Screenshot that shows the Failures screen.

Анализ работы

Чтобы устранить неполадки с производительностью, нажмите кнопку Анализ работы.

Screenshot that shows the Investigate performance button.

Screenshot that shows the Performance screen.

Перейти к сведениям

Кнопка Перейти к сведениям отображает сведения о сквозных транзакциях в интерфейсе с представлениями, которые содержат данные с уровня стека вызовов.

Screenshot that shows the Go to details button.

Screenshot that shows the End-to-end transaction details screen.

Просмотр в журналах (аналитика)

Чтобы запросить и проанализировать более подробные данные о приложении, нажмите кнопку Просмотреть в журналах (аналитика).

Screenshot that shows the View in Logs (Analytics) button.

Screenshot that shows the Logs screen with a line graph that summarizes the average response duration of a request over the past 12 hours.

видны узлы

Чтобы просмотреть активные оповещения и основные правила, которые их активируют, нажмите кнопку Оповещения.

Screenshot that shows the Alerts button.

Screenshot that shows a list of alerts.

Настройка или переопределение имени облачной роли

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

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

Примечание.

Пакет SDK или агент Application Insights автоматически добавляет свойство имени облачной роли в данные телеметрии, генерируемые компонентами в среде Службы приложений Azure.

Напишите пользовательский код TelemetryInitializer

using Microsoft.ApplicationInsights.Channel;
using Microsoft.ApplicationInsights.Extensibility;

namespace CustomInitializer.Telemetry
{
    public class MyTelemetryInitializer : ITelemetryInitializer
    {
        public void Initialize(ITelemetry telemetry)
        {
            if (string.IsNullOrEmpty(telemetry.Context.Cloud.RoleName))
            {
                //set custom role name here
                telemetry.Context.Cloud.RoleName = "Custom RoleName";
                telemetry.Context.Cloud.RoleInstance = "Custom RoleInstance";
            }
        }
    }
}

Приложения ASP.NET: загрузка инициализатора в активную конфигурацию TelemetryConfiguration

В ApplicationInsights.config:

    <ApplicationInsights>
      <TelemetryInitializers>
        <!-- Fully qualified type name, assembly name: -->
        <Add Type="CustomInitializer.Telemetry.MyTelemetryInitializer, CustomInitializer"/>
        ...
      </TelemetryInitializers>
    </ApplicationInsights>

Для веб-приложений ASP.NET также можно создать экземпляр инициализатора в коде, например в Global.aspx.cs:

 using Microsoft.ApplicationInsights.Extensibility;
 using CustomInitializer.Telemetry;

    protected void Application_Start()
    {
        // ...
        TelemetryConfiguration.Active.TelemetryInitializers.Add(new MyTelemetryInitializer());
    }

Примечание.

Добавление инициализатора с помощью ApplicationInsights.config или TelemetryConfiguration.Active не поддерживается для приложений ASP.NET Core.

Приложения ASP.NET Core: загрузка инициализатора в TelemetryConfiguration

Чтобы добавить новый экземпляр TelemetryInitializer для приложений ASP.NET Core, нужно добавить его в контейнер внедрения зависимостей, как показано далее. Это действие выполняется в методе ConfigureServices класса Startup.cs.

 using Microsoft.ApplicationInsights.Extensibility;
 using CustomInitializer.Telemetry;
 public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton<ITelemetryInitializer, MyTelemetryInitializer>();
}

Основные сведения об имени облачной роли в контексте схемы приложения

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

Screenshot that shows an application map example.

На схеме приложения выше каждое из имен в зеленых полях представляет значение имени облачной роли для различных аспектов конкретного распределенного приложения. Для этого приложения имеются роли Authentication, acmefrontend, Inventory Management и Payment Processing Worker Role.

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

Для официальных определений:

   [Description("Name of the role the application is a part of. Maps directly to the role name in azure.")]
    [MaxStringLength("256")]
    705: string      CloudRole = "ai.cloud.role";

    [Description("Name of the instance where the application is running. Computer name for on-premises, instance name for Azure.")]
    [MaxStringLength("256")]
    715: string      CloudRoleInstance = "ai.cloud.roleInstance";

Экземпляр облачной роли также может пригодиться в сценариях, когда имя облачной роли сообщает о наличии ошибки в веб-интерфейсе. Но в веб-интерфейсе может быть запущено несколько серверов с балансировкой нагрузки. Важной задачей может стать детальное изучение проблемы с помощью запросов Kusto и определение области проблемы: все серверы или экземпляры веб-интерфейса или только один.

Интеллектуальное представление Сценария, когда может потребоваться переопределить значение для экземпляра облачной роли, может быть, если ваше приложение работает в контейнерной среде. В таком случае сведений о сервере, на котором возникла конкретная проблема, будет недостаточно.

Дополнительные сведения о переопределении имени облачной роли с помощью инициализаторов телеметрии см. в разделе о добавлении свойства ITelemetryInitializer.


Фильтры карты приложений

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

Создание фильтров карты приложений

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

A screenshot of the Add Filter button.

Откроется диалоговое окно с тремя разделами: 1) Выбор типа фильтра, 2) Выбор параметров фильтра и 3) Проверка.

A screenshot with the Node Filter radio button selected.

A screenshot with the Connector Edge Filter radio button selected.

Первый раздел имеет два варианта:

  1. Фильтр узлов
  2. фильтр Подключение or (edge)

Содержимое в других разделах изменяется на основе выбранного параметра.

Фильтры узлов

Фильтры узлов позволяют пользователю оставлять только выбранные узлы на карте и скрывать остальные. Фильтр узла проверка каждому узлу, если он содержит свойство (например, его имя) со значением, соответствующим значению поиска через заданный оператор. Если узел удаляется фильтром узлов, все его соединители (ребра) также удаляются.

Для узлов доступны три параметра:

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

    • "Узлы и источники, целевые объекты"- Это означает, что узлы, соответствующие параметрам поиска, будут включены в результирующую карту, а узлы, которые являются источниками или целевыми объектами для соответствующего узла, также будут включены, даже если они не имеют значений свойств, соответствующих поиску. Исходные и целевые узлы совместно называются узлами Подключение.

    • "Узлы и источники"-То же, что и выше, но целевые узлы не включаются в результаты автоматически.

    • "Узлы и целевые объекты"-То же, что и выше, но исходные узлы не включаются автоматически.

    • "Только узлы" — все узлы в результирующем сопоставлении должны иметь значение свойства, соответствующее.

  • Оператор — это тип проверка, который будет выполняться для значений свойств каждого узла:

    • содержит

    • !contains (не содержит)

    • == (равно)

    • != (не равно)

  • "Значение поиска" — это текст, который должен содержаться, не содержится, равно или не равно значению свойства узла. Некоторые значения, найденные на узлах на карте, отображаются в раскрывающемся списке. Любое произвольное значение можно ввести, нажав кнопку "Создать параметр..." в раскрывающемся списке.

Например, на снимке экрана ниже фильтр настраивается для выбора узлов , содержащих текст "-запад".Исходные и т-узлыarget также будут включены в результирующую карту. На том же снимке экрана пользователь может выбрать одно из значений, найденных на карте, или создать параметр, который не является точным совпадением с одним, найденным на карте.

A screenshot with the filter configured to select nodes that contain the text west.

фильтры Подключение or (edge)

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

фильтры Подключение or требуют трех параметров:

  • "Фильтровать соединители по" позволяет пользователю выбрать, какое свойство соединителя следует использовать:

    • "Соединитель ошибок (выделенный красный)" выбирает соединители на основе их цвета (красный или нет). Значение не может быть введено для этого типа фильтра, только оператор "==" или "!=" означает "соединитель с ошибками" и "соединитель без ошибок".

    • "Частота ошибок" использует среднюю частоту ошибок для соединителя--- число неудачных вызовов, разделенных на количество всех вызовов---распожатые в процентах. Например, значение "1" будет ссылаться на 1% неудачных вызовов.

    • "Средняя длительность вызова (***мс)" использует только то, что: средняя длительность всех вызовов, представленных соединителем, в миллисекундах. Например, значение "1000" будет ссылаться на вызовы, которые в среднем составляли 1 секунду.

    • "Число вызовов" использует общее количество вызовов, представленных соединителем.

  • Оператор — это сравнение, которое будет применяться между свойством соединителя и значением, введенным ниже. Параметры изменяются: "Соединитель ошибок" имеет равные или не равные параметры; все остальные имеют больше или меньше.

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

    • Некоторые из этих записей имеют обозначение "(Pxx)", которые являются процентильными уровнями. Например, фильтр "Средняя длительность вызова" может иметь значение "200 (P90)", указывающее, что 90% всех соединителей (независимо от количества вызовов, которые они представляют), имеют менее 200 мс продолжительности вызова.

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

Раздел "Рецензирование"

В разделе "Рецензирование" содержатся текстовые и визуальные описания того, что будет делать фильтр, что должно быть полезно при обучении работе фильтров:

A screenshot of the Review section with node in focus.

A screenshot of the Review section depicting an average call duration greater than 42 milliseconds.

Использование фильтров в карте приложений

Фильтрация интерактивности

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

Фильтры отображаются как округленные кнопки над картой приложения:

A screenshot displaying the rounded filter buttons above the application map.

Щелкнув A screenshot of a rounded X button. фильтр, этот фильтр будет удален. Нажатие кнопки в другом месте позволяет пользователю изменять значения фильтра. Когда пользователь изменяет значения в фильтре, новые значения применяются таким образом, чтобы карта была предварительной версией изменения. При нажатии кнопки "Отмена" фильтр восстанавливается так, как это было до редактирования.

A screenshot displaying the Configure Connector Filter section with a Cancel button.

Повторное применение фильтров

Фильтры можно повторно использовать двумя способами:

  • Кнопка "Копировать ссылку" на панели инструментов над картой кодирует сведения о фильтре в скопированном URL-адресе. Эту ссылку можно сохранить в закладках браузера или предоставить другим пользователям общий доступ. "Ссылка копирования" сохраняет значение длительности, но не абсолютное время, поэтому карта, показанная в дальнейшем, может отличаться от той, которая наблюдалась при создании ссылки.

  • Закрепление A screenshot displaying the dashboard pin button. панели мониторинга находится рядом с заголовком панели "Карта приложений". Эта кнопка закрепляет карту на панели мониторинга вместе с фильтрами, примененными к ней. Это действие может быть полезно для фильтров, которые часто интересны. Например, пользователь может закрепить карту с фильтром "Соединитель ошибок", примененный к нему, и в представлении панели мониторинга будут отображаться только узлы с ошибками в вызовах HTTP.

Фильтрация сценариев использования

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

  • Отображение только ошибок, которые отображаются значительными с помощью фильтра "Соединитель ошибок" вместе с интеллектуальным представлением:
    A screenshot displaying the Last 24 hours and Highlighted Errors filters.A screenshot displaying the Intelligent Overview toggle.

  • Скрытие соединителей с низким трафиком без ошибок, чтобы быстро сосредоточиться на проблемах, которые оказывают большее влияние: A screenshot displaying the Last 24 hours, calls greater than 876, and highlighted errors filters.

  • Отображение соединителей с высоким трафиком с высокой средней продолжительностью, чтобы сосредоточиться на потенциальных проблемах производительности: A screenshot displaying the Last 24 hours, calls greater than 3057, and average time greater than 467 filters.

  • Отображение определенной части распределенного приложения (требуется подходящее соглашение об именовании roleName): A screenshot displaying the Last 24 hours and Connected Contains West filters.

  • Скрытие типа зависимостей, слишком шумного: A screenshot displaying the Last 24 hours and Nodes Contains Storage Accounts filters.

  • Отображение только соединителей с более высоким уровнем ошибок, чем определенное значение A screenshot displaying the Last 24 hours and Errors greater than 0.01 filters.


Интеллектуальное представление карты приложений

В следующих разделах описано интеллектуальное представление.

Обзор интеллектуального представления

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

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

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

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

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

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

Screenshot that shows the Application Map user interface with options to toggle Intelligent view and provide feedback.

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

Screenshot that shows the Application Map user interface section about actionable insights.

Чтобы начать устранение неполадок, нажмите кнопку Анализ сбоев. На открывшейся панели Сбои проверьте, является ли обнаруженная проблема первопричиной ошибки. Если красные ребра отсутствуют, модель машинного обучения не обнаружила потенциальных инцидентов в зависимостях приложения.

Чтобы оставить отзыв, нажмите кнопку Обратная связь на схеме.

Как интеллектуальное представление определяет, какие ребра выделять красным цветом?

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

К подобным характеристикам можно отнести следующее:

  • Частота сбоев
  • Число запросов
  • Длительность
  • Аномалии в данных
  • Типы зависимостей

Для сравнения в обычном представлении используется только необработанная частота сбоев.

Как работает чувствительность интеллектуального представления?

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

Настройте чувствительность, чтобы достичь требуемого доверительного уровня по выделенным ребрам.

Параметр чувствительности Результат
Высокая Будет выделено меньше ребер.
Средний (по умолчанию) Будет выделено сбалансированное число ребер.
Низкая Будут выделены дополнительные ребра.

Ограничения интеллектуального представления

Интеллектуальное представление имеет ряд ограничений:

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

Чтобы оставить отзыв, см. раздел Отзывы на портале.


Устранение неполадок

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

Общие

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

    Список поддерживаемых пакетов SDK см. в статье Языки, платформы и интеграции Application Insights.

  2. Обновите все компоненты до последней версии пакета SDK.

  3. Если вы используете Функции Azure с C#, выполните обновление до версии 2 Функций Azure.

  4. Убедитесь, что имя облачной роли настроено должным образом.

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

Слишком много узлов на схеме

Схема приложений формирует узел приложения для каждого уникального имени облачной роли, присутствующей в телеметрии запросов. Также создается узел зависимости для каждой уникальной комбинации типа, целевого объекта и имени облачной роли.

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

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

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

Чтобы устранить эту проблему, необходимо перенастроить инструментирование: правильно задать имя облачной роли, тип зависимости и целевой объект зависимости.

  • Целевой объект зависимости должен представлять ее логическое имя. Во многих случаях оно эквивалентно имени сервера или ресурса зависимости. Например, при наличии зависимостей HTTP оно принимает значение имени узла. Это значение не должно содержать уникальных идентификаторов или параметров, которые изменяются от запроса к запросу.

  • Тип зависимости должен представлять ее логический тип. Например, распространенными типами зависимостей являются HTTP, SQL или BLOB-объект Azure. Это значение не должно содержать уникальных идентификаторов.

  • Назначение имени облачной роли описано в разделе Настройка или переопределение имени облачной роли.

Интеллектуальное представление

Распространенные вопросы по устранению неполадок с интеллектуальным представлением.

Почему это ребро не выделено даже при низкой чувствительности?

Зависимость может казаться нерабочей, но модель не выделяет ее как потенциальный инцидент в следующих случаях:

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

Почему ребро выделено?

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

Почему интеллектуальное представление не загружается?

Если интеллектуальное представление не загружается, задайте для настроенного интервала времени шесть дней или меньше.

Почему интеллектуальное представление долго загружается?

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

Включите интеллектуальное представление только для одного ресурса Application Insights.

Screenshot that shows the Update map components button in the Application Map user interface.

Отзывы на портале

Чтобы оставить свой отзыв, воспользуйтесь соответствующей функцией.

Screenshot that shows the Feedback option.

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