Наблюдение за работоспособностью приложений для обеспечения надежности в AzureMonitoring application health for reliability in Azure

Мониторинг и диагностика важны для обеспечения устойчивости.Monitoring and diagnostics are crucial for resiliency. В случае отказа, необходимо знать , попытка не удалась, при попытка не удалась — и почему.If something fails, you need to know that it failed, when it failed — and why.

Мониторинг не является таким же, как обнаружения сбоев.Monitoring is not the same as failure detection. Например, приложение может обнаружить временную ошибку и повторить попытку, отсутствие простоев.For example, your application might detect a transient error and retry, avoiding downtime. Но оно также должно регистрировать операцию повтора, можно наблюдать за ее частота ошибок, чтобы получить общее представление о работоспособности приложения.But it should also log the retry operation so that you can monitor the error rate to get an overall picture of application health.

Процесс мониторинга и диагностики можно рассматривать как конвейер с четырех различных этапов: Инструментирование, сбора и хранения, анализа и диагностики и визуализация и оповещения.Think of the monitoring and diagnostics process as a pipeline with four distinct stages: Instrumentation, collection and storage, analysis and diagnosis, and visualization and alerts.

ИнструментированиеInstrumentation

Это не позволяет наблюдать за приложением напрямую, поэтому инструментария является ключом.It's not practical to monitor your application directly, so instrumentation is key. Крупномасштабная распределенная система может работать на десятках виртуальных машин (ВМ), которые добавляются и удаляются с течением времени.A large-scale distributed system might run on dozens of virtual machines (VMs), which are added and removed over time. Аналогичным образом Облачное приложение может использовать несколько хранилищ данных и одно действие пользователя может охватывать несколько подсистем.Likewise, a cloud application might use a number of data stores and a single user action might span multiple subsystems.

Предоставьте расширенный инструментарий:Provide rich instrumentation:

  • Для сбоев, которые, скорее всего, но еще не произошло, обеспечить достаточный объем данных, чтобы определить причину, уменьшить последствия ситуации и обеспечить доступность системы.For failures that are likely but have not yet occurred, provide enough data to determine the cause, mitigate the situation, and ensure that the system remains available.
  • Для сбоев, которые уже произошли приложение должно возвращать соответствующее сообщение об ошибке пользователю, но следует попытаться продолжить выполнение, хотя и с ограниченными возможностями.For failures that have already occurred, the application should return an appropriate error message to the user but should attempt to continue running, albeit with reduced functionality.

Систем мониторинга должна записывать всеобъемлющие данные, чтобы приложения, которые могут восстанавливаться эффективно и, при необходимости, проектировщикам и разработчикам может изменить систему для предотвращения подобных ситуаций в будущем.Monitoring systems should capture comprehensive details so that applications can be restored efficiently and, if necessary, designers and developers can modify the system to prevent the situation from recurring.

Необработанные данные мониторинга могут поступать из различных источников, включая:The raw data for monitoring can come from a variety of sources, including:

Большинство служб Azure имеют метрик и диагностических сведений, можно настроить для анализа и определить причину проблемы.Most Azure services have metrics and diagnostics that you can configure to analyze and determine the cause of problems. Дополнительные сведения см. в разделе данные мониторинга собранные Azure Monitor.To learn more, see Monitoring data collected by Azure Monitor.

Сбор и хранениеCollection and storage

Необработанные данные инструментирования могут храниться в различных расположениях и форматах, включая:Raw instrumentation data can be held in various locations and formats, including:

  • Журналы трассировки приложенийApplication trace logs
  • Журналы IISIIS logs
  • Счетчики производительностиPerformance counters

Эти разрозненные источники собираются, consolidated и поместить в хранилищах данных в Azure, например Application Insights, Azure Monitor метрики, работоспособность службы, учетные записи хранения и Azure Log Analytics.These disparate sources are collected, consolidated, and placed in reliable data stores in Azure, such as Application Insights, Azure Monitor metrics, Service Health, storage accounts, and Azure Log Analytics.

Анализ и диагностикаAnalysis and diagnosis

Анализ данных объединены в эти хранилища данных для устранения неполадок и получить общее представление о работоспособности приложения.Analyze data consolidated in these data stores to troubleshoot issues and gain an overall view of application health. Как правило, вы можете искать и анализировать данных в Application Insights и Log Analytics с помощью запросов Kusto или диаграммами предварительно настроенные представления, с помощью решения по управлению.Generally, you can search for and analyze the data in Application Insights and Log Analytics using Kusto queries or view preconfigured graphs using management solutions. Или использовать помощник по Azure, чтобы просмотреть рекомендации с упором на устойчивости и производительности.Or use Azure Advisor to view recommendations with a focus on resiliency and performance.

Визуализация и оповещенияVisualization and alerts

Представления данных телеметрии в формате, который позволяет легко оператор может заметить проблемы или тенденции, например оповещение в панели мониторинга или по электронной почте.Present telemetry data in a format that makes it easy for an operator to notice problems or trends quickly, such as a dashboard or email alert.

Получите полный стек представление о состоянии приложения с помощью панелей мониторинга Azure создать консолидированное представление мониторинга графов из Application Insights, Log Analytics, метрик Azure Monitor и работоспособности службы.Get a full-stack view of application state by using Azure dashboards to create a consolidated view of monitoring graphs from Application Insights, Log Analytics, Azure Monitor metrics, and Service Health. И использовать оповещения Azure Monitor для создания уведомлений о работоспособности службы, служба работоспособности ресурсов, метрик Azure Monitor, журналы в Log Analytics и Application Insights.And use Azure Monitor alerts to create notifications on Service Health, resource health, Azure Monitor metrics, logs in Log Analytics, and Application Insights.

Дополнительные сведения о мониторинге и диагностике см. в разделе мониторинг и диагностика.For more information about monitoring and diagnostics, see Monitoring and diagnostics.

Проверки работоспособности и функции проверкиHealth probes and check functions

Работоспособность и производительность приложения может снижаться с течением времени и снижение может быть заметной пока не происходит сбой приложения.The health and performance of an application can degrade over time, and degradation might not be noticeable until the application fails.

Реализуйте проверочные или функций проверок и выполняйте их регулярно из вне приложения.Implement probes or check functions, and run them regularly from outside the application. Эти проверки может быть просто измерением времени ответа для приложения в целом, для отдельных частей приложения, для определенных служб, используемых приложением или для отдельных компонентов.These checks can be as simple as measuring response time for the application as a whole, for individual parts of the application, for specific services that the application uses, or for separate components.

Убедитесь, что функции можно выполнять процессы, чтобы убедиться, что они выдают правильные результаты, измерение задержки и проверка доступности и извлечения информации из системы.Check functions can run processes to ensure that they produce valid results, measure latency and check availability, and extract information from the system.

Сбои длительных рабочих процессовLong-running workflow failures

Длительно выполняемые рабочие процессы часто включают в себя несколько этапов, каждый из которых должны быть независимыми.Long-running workflows often include multiple steps, each of which should be independent.

Отслеживайте ход выполнения длительных рабочих процессов, чтобы свести к минимуму вероятность того, что весь рабочий процесс будет необходимо выполнить откат или что несколько компенсирующих транзакций необходимо выполнить.Track the progress of long-running processes to minimize the likelihood that the entire workflow will need to be rolled back or that multiple compensating transactions will need to be executed.

Совет

Мониторинг и управление им ход выполнения длительных рабочих процессов, реализовав шаблон, такие как планировщик, агент, контролер.Monitor and manage the progress of long-running workflows by implementing a pattern such as Scheduler Agent Supervisor.

Журналы приложенийApplication logs

Журналы приложений являются важным источником данных диагностики.Application logs are an important source of diagnostics data. Для получения представления о нужный момент большинство, следуйте рекомендациям по ведению журнала приложения.To gain insight when you need it most, follow best practices for application logging.

Данные журнала в рабочей средеLog data in the production environment

Записывает данные, надежные данные телеметрии, пока приложение выполняется в рабочей среде, поэтому у вас есть достаточно данных для выявления причины возникновения проблем в рабочее состояние.Capture robust telemetry data while the application is running in the production environment, so you have sufficient information to diagnose the cause of issues in the production state.

События журнала в границах службLog events at service boundaries

Включите идентификатор корреляции в границах служб.Include a correlation ID that flows across service boundaries. Если транзакции проходят через несколько служб и из них завершается ошибкой, корреляции, идентификатор помогает отслеживать запросы на приложения и указывает, почему произошел откат транзакции.If a transaction flows through multiple services and one of them fails, the correlation ID helps you track requests across your application and pinpoints why the transaction failed.

Используйте семантическое ведение журнала (структурированные)Use semantic (structured) logging

С помощью структурированных журналов проще автоматизацию потребления и анализа данных журнала, что особенно важно в масштабе облака.With structured logs, it's easier to automate the consumption and analysis of the log data, which is especially important at cloud scale. Как правило рекомендуется хранить данные метрик и диагностики ресурсов Azure, в рабочей области Log Analytics, а не в учетной записи хранения.Generally, we recommend storing Azure resources metrics and diagnostics data in a Log Analytics workspace rather than in a storage account. Таким образом, можно использовать запросов Kusto получить данные, которые вы хотите быстро и в структурированном формате.This way, you can use Kusto queries to obtain the data you want quickly and in a structured format. Можно также использовать интерфейсы API Azure Monitor и API-интерфейсы Azure Log Analytics.You can also use Azure Monitor APIs and Azure Log Analytics APIs.

