Risolvere i problemi relativi alle query di diagnostica avanzate con Azure Cosmos DB for MongoDB

SI APPLICA A: NoSQL MongoDB Cassandra Gremlin

Questo articolo illustra come scrivere query più avanzate per risolvere i problemi relativi all'account Azure Cosmos DB usando i log di diagnostica inviati a Diagnostica di Azure (legacy) e alle tabelle specifiche della risorsa (anteprima).

Per le tabelle di Diagnostica di Azure, tutti i dati vengono scritti in una singola tabella. Gli utenti specificano la categoria su cui si vuole eseguire una query. Per visualizzare la query full-text della richiesta, vedere Monitorare i dati di Azure Cosmos DB usando le impostazioni di diagnostica in Azure per informazioni su come abilitare questa funzionalità.

Per le tabelle specifiche della risorsa, i dati sono scritti in singole tabelle per ogni categoria della risorsa. È consigliabile usare questa modalità perché:

  • Semplifica notevolmente l'uso dei dati.
  • Offre una migliore individuabilità degli schemi.
  • Migliora le prestazioni sia nella latenza di inserimento dei dati che nei tempi di query.

Query comuni

Le query comuni vengono visualizzate nelle tabelle specifiche della risorsa e in quelle di Diagnostica di Azure.

N(10) richieste o query principali ordinate in base al consumo di unità richiesta (UR) in un intervallo di tempo specifico

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

Richieste limitate (statusCode = 429 o 16500) in un intervallo di tempo specifico

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

Richieste di timeout (statusCode = 50) in un intervallo di tempo specifico

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

Query con risposte di lunghezza elevata (dimensioni del payload della risposta del server)

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

Consumo di UR per partizione fisica (in tutte le repliche nel set di repliche)

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

Consumo di UR per partizione logica (in tutte le repliche nel set di repliche)

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  

Passaggi successivi