Устранение неполадок с расширенными диагностическими запросами в Azure Cosmos DB для MongoDB

ПРИМЕНЯЕТСЯ К: NoSQL Mongodb Кассандра Гремлин

Important

Вы хотите перенести существующее приложение MongoDB или использовать функции языка запросов MongoDB (MQL)? Рассмотрим Azure DocumentDB.

Вы ищете решение для баз данных для крупномасштабных сценариев с соглашением об уровне обслуживания (SLA) с доступностью 99,999%, мгновенным автомасштабированием и автоматическим переключением на резервные ресурсы в нескольких регионах? Рассмотрим Azure Cosmos DB для NoSQL.

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

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

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

  • Значительно упрощает работу с данными.
  • Обеспечивает более эффективное обнаружение схем.
  • Улучшает производительность как при приеме данных, так и при выполнении запросов.

Стандартные запросы

Показаны распространенные запросы в таблицах, специфичных для ресурсов и диагностики Azure.

Топ N(10) запросов или запросов на выполнение, потребляющих наибольшее количество единиц ресурсов (RU) за определенный период времени.

//Enable full-text query to view entire query text
CDBMongoRequests
| where TimeGenerated > ago(24h)
| project PIICommandText, ActivityId, DatabaseName , CollectionName, RequestCharge
| order by RequestCharge desc
| take 10

Запросы ограничены (statusCode = 429 или 16500) в определенном временном окне

CDBMongoRequests
| where TimeGenerated > ago(24h)
| where ErrorCode == "429" or ErrorCode == "16500"
| project DatabaseName, CollectionName, PIICommandText, OperationName, TimeGenerated

Запросы с истекшим сроком ожидания (statusCode = 50) в определенном временном окне

CDBMongoRequests
| where TimeGenerated > ago(24h)
| where ErrorCode == "50"
| project DatabaseName, CollectionName, PIICommandText, OperationName, TimeGenerated

Запросы с длительным ответом (размер полезной нагрузки ответа сервера)

CDBMongoRequests
//specify collection and database
//| where DatabaseName == "DB NAME" and CollectionName == "COLLECTIONNAME"
| summarize max(ResponseLength) by PIICommandText, RequestCharge, DurationMs, OperationName, TimeGenerated
| order by max_ResponseLength desc

Потребление ресурсов физическим разделом (по всем репликам в наборе реплик)

CDBPartitionKeyRUConsumption
| where TimeGenerated >= now(-1d)
//specify collection and database
//| where DatabaseName == "DB NAME" and CollectionName == "COLLECTIONNAME"
// filter by operation type
//| where operationType_s == 'Create'
| summarize sum(todouble(RequestCharge)) by toint(PartitionKeyRangeId)
| render columnchart

Потребление RU логическим разделом (по всем репликам в репликасете)

CDBPartitionKeyRUConsumption
| where TimeGenerated >= now(-1d)
//specify collection and database
//| where DatabaseName == "DB NAME" and CollectionName == "COLLECTIONNAME"
// filter by operation type
//| where operationType_s == 'Create'
| summarize sum(todouble(RequestCharge)) by PartitionKey, PartitionKeyRangeId
| render columnchart  

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