Мониторинг веб-приложений в AzureWeb application monitoring on Azure

Платформа как услуга (PaaS) в Azure используется для управления вычислительными ресурсами. От нее зависят способы мониторинга развертываний.Azure platform as a service (PaaS) offerings manage compute resources for you and affect how you monitor deployments. Azure включает в себя несколько служб мониторинга, каждая из которых выполняет определенную роль.Azure includes multiple monitoring services, each of which performs a specific role. Вместе эти службы предоставляют комплексное решение для сбора, анализа и использования телеметрии из соответствующих приложений и ресурсов Azure.Together, these services deliver a comprehensive solution for collecting, analyzing, and acting on telemetry from your applications and the Azure resources they consume.

В этом сценарии рассматриваются службы мониторинга, которые можно использовать, и описывается модель потока данных, используемая с несколькими источниками данных.This scenario addresses the monitoring services you can use and describes a dataflow model for use with multiple data sources. Что касается мониторинга, то с развертыванием Azure могут работать многие средства и службы.When it comes to monitoring, many tools and services work with Azure deployments. В этом сценарии выбираются готовые службы, так как их легко использовать.In this scenario, we choose readily available services precisely because they are easy to consume. Остальные параметры мониторинга рассматриваются далее.Other monitoring options are discussed later in this article.

Варианты соответствующего использованияRelevant use cases

Другие варианты использования:Other relevant use cases include:

  • инструментирование веб-приложения для мониторинга телеметрии;Instrumenting a web application for monitoring telemetry.
  • сбор телеметрии интерфейса и сервера для приложения, развернутого в Azure;Collecting front-end and back-end telemetry for an application deployed on Azure.
  • мониторинг метрик и квот, связанных со службами в Azure.Monitoring metrics and quotas associated with services on Azure.

ArchitectureArchitecture

Схема архитектуры

В этом сценарии для размещения приложения и уровня данных используется управляемая среда Azure.This scenario uses a managed Azure environment to host an application and data tier. Данные передаются в сценарии следующим образом:The data flows through the scenario as follows:

  1. пользователь взаимодействует с приложением;A user interacts with the application.
  2. с помощью браузера и службы приложений выполняется отправка телеметрии;The browser and app service emit telemetry.
  3. служба Application Insights собирает и анализирует данные о работоспособности приложения, его производительности и использовании;Application Insights collects and analyzes application health, performance, and usage data.
  4. разработчики и администраторы могут просматривать данные о работоспособности, производительности и использовании.Developers and administrators can review health, performance, and usage information.
  5. при помощи Базы данных SQL Azure выполняется отправка телеметрии;Azure SQL Database emits telemetry.
  6. Azure Monitor собирает и анализирует метрики инфраструктуры и квоты;Azure Monitor collects and analyzes infrastructure metrics and quotas.
  7. служба Log Analytics собирает и анализирует журналы и метрики;Log Analytics collects and analyzes logs and metrics.
  8. разработчики и администраторы могут просматривать данные о работоспособности, производительности и использовании.Developers and administrators can review health, performance, and usage information.

КомпонентыComponents

  • Служба приложений Azure — это служба PaaS (платформа как услуга), используемая для создания и размещения приложений в управляемых виртуальных машинах.Azure App Service is a PaaS service for building and hosting apps in managed virtual machines. Вы сами управляете базовой вычислительной инфраструктурой, в которой работают приложения.The underlying compute infrastructures on which your apps run is managed for you. Служба приложений выполняет мониторинг квот по использованию ресурсов и приложений метрики, журналов сведений о диагностике и оповещений, основанных на метриках.App Service provides monitoring of resource usage quotas and app metrics, logging of diagnostic information, and alerts based on metrics. Более того, Application Insights можно использовать для создания тестов доступности, с помощью которых можно проверять приложения из разных регионов.Even better, you can use Application Insights to create availability tests for testing your application from different regions.
  • Application Insights — это расширяемая служба управления производительностью приложений (APM) для разработчиков, поддерживаемая на нескольких платформах.Application Insights is an extensible Application Performance Management (APM) service for developers and supports multiple platforms. Она используется для отслеживания приложений, обнаружения таких отклонений в работе приложений, как низкая производительность и ошибки, а также для отправки телеметрии на портал Azure.It monitors the application, detects application anomalies such as poor performance and failures, and sends telemetry to the Azure portal. Также Application Insights можно использовать для ведения журнала, распределенной трассировки и метрик пользовательского приложения.Application Insights can also be used for logging, distributed tracing, and custom application metrics.
  • Azure Monitor предоставляет метрики и журналы инфраструктуры базового уровня для большинства служб в Azure.Azure Monitor provides base-level infrastructure metrics and logs for most services in Azure. Пользователь может взаимодействовать с метриками несколькими способами, включая создание диаграмм метрик на портале Azure, доступ к метрикам через REST API или запрос метрик с помощью PowerShell или интерфейса командной строки.You can interact with the metrics in several ways, including charting them in Azure portal, accessing them through the REST API, or querying them using PowerShell or CLI. Также Azure Monitor предлагает использовать данные непосредственно в Log Analytics и других службах, в которых пользователь может запрашивать и комбинировать их с данными из других источников локально или в облаке.Azure Monitor also offers its data directly into Log Analytics and other services, where you can query and combine it with data from other sources on premises or in the cloud.
  • Log Analytics используется для сопоставления данных об использовании и производительности, собранных Application Insights, с данными о конфигурации и производительности ресурсов Azure, которые поддерживают работу приложения.Log Analytics helps correlate the usage and performance data collected by Application Insights with configuration and performance data across the Azure resources that support the app. Чтобы передать журналы аудита SQL Server в Log Analytics в этом сценарии используется агент Azure Log Analytics.This scenario uses the Azure Log Analytics agent to push SQL Server audit logs into Log Analytics. В колонке Log Analytics на портале Azure можно записывать запросы и просматривать данные.You can write queries and view data in the Log Analytics blade of the Azure portal.

