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

Применяется к этой рекомендации по повышению производительности платформы 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 Insights. Это средство упрощает операции производительности. Рассмотрим инструменты платформы при выборе платформы и инвестировать в пользовательские инструменты или отчеты.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Область производительности Процесс или функция
ЦП — использование ЦП (режим пользователя или привилегированный режим)
— длина очереди ЦП (количество процессов, ожидающих времени ЦП)
Обработка — Число потоков обработки
— Число дескрипторов обработки
Память — зафиксированная память
— доступная память
— Страницы в секунду
— переключение использования пространства
Диск — чтение диска
— операции записи дисков
— пропускная способность диска
— использование места на диске
Network — пропускная способность сетевого интерфейса
— ошибки 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. Вы можете включить мониторинг для База данных SQL Azure, База данных 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. Выберите соответствующие действия для реагирования на конкретный сценарий генерации оповещений.

Примеры

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

Ознакомьтесь с полным набором рекомендаций.