Поделиться через


Мониторинг и отладка с помощью аналитических сведений в Azure Cosmos DB

Область применения: Nosql Mongodb Кассандра Гремлин Таблица

Azure Cosmos DB предоставляет аналитические сведения о пропускной способности, ресурсах хранилища, согласованности, доступности и задержке. На портале Azure отображается общее представление этих метрик. Кроме того, вы можете просматривать метрики Azure Cosmos DB из API Azure Monitor. Значения измерений для таких метрик, как имя контейнера, не чувствительны к регистру. Поэтому при сравнении строк для этих значений измерения необходимо использовать нечувствительное сравнение регистра. Сведения о просмотре метрик из Azure Monitor см. в статье Monitor Azure Cosmos DB.

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

Просмотр аналитических сведений на портале Azure

  1. Войдите на портал Azure и перейдите в учетную запись Azure Cosmos DB.

  2. Метрики для учетной записи можно просматривать в областях Метрики и Аналитические сведения.

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

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

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

    Снимок экрана: метрики производительности Azure Cosmos DB в портал Azure.

  4. В области Аналитические сведения (предварительная версия) доступны следующие метрики:

    • Пропускная способность. На этой вкладке показано общее количество единиц запроса, потребляемых или неудачных (код ответа 429), так как пропускная способность или емкость хранилища, подготовленная для контейнера, превысилась.

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

    • Хранилище. На этой вкладке показан размер данных и использования индекса за выбранный период времени.

    • Доступность На этой вкладке отображается процент успешных запросов по сравнению с общими запросами в час. Соглашения об уровне обслуживания Azure Cosmos DB определяют частоту успешного выполнения.

    • Задержка. На этой вкладке показана задержка чтения и записи, наблюдаемая Azure Cosmos DB в регионе, где работает ваша учетная запись. Вы можете визуализировать задержку для геореплицированной учетной записи в разных регионах. Кроме того, можно просматривать задержку на стороне сервера различными операциями. Эта метрика не представляет собой задержку сквозного запроса.

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

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

В следующих разделах описаны распространенные сценарии, в которых можно использовать метрики Azure Cosmos DB.

Сведения о количестве успешных запросов и запросов, приводящих к ошибкам

Чтобы приступить к работе, перейдите к портал Azure и перейдите на панель "Аналитика". На этой панели откройте вкладку "Запросы ". На вкладке "Запросы" показана диаграмма с общими запросами, сегментированных по коду состояния и типу операции. Дополнительные сведения о кодах состояния HTTP для Azure Cosmos DB см. в этой статье.

Наиболее распространенный код состояния ошибки — 429 (ограничение скорости и регулирование). Эта ошибка означает, что запросы к Azure Cosmos DB превышают квоту подготовленной пропускной способности. Чтобы решить эту проблему, чаще всего следует увеличить число единиц запроса определенной коллекции. Дополнительные сведения см. в статье "Общие сведения о подготовленной пропускной способности в Azure Cosmos DB"

Снимок экрана: общий объем запросов по коду состояния, регулируемым запросам и общим запросам по типу операции.

Определение потребляемой пропускной способности по диапазону ключей секций

При использовании масштабируемого приложения важно иметь достаточное количество ключей секции. Чтобы определить распределение пропускной способности для любого секционированного контейнера с разбивкой по идентификаторам диапазонов ключей секций, перейдите в колонку Аналитические сведения. Откройте вкладку "Пропускная способность ". Нормализованное потребление ЕЗ/с в разных диапазонах ключей секции отображается на диаграмме.

Снимок экрана: вкладка

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

Определение использования данных и индексов

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

Снимок экрана: панель

Сравнение размера данных и размера индекса

В Azure Cosmos DB общее используемое хранилище — это сочетание размера данных и размера индекса. Обычно размер индекса — это часть объема данных. Дополнительные сведения см. в статье Размер индекса. На панели метрик в портал Azure вкладка "Хранилище" демонстрирует разбивку потребления хранилища на основе данных и индекса.

// Measure the document size usage (which includes the index size)  
ResourceResponse<DocumentCollection> collectionInfo = await client.ReadDocumentCollectionAsync(UriFactory.CreateDocumentCollectionUri("db", "coll"));
 Console.WriteLine("Document size quota: {0}, usage: {1}", collectionInfo.DocumentQuota, collectionInfo.DocumentUsage);

Чтобы сэкономить пространство индекса, вы можете настроить политику индексирования.

Отладка медленных запросов

В API для пакетов SDK NoSQL Azure Cosmos DB предоставляет статистику выполнения запросов.

IDocumentQuery<dynamic> query = client.CreateDocumentQuery(
 UriFactory.CreateDocumentCollectionUri(DatabaseName, CollectionName),
 "SELECT * FROM c WHERE c.city = 'Seattle'",
 new FeedOptions
 {
 PopulateQueryMetrics = true,
 MaxItemCount = -1,
 MaxDegreeOfParallelism = -1,
 EnableCrossPartitionQuery = true
 }).AsDocumentQuery();
FeedResponse<dynamic> result = await query.ExecuteNextAsync();

// Returns metrics by partition key range Id
IReadOnlyDictionary<string, QueryMetrics> metrics = result.QueryMetrics;

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

Мониторинг запросов уровня управления

Azure Cosmos DB применяет ограничения на количество запросов метаданных, которые могут выполняться через 5 минут. Запросы уровня управления, которые проходят через эти ограничения, могут столкнуться с регулированием. Запросы метаданных могут в некоторых случаях использовать пропускную способность master partition в пределах учетной записи, содержащей все метаданные учетной записи. Запросы уровня управления, которые проходят через объем пропускной способности, будут испытывать ограничение скорости (429s).

Чтобы приступить к работе, перейдите к портал Azure и перейдите на панель "Аналитика". На этой панели откройте вкладку "Система ". На вкладке "Система" показаны две диаграммы. Один из них, показывающий все запросы метаданных для учетной записи. Во втором показан запрос на потребление пропускной способности метаданных из учетной записи, в которой хранятся метаданные учетной записи master partition .

Снимок экрана: панель

Снимок экрана: панель

Диаграмма "Запрос метаданных по коду состояния" выше объединяет запросы при увеличении детализации по мере увеличения диапазона времени. Самый большой диапазон времени, который можно использовать в течение 5 минут, составляет 4 часа. Чтобы отслеживать запросы метаданных в большем диапазоне времени с определенной степенью детализации, используйте метрики Azure. Создайте диаграмму и выберите метрики запросов метаданных. В правом верхнем углу выберите 5 минут для детализации времени, как показано ниже. Метрики также позволяют пользователям создавать оповещения на них, что делает их более полезными, чем аналитика.

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

Следующие шаги

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