Рекомендации по сбору данных о производительности

Применяется к этой рекомендации по повышению эффективности производительности Azure Well-Architected Framework:

PE:04 Сбор данных о производительности. Компоненты и потоки рабочей нагрузки должны предоставлять автоматические, непрерывные и значимые метрики и журналы. Сбор данных на разных уровнях рабочей нагрузки, таких как приложения, платформа, данные и уровни операционной системы.

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

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

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

Определения

Термин Определение
Журналы действий Журналы, отслеживающие операции управления ресурсами, например удаление ресурса.
Журналы приложений Журналы, которые отслеживают сведения о событиях приложения, ошибках и других действиях, например, используют входы и сбои подключения к базе данных.
Средство мониторинга производительности приложений (APM) Средство, которое отслеживает производительность приложения и сообщает о ней.
Инструментирование кода Прямой или косвенный захват метрик производительности с точки зрения кода приложения. Захваченные метрики включают метрики потока, использование ресурсов и метрики, относящиеся к языку или среде выполнения.
Распределенная трассировка Сбор и сопоставление метрик между компонентами распределенной рабочей нагрузки.
Приемник метрик Место хранения метрик, которое сопоставляет данные временных рядов для анализа.
Журналы платформы Данные диагностики и аудита, в том числе журналы ресурсов, журналы действий и журналы аудита.
Метрики платформы Числовые значения, которые записывают производительность рабочей нагрузки в определенное время.
Журналы ресурсов Данные, создаваемые системой. Он предоставляет сведения о состоянии системы.
Ошибки Rx/Tx Количество ошибок получения и передачи на сетевом интерфейсе.
Структурированное ведение журнала Определение значимого формата для ведения журнала сообщений, как правило, в виде пар "ключ-значение".

Ключевые стратегии проектирования

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

Централизация данных о производительности

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

Компромисс. Изучите затраты на сбор метрик и журналов. Как правило, чем больше метрик и журналов вы собираете, тем выше стоимость.

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

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

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

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

  • Разделение целевых показателей производительности и бизнес-метрик. Группы операций и разработчиков используют целевые показатели производительности для мониторинга работоспособности рабочих нагрузок и достижения бизнес-целей. Бизнес-метрики связаны с бизнес-целями или отчетами клиентов. Записывайте бизнес-метрики в отдельный поток данных, даже если данные перекрываются напрямую. Разделение обеспечивает гибкость при сборе нужных данных и независимом анализе данных.

Определение политик хранения

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

Сбор данных о производительности приложений

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

Код инструментирования

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

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

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

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

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

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

При инструментировании кода для мониторинга производительности учитывайте следующие стратегии:

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

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

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

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

  • Используйте стандарты телеметрии. Рассмотрите возможность использования библиотек инструментирования средств APM и средств, созданных на основе стандарта телеметрии, например OpenTelemetry.

Включение распределенной трассировки

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

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

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

  3. Настройте централизованную систему сбора данных трассировки. Эта система собирает и сохраняет данные трассировки, созданные приложениями и службами.

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

Сбор журналов приложений

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

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

Сбор данных о производительности ресурсов

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

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

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

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

Сбор данных базы данных и хранилища

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

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

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

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

  • Использование емкости. Использование емкости — это объем используемой емкости хранилища и доступный объем. Данные об использовании емкости помогают организациям спланировать будущие потребности в хранилище.

Для баз данных также следует собирать метрики для конкретных баз данных:

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

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

  • Производительность индекса. Данные о производительности индексов базы данных, такие как фрагментация индекса, статистика использования и оптимизация запросов.

  • Использование ресурсов. Данные, включая ЦП, память, дисковое пространство, операции ввода-вывода и пропускную способность сети.

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

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

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

Сбор данных операционной системы (если применимо)

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

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

Область производительности Процесс или функция
ЦП — Загрузка ЦП (режим пользователя или привилегированный режим)
— длина очереди ЦП (количество процессов, ожидающих времени ЦП)
Процесс — Число потоков обработки
— Число дескрипторов процесса
Память — Зафиксированная память
— Доступная память
— Страниц в секунду
— Использование пространства для переключения
Диск — Чтение с диска
— Операции записи на диск
— Пропускная способность диска
— Использование места на диске
Сеть — Пропускная способность сетевого интерфейса
— Ошибки Rx/Tx сетевого интерфейса

Проверка и анализ данных

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

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

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

Упрощение поддержки Azure

Централизация, сегментирование и хранение данных о производительности. Azure Monitor собирает и объединяет данные с каждого уровня и компонента рабочей нагрузки в нескольких подписках и клиентах Azure и других компонентов. Он хранит данные на общей платформе данных для использования общим набором средств, которые могут сопоставлять, анализировать, визуализировать данные и (или) реагировать на них.

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

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

Счетчики производительности — это эффективный способ мониторинга производительности приложения. Azure предоставляет различные счетчики производительности, которые можно использовать для сбора данных об использовании ЦП, использовании памяти, дисковом вводе-выводе, сетевом трафике и т. д. Если вы настроите приложение для выдачи данных счетчика производительности, Azure Monitor собирает и сохраняет данные для анализа.

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

Сбор данных о производительности базы данных и хранилища. Azure Monitor позволяет собирать данные о производительности баз данных в Azure. Вы можете включить мониторинг для базы данных Azure SQL, База данных Azure для MySQL, База данных Azure для PostgreSQL и других служб баз данных. Azure Monitor предоставляет метрики и журналы для мониторинга производительности базы данных, включая использование ЦП, использование памяти и производительность запросов. Чтобы получать уведомления о проблемах, можно настроить оповещения на основе пороговых значений производительности.

Azure предлагает рекомендации по производительности для баз данных, таких как SQL Server в Azure Виртуальные машины. Эти рекомендации помогут оптимизировать производительность рабочих нагрузок базы данных. К ним относятся рекомендации по сбору счетчиков производительности, сбору статистики ожидания и сбору данных о производительности в часы пиковой нагрузки.

Azure Аналитика Службы хранилища позволяет собирать данные о производительности для служб хранилища Azure, таких как хранилище BLOB-объектов, хранилище таблиц и хранилище очередей. Вы можете включить ведение журнала и метрики для учетных записей хранения, чтобы отслеживать ключевые показатели производительности, такие как количество операций чтения и записи, пропускная способность и задержка.

Сбор данных о производительности операционной системы: Расширение Диагностика Azure позволяет собирать подробные данные о производительности с виртуальных машин, включая ЦП, память, дисковые операции ввода-вывода и сетевой трафик. Эти данные можно отправлять в Azure Monitor или другие службы хранилища для анализа и создания оповещений.

Проверка и анализ данных о производительности. В Azure Monitor можно использовать журналы Azure Monitor для сбора, анализа и визуализации данных журналов из приложений и систем. Вы можете настроить журналы Azure Monitor для приема журналов из приложения, включая журналы уровня приложения и журналы инфраструктуры. Агрегируя журналы, вы можете выполнять перекрестные запросы к событиям и получать аналитические сведения о производительности приложения. Дополнительные сведения см. в разделах Расчеты и параметры затрат на журналы Azure Monitor иЦены на Azure Monitor.

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

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

Примеры

Контрольный список для оптимизации производительности

См. полный набор рекомендаций.