Рекомендации для DevOpsDevOps considerations

НаблюдениеMonitoring

Application Insights рекомендуется добавить в код при разработке с помощью пакетов SDK для Application Insights с последующей настройкой для каждого приложения.A recommended practice is adding Application Insights to your code during development using the Application Insights SDKs, and customizing per application. Пакеты SDK с открытым исходным кодом доступны для большинства исполняющих сред.These open-source SDKs are available for most application frameworks. Чтобы расширить и контролировать собранные данные, включите пакеты SDK для тестирования и рабочего развертывания в процесс разработки.To enrich and control the data you collect, incorporate the use of the SDKs both for testing and production deployments into your development process. Основное требование для приложений — наличие прямой или непрямой связи с конечной точкой приема Applications Insights, размещенной с помощью адреса, ориентированного на Интернет.The main requirement is for the app to have a direct or indirect line of sight to the Applications Insights ingestion endpoint hosted with an Internet-facing address. После этого можно добавить телеметрию или обогатить существующую коллекцию телеметрии.You can then add telemetry or enrich an existing telemetry collection.

Еще один быстрый способ приступить к работе — мониторинг сред выполнения.Runtime monitoring is another easy way to get started. Управление собранными данными телеметрии должно выполнятся с помощью файлов конфигурации.The telemetry that is collected must be controlled through configuration files. Например, можно включить методы среды выполнения, в которые включены такие инструменты как монитор состояний Application Insights, предназначенный для развертывания пакетов SDK в нужную папку, и добавить нужные конфигурации для начала мониторинга.For example, you can include runtime methods that enable tools such as Application Insights Status Monitor to deploy the SDKs into the correct folder and add the right configurations to begin monitoring.

Как и Application Insights, Log Analytics предоставляет средства для анализа данных из разных источников, создания сложных запросов и отправки упреждающих оповещений на основе указанных условий.Like Application Insights, Log Analytics provides tools for analyzing data across sources, creating complex queries, and sending proactive alerts on specified conditions. Просматривать телеметрию можно также на портале Azure.You can also view telemetry in the Azure portal. Log Analytics используется для повышения эффективности таких существующих служб мониторинга, как Azure Monitor, а также для мониторинга локальных сред.Log Analytics adds value to existing monitoring services such as Azure Monitor and can also monitor on-premises environments.

В Application Insights и Log Analytics используется язык запросов Azure Log Analytics.Both Application Insights and Log Analytics use Azure Log Analytics Query Language. Также для анализа телеметрии, собранной Application Insights и Log Analytics, с помощью единого запроса можно использовать запросы между ресурсами.You can also use cross-resource queries to analyze the telemetry gathered by Application Insights and Log Analytics in a single query.

