Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se explica cómo escribir consultas sencillas para ayudar a solucionar problemas con la cuenta de Azure Cosmos DB mediante registros de diagnóstico enviados a tablas de AzureDiagnostics (heredadas) y específicas de recursos (versión preliminar).
En el caso de las tablas de Azure Diagnostics, todos los datos se escriben en una sola tabla y los usuarios deben especificar qué categoría desea consultar.
En el caso de las tablas específicas de recursos, los datos se escriben en tablas individuales para cada categoría del recurso (no disponible para table API). Se recomienda este modo, ya que facilita mucho 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 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 las operaciones que se ejecutaron durante mucho tiempo mediante la asignació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 estadísticas de clave de partición para evaluar la asimetría entre las tres particiones principales 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 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
Búsqueda de las operaciones que toman la mayoría de las RU/s
Ordene las operaciones por la cantidad de RU/s que usan.
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)
Obtener todas las consultas que consumen más de 100 RU/s
Busque consultas que consuman más RU/s que una cantidad de línea 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 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 diferentes operaciones
Agrupa las operaciones por 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 información sobre el consumo de RU/s de las claves de partición por segundo
Mida el consumo de RU/s por segundo por clave de partición.
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 solicitud para 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"
Obtener las claves de partición principales con la mayoría de las RU/s consumidas en un período específico
Ordene las claves de partición en función del consumo de unidades 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
Obtiene los registros de las claves de partición cuyo tamaño de almacenamiento es superior a 8 GB.
Busque registros para 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
Obtener latencias P99 o P50 para operaciones, cargo de solicitud o la longitud de la respuesta
Medir el rendimiento de; latencia de operación, uso de RU/s y longitud 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 de registros del plano de control
Obtenga el plano de control de larga duración mediante ControlPlaneRequests.
Sugerencia
Recuerde activar la marca descrita en Deshabilitar el acceso de escritura de metadatos basados en claves y ejecutar las operaciones mediante 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 la configuración de diagnóstico para Azure Cosmos DB, consulte Creación de la configuración de diagnóstico.
- Para obtener información 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 métricas y registros de plataforma en Azure.