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

ПРИМЕНИМО К: API SQL API Cassandra API Gremlin API таблиц API Azure Cosmos DB для MongoDB

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

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

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

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

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

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

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

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

    Метрики производительности Cosmos DB на портале Azure

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

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

    • Запросы. Эта вкладка показывает общее число обработанных запросов с разбивкой по кода состояния и типам операции, а также число ошибок с кодом ответа 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 на вкладке "Хранилище" можно просмотреть сведения о потреблении хранилища на основе данных и индекса.

// 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);

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

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

В пакетах SDK для API SQL можно просмотреть статистику выполнения запросов в базе данных 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;

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

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

Теперь вы знаете, как отслеживать и отлаживать неполадки с помощью метрик, предоставленных на портале Azure. Узнать больше о повышении производительности базы данных можно из следующих статей: