Solución de problemas con las consultas de diagnóstico
SE APLICA A: NoSQL MongoDB Cassandra Gremlin Table
En este artículo, explicaremos cómo escribir consultas sencillas para ayudar a solucionar incidencias relacionadas con su cuenta de Azure Cosmos DB mediante registros de diagnóstico enviados a tablas de Azure Diagnostics (heredadas) y específicas del recurso (versión preliminar).
En el caso de las tablas de Azure Diagnostics, todos los datos se escriben en una sola tabla y los usuarios tendrán que especificar la categoría que desean consultar.
En el caso de las tablas específicas del recurso, los datos se escriben en tablas individuales para cada categoría del recurso (no disponible para Table API). Recomendamos este modo, ya que facilita el trabajo con los datos, proporciona una mejor detectabilidad de los esquemas y mejora el rendimiento tanto en la latencia de ingesta como en los tiempos de consulta.
Consultas comunes
Esta es una lista de consultas comunes de solución de problemas.
Consulta de las operaciones que tardan más de 3 milisegundos en ejecutarse
Busque operaciones que tengan una duración superior a 3 milisegundos.
AzureDiagnostics
| where toint(duration_s) > 3 and ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| summarize count() by clientIpAddress_s, TimeGenerated
Consulta de agentes de usuario que ejecutan operaciones
Busque agentes de usuario asociados a cada operación.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| summarize count() by OperationName, userAgent_s
Consulta de operaciones de ejecución prolongada
Busque operaciones que se ejecutaron durante mucho tiempo mediante la cuantificación de su tiempo de ejecución en intervalos de cinco segundos.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| project TimeGenerated , duration_s
| summarize count() by bin(TimeGenerated, 5s)
| render timechart
Obtención de las estadísticas de clave de partición para evaluar el sesgo entre las tres primeras particiones de una cuenta de base de datos
Mida la asimetría obteniendo estadísticas comunes para las particiones físicas.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="PartitionKeyStatistics"
| project SubscriptionId, regionName_s, databaseName_s, collectionName_s, partitionKey_s, sizeKb_d, ResourceId
Obtención de los cargos de solicitud para las consultas costosas
Mida el cargo de solicitud (en RU) para las consultas más grandes.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests" and todouble(requestCharge_s) > 10.0
| project activityId_g, requestCharge_s
| join kind= inner (
AzureDiagnostics
| where ResourceProvider =="MICROSOFT.DOCUMENTDB" and Category == "QueryRuntimeStatistics"
| project activityId_g, querytext_s
) on $left.activityId_g == $right.activityId_g
| order by requestCharge_s desc
| limit 100
Detección de las operaciones que consumen la mayor parte de las RU por segundo
Ordene las operaciones según la cantidad de RU por segundo que están usando.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| where TimeGenerated >= ago(2h)
| summarize max(responseLength_s), max(requestLength_s), max(requestCharge_s), count = count() by OperationName, requestResourceType_s, userAgent_s, collectionRid_s, bin(TimeGenerated, 1h)
Obtención de todas las consultas que consumen más de 100 RU por segundo
Busque consultas que consuman más RU por segundo que una cantidad de línea de base.
Esta consulta se combina con datos de DataPlaneRequests
y QueryRunTimeStatistics
.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests" and todouble(requestCharge_s) > 100.0
| project activityId_g, requestCharge_s
| join kind= inner (
AzureDiagnostics
| where ResourceProvider =="MICROSOFT.DOCUMENTDB" and Category == "QueryRuntimeStatistics"
| project activityId_g, querytext_s
) on $left.activityId_g == $right.activityId_g
| order by requestCharge_s desc
| limit 100
Obtención de los cargos de una solicitud y la duración de la ejecución de una consulta
Obtenga estadísticas tanto en el cargo de solicitud como en la duración de una consulta específica.
AzureDiagnostics
| where TimeGenerated >= ago(24hr)
| where Category == "QueryRuntimeStatistics"
| join (
AzureDiagnostics
| where TimeGenerated >= ago(24hr)
| where Category == "DataPlaneRequests"
) on $left.activityId_g == $right.activityId_g
| project databasename_s, collectionname_s, OperationName1 , querytext_s,requestCharge_s1, duration_s1, bin(TimeGenerated, 1min)
Obtención de la distribución de distintas operaciones
Agrupe las operaciones según la distribución de recursos.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| where TimeGenerated >= ago(2h)
| summarize count = count() by OperationName, requestResourceType_s, bin(TimeGenerated, 1h)
Obtención del rendimiento máximo que ha consumido una partición
Obtenga el rendimiento máximo de una partición física.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| where TimeGenerated >= ago(2h)
| summarize max(requestCharge_s) by bin(TimeGenerated, 1h), partitionId_g
Obtención de la información sobre el consumo de RU por segundo de las claves de partición
Mida el consumo de RU por segundo según la clave de partición y por segundo.
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.DOCUMENTDB" and Category == "PartitionKeyRUConsumption"
| summarize total = sum(todouble(requestCharge_s)) by databaseName_s, collectionName_s, partitionKey_s, TimeGenerated
| order by TimeGenerated asc
Obtención del cargo de la solicitud de una clave de partición específica
Mida el cargo de solicitud por clave de partición.
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.DOCUMENTDB" and Category == "PartitionKeyRUConsumption"
| where parse_json(partitionKey_s)[0] == "2"
Obtención de las principales claves de partición con el mayor número de RU por segundo consumidas en un período específico
Ordene las claves de partición en función del consumo de la unidad de solicitud dentro de un período de tiempo.
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.DOCUMENTDB" and Category == "PartitionKeyRUConsumption"
| where TimeGenerated >= datetime("11/26/2019, 11:20:00.000 PM") and TimeGenerated <= datetime("11/26/2019, 11:30:00.000 PM")
| summarize total = sum(todouble(requestCharge_s)) by databaseName_s, collectionName_s, partitionKey_s
| order by total desc
Obtención de los registros de las claves de partición cuyo tamaño de almacenamiento es superior a los 8 GB
Busque los registros de las claves de partición filtradas por el tamaño de almacenamiento por clave de partición.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="PartitionKeyStatistics"
| where todouble(sizeKb_d) > 800000
Obtención de las latencias P99 o P50 en las operaciones, los cargos de solicitud o la longitud de la respuesta
Mida el rendimiento de la latencia de operación, el uso de RU por segundo y la duración de respuesta.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| where TimeGenerated >= ago(2d)
| summarize percentile(todouble(responseLength_s), 50), percentile(todouble(responseLength_s), 99), max(responseLength_s), percentile(todouble(requestCharge_s), 50), percentile(todouble(requestCharge_s), 99), max(requestCharge_s), percentile(todouble(duration_s), 50), percentile(todouble(duration_s), 99), max(duration_s), count() by OperationName, requestResourceType_s, userAgent_s, collectionRid_s, bin(TimeGenerated, 1h)
Obtención delos registros del plano de control
Obtenga el plano de control largo mediante ControlPlaneRequests
.
Sugerencia
Recuerde activar la marca tal como se describe en Deshabilitar el acceso de escritura de metadatos basados en claves y ejecute las operaciones con Azure PowerShell, la CLI de Azure o Azure Resource Manager.
AzureDiagnostics
| where Category =="ControlPlaneRequests"
| summarize by OperationName
Pasos siguientes
- Para más información sobre cómo crear una configuración de diagnóstico para Azure Cosmos DB, consulte Creación de una configuración de diagnóstico.
- Para información más detallada sobre cómo crear una configuración de diagnóstico mediante Azure Portal, la CLI o PowerShell, consulte Creación de una configuración de diagnóstico para recopilar los registros y las métricas de la plataforma en Azure.