Используйте асинхронное ведение журналаUse asynchronous logging

Синхронное ведение журнала операций иногда блокировать код приложения, запросов для резервного копирования, которые записываются журналы.Synchronous logging operations sometimes block your application code, causing requests to back up as logs are written. Используйте асинхронное ведение журнала для сохранения доступности во время ведения журнала приложения.Use asynchronous logging to preserve availability during application logging.

Отдельное приложение ведения журнала аудитаSeparate application logging from auditing

Записи аудита обычно поддерживаются для соответствия требованиям или нормативным требованиям и должен быть завершен.Audit records are commonly maintained for compliance or regulatory requirements and must be complete. Чтобы избежать потерянных транзакций, ведение журналов аудита отдельно от журналов диагностики.To avoid dropped transactions, maintain audit logs separately from diagnostic logs.

Статистику удаленных вызововRemote call statistics

Отслеживания и формирования отчетов удаленного вызова статистику в режиме реального времени и предоставляют простой способ просматривать эту информацию, чтобы рабочая группа имеет конкретное представление работоспособности приложения.Track and report remote call statistics in real time and provide an easy way to review this information, so the operations team has an instantaneous view into the health of your application. Суммируйте показатели удаленного вызова, такие как задержка, пропускная способность и ошибки в 99 и 95 процентили.Summarize remote call metrics, such as latency, throughput, and errors in the 99 and 95 percentiles.

Временные исключения и число повторных попытокTransient exceptions and retries

Отслеживайте количество временных исключений и повторений некоторое время, чтобы выявить проблемы или сбои в приложении логику повторных попыток.Track the number of transient exceptions and retries over time to uncover issues or failures in your application's retry logic. Тенденция увеличения исключений с течением времени может означать, что службы возникла проблема и может завершиться ошибкой.A trend of increasing exceptions over time may indicate that the service is having an issue and may fail. Дополнительные сведения см. в статье Конкретные рекомендации по использованию механизма повторов.For more information, see Retry service specific guidance.

Систему раннего предупрежденияEarly warning system

Мониторинг приложения для признаков, которые могут потребовать активного вмешательства.Monitor your application for warning signs that might require proactive intervention. Средства, которые оценки общей работоспособности приложения и его зависимости помогут вам быстро распознавать, когда системе или его компоненты внезапно становятся недоступными.Tools that assess the overall health of the application and its dependencies help you to recognize quickly when a system or its components suddenly become unavailable. Используйте их, чтобы реализовать систему раннего предупреждения.Use them to implement an early warning system.

  1. Определите ключевые показатели эффективности по работоспособности приложений, таких как временные исключения и задержка удаленного вызова.Identify the key performance indicators of your application's health, such as transient exceptions and remote call latency.
  2. Установить пороговые значения на уровнях, которые идентифицируют проблемы, прежде чем они станут критическими и потребуют мер восстановления.Set thresholds at levels that identify issues before they become critical and require a recovery response.
  3. Отправьте оповещение операциям при достижении порогового значения.Send an alert to operations when the threshold value is reached.

Рассмотрите возможность Microsoft System Center 2016 или сторонних средств для обеспечения возможности мониторинга.Consider Microsoft System Center 2016 or third-party tools to provide monitoring capabilities. Большинство решений мониторинга отслеживают основные счетчики производительности, а также доступность службы.Most monitoring solutions track key performance counters and service availability. Служба работоспособности ресурсов Azure предоставляет некоторые встроенные работоспособности проверки состояния, которые могут помочь диагностировать регулирования служб Azure.Azure resource health provides some built-in health status checks, which can help diagnose throttling of Azure services.

Ограничения подписки и службыSubscription and service limitations

Подписках Azure предусмотрены ограничения на определенные типы ресурсов, таких как количество групп ресурсов, ядер и учетные записи хранения.Azure subscriptions have limits on certain resource types, such as number of resource groups, cores, and storage accounts. Чтобы убедиться, что приложение не приходится сталкиваться ограничения подписки Azure, создайте оповещения, опрос для служб, близко к их ограничения и квоты.To ensure that your application doesn't run up against Azure subscription limits, create alerts that poll for services nearing their limits and quotas.

Устраните следующие ограничения подписки с предупреждениями.Address the following subscription limits with alerts.

Индивидуальные службыIndividual services

Отдельные службы Azure имеют ограничения на использование хранилища, пропускной способности, число подключений, запросов в секунду и другие показатели.Individual Azure services have consumption limits on storage, throughput, number of connections, requests per second, and other metrics. Приложение не будет работать, если предпринимается попытка использовать ресурсы за пределами этих ограничений, приведет к простоям регулирования и возможных службы.Your application will fail if it attempts to use resources beyond these limits, resulting in service throttling and possible downtime.

