Risolvere i problemi relativi alle query di diagnostica avanzate con Azure Cosmos DB per Apache Gremlin

SI APPLICA A: Nosql Mongodb Cassandra Gremlin

In questo articolo verrà illustrato come scrivere query più avanzate per risolvere i problemi relativi all'account Azure Cosmos DB usando i log di diagnostica inviati alle tabelle Diagnostica di Azure (legacy) e specifiche delle risorse (anteprima).

Per Diagnostica di Azure tabelle, 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 delle risorse, 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 che nei tempi di query.

Query comuni

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

Top N(10) Request Unit (UR) che utilizza richieste o query in un intervallo di tempo specifico

CDBGremlinRequests
| project PIICommandText, ActivityId, DatabaseName , CollectionName
| join kind=inner topRequestsByRUcharge on ActivityId
| project DatabaseName , CollectionName , PIICommandText , RequestCharge, TimeGenerated
| order by RequestCharge desc
| take 10

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

CDBGremlinRequests
| project PIICommandText, ActivityId, DatabaseName , CollectionName
| join kind=inner throttledRequests on ActivityId
| project DatabaseName , CollectionName , PIICommandText , OperationName, TimeGenerated

Query con lunghezze di risposta elevate (dimensioni del payload della risposta del server)

CDBGremlinRequests
//specify collection and database
 //| where DatabaseName == "DB NAME" and CollectionName == "COLLECTIONNAME"
| join kind=inner operationsbyUserAgent on ActivityId
| summarize max(ResponseLength) by PIICommandText
| 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