Azure Monitor, Application Insights и Log Analytics используются для отправки оповещений.Azure Monitor, Application Insights, and Log Analytics all send alerts. Например, к оповещениям метрики Azure Monitor уровня платформы можно отнести загрузку ЦП, а к оповещениям метрик Application Insights уровня приложения — время отклика сервера.For example, Azure Monitor alerts on platform-level metrics such as CPU utilization, while Application Insights alerts on application-level metrics such as server response time. Azure Monitor уведомляет о новых событиях в журнале действий Azure, в то время как служба Log Analytics может уведомлять о метриках или данных о событиях для служб, настроенных для ее использования.Azure Monitor alerts on new events in the Azure Activity Log, while Log Analytics can issue alerts about metrics or event data for the services configured to use it. Функция "Унифицированные оповещения" в Azure Monitor представляет собой новый, единый интерфейс оповещений в Azure, для которого используется разная классификация.Unified alerts in Azure Monitor is a new, unified alerting experience in Azure that uses a different taxonomy.

Альтернативные вариантыAlternatives

С помощью популярных функций в этой статье описываются доступные параметры мониторинга. При этом у пользователя остается богатый выбор, включая возможность создания собственных механизмов ведения журнала.This article describes conveniently available monitoring options with popular features, but you have many choices, including the option to create your own logging mechanisms. Добавлять службы мониторинга рекомендуется при создании уровней в решении.A recommended practice is to add monitoring services as you build out tiers in a solution. Ниже приведены некоторые расширения и альтернативные варианты.Here are some possible extensions and alternatives:

Дополнительные сведения см. в разделе [мониторинг для DevOps] [DevOps-Monitoring] в хорошо спроектированной инфраструктуре Azure.For more information see [Monitoring For DevOps][devops-monitoring] in the Azure Well-Architected Framework.

Рекомендации по масштабируемости и доступностиScalability and availability considerations

По большей части в данном сценарии основное внимание уделяется решениям PaaS для мониторинга, так как их удобно использовать для обеспечения доступности и масштабируемости, а также они поддерживаются соглашениями об уровне обслуживания (SLA).This scenario focuses on PaaS solutions for monitoring in large part because they conveniently handle availability and scalability for you and are backed by service-level agreements (SLAs). Например, использование служб приложений предусматривает SLA для гарантированной доступности.For example, App Services provides a guaranteed SLA for its availability.

У Application Insights есть ограничения на количество обрабатываемых запросов в секунду.Application Insights has limits on how many requests can be processed per second. Если превысить лимит, то возникнет регулирование количества запросов сообщений.If you exceed the request limit, you may experience message throttling. Чтобы этого избежать, необходимо выполнить фильтрацию или выборку, что позволит уменьшить интенсивность передачи данных.To prevent throttling, implement filtering or sampling to reduce the data rate

Тем не менее, за рекомендации по высокой доступности, предназначенные для запущенного приложения, ответственность несет разработчик.High availability considerations for the app you run, however, are the developer's responsibility. Например, дополнительные сведения о масштабе см. в разделе Вопросы масштабируемости в эталонной архитектуре базового веб-приложения.For information about scale, for example, see the Scalability considerations section in the basic web application reference architecture. После развертывания приложения можно использовать Application Insights и настроить тесты для мониторинга доступности.After an app is deployed, you can set up tests to monitor its availability using Application Insights.

Вопросы безопасностиSecurity considerations

Информация с ограниченным доступом и требования соответствия влияют на сбор, сохранение и хранение данных.Sensitive information and compliance requirements affect data collection, retention, and storage. Узнайте больше об обработке телеметрии в Application Insights и Log Analytics.Learn more about how Application Insights and Log Analytics handle telemetry.

Следующие вопросы безопасности также могут быть применены.The following security considerations may also apply:

  • Разработка плана обработки личной информации в случае, когда разработчикам можно собирать собственные данные или обогащать существующую телеметрию.Develop a plan to handle personal information if developers are allowed to collect their own data or enrich existing telemetry.
  • Рассмотрение сохранения данных.Consider data retention. Например, Application Insights хранит данные телеметрии на протяжении 90 дней.For example, Application Insights retains telemetry data for 90 days. Для доступа к архивным данным, которые хранятся в течение длительного времени, используется Microsoft Power BI, непрерывный экспорт или REST API.Archive data you want access to for longer periods using Microsoft Power BI, Continuous Export, or the REST API. Применимы ставки за использование хранилища.Storage rates apply.
  • Ограничение доступа к ресурсам Azure. Это позволит управлять доступом к данным и тем, кто может просматривать телеметрию из определенного приложения.Limit access to Azure resources to control access to data and who can view telemetry from a specific application. Чтобы получить дополнительные сведения о блокировке доступа к мониторингу телеметрии, см. статью Ресурсы, роли и контроль доступа в Application Insights.To help lock down access to monitoring telemetry, see Resources, roles, and access control in Application Insights.
  • Рассмотрение необходимости управлять доступом на чтение или запись в коде приложения, чтобы избежать добавления пользователями маркеров версий или тегов, которые ограничивают прием данных из приложения.Consider whether to control read/write access in application code to prevent users from adding version or tag markers that limit data ingestion from the application. При использовании Application Insights контроль над отдельными элементами данных после их отправки на ресурс отсутствует, поэтому если у пользователя есть доступ к каким-либо данным, он получает доступ ко всем данным отдельного ресурса.With Application Insights, there is no control over individual data items once they are sent to a resource, so if a user has access to any data, they have access to all data in an individual resource.
  • Добавление механизма системы управления для применения управления политикой или затратами в ресурсах Azure (при необходимости).Add governance mechanisms to enforce policy or cost controls over Azure resources if needed. В качестве примера можно использовать Log Analytics для связанного с безопасностью мониторинга, например, политики и управления доступом на основе ролей. Также можно использовать политику Azure для создания, назначения и администрирования определений политики.For example, use Log Analytics for security-related monitoring such as policies and role-based access control, or use Azure Policy to create, assign and, manage policy definitions.
  • Для отслеживания потенциальных проблем с безопасностью и получения полного представления о состоянии безопасности ресурсов Azure используйте Центр безопасности Azure.To monitor potential security issues and get a central view of the security state of your Azure resources, consider using Azure Security Center.