В зависимости от конкретной службы и требований приложения можно часто превышают эти ограничения масштабирования (например, выбора другого уровня цен,) или горизонтального масштабирования (добавления новых экземпляров).Depending on the specific service and your application requirements, you can often stay under these limits by scaling up (choosing another pricing tier, for example) or scaling out (adding new instances).

Целевые показатели масштабируемости и производительности хранилища AzureAzure storage scalability and performance targets

Azure позволяет максимальное количество учетных записей для подписки.Azure allows a maximum number of storage accounts per subscription. Если приложению требуется несколько учетных записей, чем в настоящее время доступны в вашей подписке, создайте новую подписку с помощью дополнительных учетных записей хранения.If your application requires more storage accounts than are currently available in your subscription, create a new subscription with additional storage accounts. Дополнительные сведения см. в статье Подписка Azure, границы, квоты и ограничения службы.For more information, see Azure subscription and service limits, quotas, and constraints.

Если вы превысите целевые показатели масштабируемости и производительности хранилища Azure, приложение будет отрегулировать хранилища.If you exceed Azure storage scalability and performance targets, your application will experience storage throttling. Дополнительные сведения см. в статье Целевые показатели масштабируемости и производительности службы хранилища Azure.For more information, see Azure Storage scalability and performance targets.

Целевые показатели масштабируемости для дисков виртуальной машиныScalability targets for virtual machine disks

Инфраструктуры как услуги (IaaS) виртуальной Машины Azure поддерживают подключение нескольких дисков данных, в зависимости от нескольких факторов, включая размер виртуальной Машины и тип учетной записи хранения.An Azure infrastructure as a service (IaaS) VM supports attaching a number of data disks, depending on several factors, including the VM size and the type of storage account. Если приложение превышает целевые показатели масштабируемости для дисков виртуальных машин, подготовьте дополнительные учетные записи хранения и создайте в них виртуальные диски.If your application exceeds the scalability targets for virtual machine disks, provision additional storage accounts and create the virtual machine disks there. Дополнительные сведения см. в разделе целевые показатели масштабируемости и производительности для дисков ВМ под управлением Windows.For more information, see Scalability and performance targets for VM disks on Windows.

Размер виртуальной машиныVM size

Фактическое ЦП, памяти, диска и ввода-вывода ваших виртуальных машин ограничениям размера виртуальной Машины, ваше приложение может испытывать проблем с емкостью.If the actual CPU, memory, disk, and I/O of your VMs approach the limits of the VM size, your application may experience capacity issues. Для устранения проблем, увеличьте размер виртуальной Машины.To correct the issues, increase the VM size. Размеры виртуальных Машин описаны в размеры виртуальных машин в Azure.VM sizes are described in Sizes for virtual machines in Azure.

Если рабочая нагрузка постоянно изменяется со временем, рассмотрите возможность с помощью масштабирования виртуальных машин задает автоматически масштабировать количество экземпляров виртуальных Машин.If your workload fluctuates over time, consider using virtual machine scale sets to automatically scale the number of VM instances. В противном случае необходимо вручную увеличить или уменьшить число виртуальных машин.Otherwise, you need to manually increase or decrease the number of VMs. Дополнительные сведения см. в разделе Обзор масштабируемых наборов виртуальных машин.For more information, see the virtual machine scale sets overview.

База данных SQL AzureAzure SQL Database

Если уровень базы данных SQL Azure не достаточно удовлетворить требования приложения единицы транзакций базы данных (DTU), использование данных будет регулироваться.If your Azure SQL Database tier isn't adequate to handle your application's Database Transaction Unit (DTU) requirements, your data use will be throttled. Дополнительные сведения о выборе правильного плана обслуживания, см. в разделе базы данных SQL Azure, приобретение моделей.For more information on selecting the correct service plan, see Azure SQL Database purchasing models.

Сторонние службыThird-party services

Если приложение имеет зависимости от сторонних служб, определите, как эти службы может произойти сбой, и сбоев эффект будет иметь на приложение.If your application has dependencies on third-party services, identify how these services can fail and what effect failures will have on your application.

Сторонняя служба могут не включать мониторинга и диагностики.A third-party service might not include monitoring and diagnostics. Журнал вызовов этих служб и сопоставлять их с работоспособности и ведение журналов диагностики с использованием уникального идентификатора приложения.Log calls to these services and correlate them with your application's health and diagnostic logging using a unique identifier. Дополнительные сведения о методиках мониторинга и диагностики см. в разделе руководство по мониторингу и диагностике.For more information on proven practices for monitoring and diagnostics, see Monitoring and diagnostics guidance.

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