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

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

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

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

Замечание

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

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

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

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

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

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

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

Скриншот вкладки

С помощью этой диаграммы можно определить, есть ли горячая секция. Идентификаторы PartitionKeyRangeID соответствуют физическим секциям. Метрика нормализованного потребления единиц запроса — это значение от 0 % до 100 %, которое помогает измерять использование зарезервированной пропускной способности в базе данных или контейнере. Неравномерное распределение пропускной способности может привести к перегретым секциям, что может привести к ограничению запросов и может потребовать перераспределения. После определения того, какой ключ раздела вызывает отклонение в распределении, может потребоваться переразделить контейнер с более равномерным распределением ключа раздела. Дополнительные сведения о секционированиях в 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, в которой хранятся метаданные учетной записи.

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

Снимок экрана панели сведений, где выделен график запросов метаданных с кодом 429 на вкладке

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

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

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

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