Рекомендации по архитектуре для Application Insights

Application Insights — это расширяемая служба управления производительностью приложений, которую можно использовать для мониторинга динамических приложений и автоматического обнаружения аномалий производительности. Он включает мощные средства аналитики, помогающие диагностировать проблемы и понять, как пользователи взаимодействуют с приложением. Это руководство по архитектуре предлагает лучшие практики для Application Insights на основе пяти столпов фреймворка Azure Well-Architected Framework.

Область технологий

В этом руководстве рассматриваются взаимосвязанные решения для следующих ресурсов Azure:

  • Application Insights
  • Рабочие области Log Analytics

Note

Application Insights хранит и предоставляет данные в рабочей области Log Analytics. При оценке метрик сохраните Log Analytics в качестве критической зависимости от Application Insights. Дополнительные сведения см. в статьеWell-Architected Framework с точки зрения Log Analytics.

Reliability

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

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

Контрольный список разработки рабочей нагрузки

Начните стратегию проектирования на основе контрольного списка для проверки надежности. Определите релевантность этого вашим бизнес-требованиям и учитывайте зависимость от Log Analytics. Расширьте стратегию, чтобы включить дополнительные подходы по мере необходимости.

  • Выравнивайте структуру мониторинга приложений с бизнес-целями и избегайте ненужных сложностей. Определите количество необходимых ресурсов Application Insights и места их развертывания.

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

  • Создайте комплексный план устойчивости.

    1. Начните с анализа отказоустойчивости, чтобы определить потенциальные сценарии, когда Application Insights может выйти из строя или стать недоступным. Эти причины могут включать проблемы сети, проблемы проверки подлинности или нарушения работы службы.
    2. Определите, как должна вести себя ваша нагрузка, если Application Insights недоступен при загрузке или в процессе выполнения, на основе критичности мониторинга приложений для ваших бизнес-целей. Определите и задокументируйте ожидаемое поведение рабочей нагрузки.
    3. Проверьте план устойчивости. Например, можно проверить сбои сети с помощью правила группы безопасности сети и аутентифицировать ошибки, изменив строку подключения.
  • Запланируйте устойчивость рабочей области и восстановление, определив целевые объекты для компонентов сбора данных.

    1. Оцените критичность собираемых данных и определите, следует ли восстановить их.
    2. Просмотрите ограничения службы для рабочей области Application Insights и Log Analytics , чтобы понять ограничения на сбор и хранение данных, а также другие аспекты службы.
    3. Рассмотрите возможность перехода в выделенный кластер , чтобы воспользоваться преимуществами устойчивости рабочей области, когда доступность данных телеметрии Application Insights в течение определенного периода хранения является критически важной для бизнеса.
    4. Используйте параметры диагностики для экспорта журналов и метрик платформы в выбранное место (например, учетная запись хранения) для резервного копирования и восстановления.
  • Реализуйте своевременную и надежную стратегию масштабирования для планирования роста приема данных. Отслеживайте и настраивайте ограничения на выборку и прием данных по мере роста трафика, чтобы предотвратить потерю данных из-за выборки или превышения ежедневного ограничения. Это помогает обеспечить эффективное масштабирование процесса приема данных с увеличением трафика.

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

Рекомендации по конфигурации

Recommendation Benefit
Используйте один ресурс Application Insights на рабочую нагрузку для каждой среды, например один для разработки, один для промежуточного хранения и один для рабочей среды. Использование нескольких ресурсов Application Insights предотвращает перемешивание телеметрии из разных версий приложений и помогает убедиться, что неправильное настройка одного ресурса не влияет на ведение журнала для другой среды.
Разверните ресурс Application Insights в том же регионе, что и базовая рабочая область Log Analytics. Поскольку для правильного функционирования Application Insights требуется Log Analytics, размещение обоих ресурсов в разных регионах удваивает вероятность того, что региональные неполадки вызовут проблемы.
Реализуйте устойчивую структуру рабочей области с помощью рекомендаций для журналов Azure Monitor. Рекомендации помогают обеспечить непрерывный и надежный мониторинг путем минимизации сбоев.

Security

Цель компонента "Безопасность" — обеспечить конфиденциальности, целостности и доступности гарантии рабочей нагрузки.

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

Контрольный список разработки рабочей нагрузки

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

  • Просмотрите базовые показатели безопасности Azure Monitor. В нем содержатся рекомендации по обеспечению безопасности, которые помогут защитить облачные решения в Azure, включая Application Insights.

  • Сохраняйте инструментирование Application Insights в актуальном состоянии, чтобы обеспечить безопасность решения для мониторинга приложений. Следуйте рекомендациям по обновлению пакета SDK и обновите пакеты SDK Application Insights (классический API) по крайней мере один раз в год. Рекомендуется использовать аналогичные методики для дистрибутива OpenTelemetry в Azure Monitor.

  • Определите стратегию обработки персональных данных в Application Insights. Чтобы обеспечить постоянное соответствие требованиям, регулярно проверяйте, что сбор и обработка данных, включая IP-адреса и персональные данные, соответствует соответствующим нормативным требованиям, таким как GDPR.

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

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

  • Управление сетевым трафиком. Рассмотрите возможность частного подключения для доступа к службам Azure. Частное подключение эффективно изолирует трафик от общедоступного Интернета. Потоки данных для частной сети включают как прием данных, так и операции запроса, каждая из которых предназначена для отдельных конечных точек. Эти конечные точки можно управлять независимо. Этот подход позволяет настроить приватную инжестию при сохранении доступа к общедоступным запросам или наоборот. Таким образом, вы можете применять принципы глубокой защиты, создавая локализованные сетевые элементы управления на всех доступных границах сети.

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

Рекомендации по конфигурации

Recommendation Benefit
Если бизнес-потребности и среда размещения не требуют ручной инструментирования, рассмотрите возможность использования автоинструментации. Этот подход устраняет необходимость в обновлении пакета SDK вручную, не требует изменений кода и устраняет затраты на обслуживание кода инструментирования. Он также может повысить безопасность, помогая обеспечить согласованный мониторинг приложений без вмешательства вручную.
Используйте управляемые удостоверения и идентификатор Microsoft Entra для проверки подлинности и авторизации. Устраняет необходимость управления учетными данными, так как Azure управляет, поворачивает и защищает эти учетные данные.
Остановите сбор персональных данных или закройте, анонимизируйте или измените собранные данные. По умолчанию Application Insights не сохраняет IP-адреса. Рекомендуется сохранить этот параметр по умолчанию. Исключает ваши данные из рассмотрения персональных данных и предотвращает нарушение каких-либо требований соответствия или местных нормативных требований.
Используйте один ресурс Application Insights на рабочую нагрузку для каждой среды. Например, используйте один для разработки, один для тестирования и один для рабочей среды. Использование нескольких ресурсов Application Insights помогает обеспечить изоляцию и безопасность данных и упростить применение конфигураций для конкретной среды и элементов управления доступом.
Используйте Приватный канал Azure для доступа к службам Azure через частную конечную точку. Следуйте инструкциям по настройке и ограничениям. Избегайте подключения AMPLS к нескольким виртуальным сетям, использующим один и тот же DNS, так как это приводит к ошибкам неверной частной конечной точки. Правильно настроенная топология AMPLS повышает конфиденциальность журналов рабочей нагрузки, сохраняя трафик ведения журнала в полностью частных сетях.

Оптимизация затрат

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

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

Дополнительные сведения о том, как вычисляются расходы на данные для основных рабочих областей Log Analytics ваших ресурсов Application Insights, см. в разделе "Расчеты стоимости и варианты журналов Azure Monitor".