Рекомендации по стоимостиCost considerations

Плата за мониторинг может быстро сложиться.Monitoring charges can add up quickly. Рассмотрите возможность расценки на передний план, Узнайте, что вы отслеживаете, и проверьте связанные сборы для каждой службы.Consider pricing up front, understand what you are monitoring, and check the associated fees for each service. Azure Monitor бесплатно предоставляет базовые метрики, в то время как стоимость мониторинга для Application Insights и Log Analytics основывается на количестве принятых данных и числе выполненных тестов.Azure Monitor provides basic metrics at no cost, while monitoring costs for Application Insights and Log Analytics are based on the amount of data ingested and the number of tests you run.

Для начала рекомендуется оценить затраты с помощью калькулятора цен.To help you get started, use the pricing calculator to estimate costs. Измените различные параметры ценообразования в соответствии с ожидаемым развертыванием.Change the various pricing options to match your expected deployment.

Данные телеметрии из Application Insights оправляются на портал Azure как во время отладки, так и после публикации приложения.Telemetry from Application Insights is sent to the Azure portal during debugging and after you have published your app. В целях проверки и предотвращения расходов инструментируется ограниченный объем данных телеметрии.For testing purposes and to avoid charges, a limited volume of telemetry is instrumented. Чтобы добавить индикаторы, можно расширить ограничения телеметрии.To add more indicators, you can raise the telemetry limit. Дополнительные сведения см. в статье Выборка в Application Insights.For more granular control, see Sampling in Application Insights.

После развертывания можно просмотреть показатели эффективности Live Metrics Stream.After deployment, you can watch a Live Metrics Stream of performance indicators. Эти данные не сохраняются. Пользователь просматривает метрики в реальном времени. Но телеметрию можно сохранить для последующего анализа.This data is not stored — you are viewing real-time metrics — but the telemetry can be collected and analyzed later. Плата за данные Live Stream не взимается.There is no charge for Live Stream data.

Плата за использование Log Analytics начисляется за каждый гигабайт данных, полученных службой.Log Analytics is billed per gigabyte (GB) of data ingested into the service. Каждый месяц первые 5 ГБ данных, получаемых службой Azure Log Analytics, предоставляются бесплатно. Также эти данные бесплатно сохраняются в течение первого 31 дня в рабочей области Log Analytics.The first 5 GB of data ingested to the Azure Log Analytics service every month is offered free, and the data is retained at no charge for first 31 days in your Log Analytics workspace.

Дополнительные рекомендации см. в разделе "затраты" в Microsoft Azure хорошо спроектированной инфраструктурой.For more guidance please refer to the cost section in Microsoft Azure Well-Architected Framework.

Дальнейшие действияNext steps

Ознакомьтесь с материалами, которые помогут приступить к работе с помощью собственного решения для мониторинга.Check out these resources designed to help you get started with your own monitoring solution:

Базовое веб-приложениеBasic web application reference architecture

Запуск мониторинга веб-приложения ASP.NETStart monitoring your ASP.NET Web Application

Сбор данных о виртуальных машинах AzureCollect data about Azure Virtual Machines

Общие сведения о службе Azure MonitorMonitoring Azure applications and resources

Поиск и диагностика исключений во время выполнения с помощью Azure Application InsightsFind and diagnose run-time exceptions with Azure Application Insights