Solución de problemas con consultas de diagnóstico avanzadas con Azure Cosmos DB for NoSQL
SE APLICA A: NoSQL
En este artículo, se explicará cómo escribir consultas más avanzadas para ayudar a solucionar problemas relacionados con la cuenta de Azure Cosmos DB mediante registros de diagnóstico enviados a las tablas de Azure Diagnostics (heredado) y específicas del recurso (versión preliminar) .
Para las tablas de Azure Diagnostics, todos los datos se escriben en una única tabla. Los usuarios especifican qué categoría quieren consultar. Si quiere ver la consulta de texto completo de la solicitud, vea Supervisión de datos de Azure Cosmos DB mediante la configuración de diagnóstico en Azure para obtener información sobre cómo habilitar esta característica.
En el caso de las tablas específicas del recurso, los datos se escriben en tablas individuales para cada categoría del recurso. Se recomienda este modo porque:
- Facilita considerablemente el trabajo con los datos.
- Proporciona una mejor detectabilidad de los esquemas.
- Mejora el rendimiento tanto de la latencia de ingesta como de los tiempos de consulta.
Consultas comunes
Las consultas comunes se muestran en las tablas específicas del recurso y de Azure Diagnostics.
Principales consultas N(10) ordenadas por consumo de unidades de solicitud en un período de tiempo determinado
let topRequestsByRUcharge = CDBDataPlaneRequests
| where TimeGenerated > ago(24h)
| project RequestCharge , TimeGenerated, ActivityId;
CDBQueryRuntimeStatistics
| project QueryText, ActivityId, DatabaseName , CollectionName
| join kind=inner topRequestsByRUcharge on ActivityId
| project DatabaseName , CollectionName , QueryText , RequestCharge, TimeGenerated
| order by RequestCharge desc
| take 10
Solicitudes limitadas (statusCode = 429) en un período de tiempo determinado
let throttledRequests = CDBDataPlaneRequests
| where StatusCode == "429"
| project OperationName , TimeGenerated, ActivityId;
CDBQueryRuntimeStatistics
| project QueryText, ActivityId, DatabaseName , CollectionName
| join kind=inner throttledRequests on ActivityId
| project DatabaseName , CollectionName , QueryText , OperationName, TimeGenerated
Consultas con las longitudes de respuesta más grandes (tamaño de carga de la respuesta del servidor)
let operationsbyUserAgent = CDBDataPlaneRequests
| project OperationName, DurationMs, RequestCharge, ResponseLength, ActivityId;
CDBQueryRuntimeStatistics
//specify collection and database
//| where DatabaseName == "DBNAME" and CollectionName == "COLLECTIONNAME"
| join kind=inner operationsbyUserAgent on ActivityId
| summarize max(ResponseLength) by QueryText
| order by max_ResponseLength desc
Consumo de RU por partición física (en todas las réplicas del conjunto de réplicas)
CDBPartitionKeyRUConsumption
| where TimeGenerated >= now(-1d)
//specify collection and database
//| where DatabaseName == "DBNAME" and CollectionName == "COLLECTIONNAME"
// filter by operation type
//| where operationType_s == 'Create'
| summarize sum(todouble(RequestCharge)) by toint(PartitionKeyRangeId)
| render columnchart
Consumo de RU por partición lógica (en todas las réplicas del conjunto de réplicas)
CDBPartitionKeyRUConsumption
| where TimeGenerated >= now(-1d)
//specify collection and database
//| where DatabaseName == "DBNAME" and CollectionName == "COLLECTIONNAME"
// filter by operation type
//| where operationType_s == 'Create'
| summarize sum(todouble(RequestCharge)) by PartitionKey, PartitionKeyRangeId
| render columnchart
Pasos siguientes
- Para obtener más información sobre cómo crear una configuración de diagnóstico para Azure Cosmos DB, vea Creación de una configuración de diagnóstico.
- Para obtener más información sobre cómo crear una configuración de diagnóstico mediante Azure Portal, la CLI de Azure o PowerShell, vea Creación de una configuración de diagnóstico para recopilar los registros y las métricas de la plataforma en Azure.