Контрольный список разработки рабочей нагрузки

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

  • Просмотрите цены на Azure Monitor для создания модели затрат. Оцените начальные затраты, ставки выполнения и текущие затраты с помощью калькулятора цен. Обратите внимание, что счета за Application Insights выставляются через рабочую область службы Log Analytics, в которую поступают журнальные данные.

  • Настройте объем собранных данных.

    • Используйте выборку на уровне Application Insights, чтобы снизить затраты на трафик данных и хранилище, сохраняя статистически правильный анализ данных приложения.
    • Application Insights имеет несколько возможных источников журналов. Используйте уровни логов для настройки и уменьшения данных телеметрии журналов трассировки.
  • Ограничьте незапланированные расходы для рабочего пространства. Ежедневное ограничение можно задать как в Application Insights, так и в Log Analytics.

  • Регулярно просматривайте расходы, такие как региональные цены и доступные ценовые категории. Наиболее значительные расходы для большинства реализаций Azure Monitor обычно связаны с приемом и хранением данных в рабочих областях службы Log Analytics. Для получения дополнительной информации см. раздел "Вычисления затрат журналов Azure Monitor" или раздел "Оптимизация затрат" в руководстве по службе Log Analytics.

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

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

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

  • Оптимизация затрат на код. Обязательно используйте обновленные пакеты SDK Application Insights. Более ранние версии пакета SDK для ASP.NET Core и пакета SDK для рабочей службы собирают множество счетчиков по умолчанию, которые были собраны как пользовательские метрики. Используйте более поздние версии, чтобы указать только необходимые счетчики.

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

Рекомендации по конфигурации

Recommendation Benefit
Установите ежедневное ограничение как в Application Insights, так и в Log Analytics, но старайтесь избежать ее достижения. Достижение ежедневного лимита может привести к тому, что данные не будут записываться в рабочую область Log Analytics. Установка ограничения является рискованным, но эффективным решением для регулирования расходов.
Для стандартных тестов доступности необходимость в тестировании из разных местоположений может отличаться между производственными и предпродакшн средами. Уменьшите количество мест соответственно. Тесты несут затраты, поэтому проводите только столько тестов, сколько нужно, чтобы обеспечить уверенность в здоровье вашей рабочей нагрузки.
Разверните ресурс Application Insights в том же регионе, что и базовая рабочая область Log Analytics. Этот подход сводит к минимуму задержку и сокращает затраты, связанные с телеметрией между регионами.
Уменьшите частоту выборки для менее критических потоков и увеличьте ее для потоков с высокой критичностью. Используйте фильтры телеметрии для несущественной телеметрии. Объем данных — это драйвер затрат при разработке интеграции Application Insights. Сокращение объема данных с помощью выборок и фильтров — это потенциальное решение для поддержания сбора данных под контролем.
Ограничить количество вызовов Ajax, которые можно сообщать в каждом представлении страниц, или отключить отчетность Ajax. Если отключить вызовы Ajax, вы также отключите корреляцию JavaScript. Объем данных — это драйвер затрат при разработке интеграции Application Insights для клиентского приложения. Сокращение объема данных путем уменьшения отчетов на странице клиента — это потенциальное решение для поддержания затрат на сбор данных под контролем.
Используйте предварительно подготовленные метрики для более эффективной обработки данных телеметрии большого объема и ограничения использования пользовательских метрик. Однако параметр Application Insights для создания оповещений по настраиваемым размерам метрик также может увеличить расходы. Используйте метрики, чтобы обеспечить получение экономии затрат. Все пользовательские метрики хранятся как в журналах, так и в хранилищах метрик. Предварительно подготовленные метрики снижают затраты на хранение, связанные с пользовательскими метриками.
Если бизнес-потребности и среда размещения не требуют ручной инструментирования, рассмотрите возможность использования автоинструментации. Этот подход оптимизирует время разработки программного обеспечения, устраняя потребность в обновлениях пакета SDK вручную, изменениях кода, связанных с новыми версиями, и затратах на обслуживание кода инструментирования.
Ограничение нежелательного ведения журнала трассировки:

• Удалите проверки работоспособности. См. Фильтрация шумных трассировок в Оптимизация затрат при помощи дистрибутива OpenTelemetry для Azure Monitor.
• Для службы Azure Kubernetes (AKS) настройте журналы уровня управления и плоскости данных.
• Для функций Azure адаптируйте уровни журналов и области для оптимизации объема журналов.
Ограничение нежелательного ведения журнала трассировки сокращает объем сохраненных данных, что может снизить затраты на хранение.

Операционное превосходство

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

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

Контрольный список разработки рабочей нагрузки

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

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

  • Обеспечьте оптимальную производительность решения мониторинга приложений, сохраняя инструментирование Application Insights в актуальном состоянии. Следуйте рекомендациям по обновлению пакета SDK и обновите пакеты SDK Application Insights (классический API) по крайней мере один раз в год. Рекомендуется следовать аналогичным методикам для Azure Monitor OpenTelemetry Distro. Использование последних версий пакета SDK или дистрибутивов обеспечивает доступ к службам поддержки и предоставляет последние функциональные возможности и исправления ошибок.

  • Формализация идей и процессов планирования. Используйте интеграцию рабочих элементов, чтобы легко создавать рабочие элементы в GitHub или Azure DevOps с включенными данными из Application Insights.

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

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

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

Рекомендации по конфигурации

Recommendation Benefit
Если бизнес-потребности и среда размещения не требуют ручной инструментирования, рассмотрите возможность использования автоинструментации. Этот подход оптимизирует время разработки программного обеспечения, устраняя потребность в обновлениях пакета SDK вручную, изменениях кода, связанных с новыми версиями, и затратах на обслуживание кода инструментирования.
Если для вашей организации требуется ручное инструментирование, используйте дистрибутив Azure Monitor OpenTelemetry. Избегайте последующей принудительной миграции из пакетов SDK Application Insights (классический API), приняв метод инструментирования на основе OpenTelemetry.
Используйте строки подключения. Сделать прием телеметрии более надежным и удалять зависимости от глобальных конечных точек приема.

Эффективность производительности

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

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

Контрольный список разработки рабочей нагрузки

Начните стратегию проектирования на основе контрольного списка проектирования для эффективности производительности. Определите базовые показатели, основанные на ключевых показателях производительности Application Insights.

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

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

  • Выберите нужный регион для решения мониторинга приложений. Разверните ресурс Application Insights в том же регионе, что и базовая рабочая область Log Analytics, чтобы предотвратить задержку и надежность. См . статью "Создание ресурса".

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

  • Оптимизация кода и инфраструктуры. Регулярно вычисляйте пользовательский код Application Insights, чтобы снизить сложность, повысить производительность и убедиться, что код обновлен.

  • Ознакомьтесь с шаблонами использования и объемом поступающих данных, анализируя частоты приема и выборки. Чтобы оптимизировать использование данных, настройте их соответствующим образом и уменьшите объем пользовательских метрик, например ITelemetryProcessor.

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

Рекомендации по конфигурации

Recommendation Benefit
Используйте один ресурс Application Insights для каждой рабочей нагрузки для каждой среды (например, один для разработки, один для промежуточного хранения и один для рабочей среды). Такой подход не позволяет смешивать данные телеметрии из разных версий приложений.
Если применимо, убедитесь, что частота профилирования и длительность заданы соответствующим образом. Не добавляйте чрезмерную нагрузку на выполняющийся процесс.

Политики Azure

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

  • Компоненты Application Insights должны предотвратить прием журналов из публичных сетей или источников, которые не прошли аутентификацию с помощью Microsoft Entra ID.
  • Необходимо применить связывание компонента Application Insights с рабочей областью Log Analytics для шифрования журналов.

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

Рекомендации Помощника по Azure

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

Дополнительные сведения см. в разделе Помощника по Azure.