Supervisión y depuración con las conclusiones en Azure Cosmos DB

SE APLICA A: NoSQL MongoDB Cassandra Gremlin Table

Azure Cosmos DB proporciona conclusiones sobre rendimiento, almacenamiento, coherencia, disponibilidad y latencia. En Azure Portal se proporciona una vista agregada de estas métricas. También puede ver las métricas de Azure Cosmos DB desde la API de Azure Monitor. Los valores de la dimensión para las métricas, como el nombre del contenedor, no distinguen entre mayúsculas y minúsculas. Por tanto, debe usar una comparación sin distinción entre mayúsculas y minúsculas al realizar comparaciones de cadenas en estos valores de dimensión. Para obtener información sobre cómo ver las métricas de Azure Monitor, consulte Supervisión de Azure Cosmos DB.

Este artículo lo guía a través de casos de uso comunes y cómo se pueden utilizar las conclusiones de Azure Cosmos DB para analizar y depurar estos problemas. De manera predeterminada, las conclusiones de las métricas se recopila cada cinco minutos y se mantiene durante siete días.

Visualización de la información desde Azure Portal

  1. Inicie sesión en Azure Portal y vaya a su cuenta de Azure Cosmos DB.

  2. Puede ver las métricas de la cuenta en el panel Métricas o en el panel Conclusiones.

    • Métricas: en este panel, se proporcionan métricas numéricas que se recopilan en intervalos periódicos y que describen algún aspecto de un sistema en un momento determinado. Por ejemplo, puede consultar y supervisar la métrica de latencia del lado servidor, la métrica de uso de unidades de solicitud normalizadas, entre otras.

    • Conclusiones: en este panel se proporciona una experiencia de supervisión personalizada para Azure Cosmos DB. La información usa las mismas métricas y registros que se recopilan en Azure Monitor, y muestra una vista agregada correspondiente a la cuenta.

  3. Abra el panel Conclusiones. De manera predeterminada, el panel Información muestra las métricas de rendimiento, solicitudes, almacenamiento, disponibilidad, latencia, sistema y operaciones de administración para cada contenedor de la cuenta. Puede seleccionar el Intervalo de tiempo, la Base de datos y el Contenedor cuyas conclusiones desea consultar. La pestaña Información general muestra el uso de RU/s, el uso de datos, el uso de índices, las solicitudes limitadas y el consumo normalizado de RU/s para la base de datos y el contenedor seleccionados.

    Captura de pantalla de las métricas de rendimiento de Azure Cosmos DB en Azure Portal.

  4. Las métricas siguientes están disponibles en el panel Conclusiones:

    • Rendimiento. Esta pestaña muestra el número total de unidades de solicitud consumidas o con errores (código de respuesta 429) debido a que se ha superado la capacidad de almacenamiento o rendimiento que se ha aprovisionado para el contenedor.

    • Requests. Esta pestaña muestra el número total de solicitudes procesadas por código de estado, por tipo de operación y el recuento de las solicitudes con errores (código de respuesta 429). Se producirá un error en las solicitudes cuando se supere la capacidad de almacenamiento o rendimiento aprovisionada para el contenedor.

    • Almacenamiento. Esta pestaña muestra el tamaño de los datos y el uso de índices durante el período seleccionado.

    • Disponibilidad. Esta pestaña muestra el porcentaje de solicitudes que se completan correctamente respecto de las solicitudes totales por hora. Los Acuerdos de Nivel de Servicio de Azure Cosmos DB definen la tasa de éxito.

    • Latencia. Esta pestaña muestra la latencia de lectura y escritura que observa Azure Cosmos DB en la región donde funciona su cuenta. Puede visualizar la latencia entre regiones para una cuenta de replicación geográfica. También puede visualizar la latencia de lado servidor por distintas operaciones. Esta métrica no representa la latencia de solicitud de un extremo a otro.

    • Sistema. Esta pestaña muestra cuántas solicitudes de metadatos atiende la partición principal. También ayuda a identificar las solicitudes limitadas.

    • Operaciones de administración. Esta pestaña muestra las métricas correspondientes a actividades de administración de cuentas como la creación de una cuenta, su eliminación, actualizaciones de claves, configuración de replicación y red.

En las siguientes secciones se explican escenarios comunes donde puede usar las métricas de Azure Cosmos DB.

Descripción de cuántas solicitudes se realizan correctamente o causan errores

Para empezar, vaya a Azure Portal y navegue a la hoja Información. En este panel, abra la pestaña Solicitudes. Esta pestaña muestra un gráfico con el total de solicitudes segmentado por código de estado y tipo de operación. Para más información sobre los códigos de estado HTTP, consulte HTTP Status Codes for Azure Cosmos DB (Códigos de estado HTTP para Azure Cosmos DB).

El código de estado de error más común es 429 (limitación de tasa/limitación). Este error significa que las solicitudes a Azure Cosmos DB superan el rendimiento aprovisionado. La solución más común para este problema consiste en escalar verticalmente las RU para la colección dada. Para más información, consulte Introducción al rendimiento aprovisionado en Azure Cosmos DB

Captura de pantalla que muestra el número total de solicitudes por código de estado, solicitudes limitadas y solicitudes totales por tipo de operación.

Determinación del consumo de rendimiento por un intervalo de claves de partición

Tener una buena cardinalidad de las claves de partición es esencial para cualquier aplicación escalable. A fin de determinar la distribución de rendimiento de cualquier contenedor particionado dividido en identificadores de intervalos de claves de partición, vaya al panel Conclusiones. Abra la pestaña Rendimiento. En el gráfico se muestra el consumo normalizado de RU/s en intervalos de claves de partición distintos.

Captura de pantalla de la pestaña Rendimiento, en la que se muestra el consumo de RU/s.

Este gráfico le permite identificar si hay una partición activa. Una distribución de rendimiento desigual puede provocar particiones activas, lo que puede dar lugar a solicitudes limitadas y la necesidad de volver a crear particiones. Después de identificar qué clave de partición está causando el sesgo en la distribución, puede que tenga que volver a crear particiones en el contenedor con una clave de partición más distribuida. Para más información sobre la creación de particiones en Azure Cosmos DB, consulte Creación de particiones y escalado horizontal en Azure Cosmos DB.

Determinación del uso de índices y los datos

Es importante determinar la distribución de almacenamiento de cualquier contenedor con particiones por uso de datos, uso de índices y uso de documentos. Puede minimizar el uso de índices, maximizar el uso de datos y optimizar las consultas. Para obtener esta información, vaya al panel Información y abra la pestaña Almacenamiento.

Captura de pantalla del panel Información, en la que se resalta la pestaña Almacenamiento.

Comparación del tamaño de los datos con el tamaño de índice

En Azure Cosmos DB, el almacenamiento total consumido es la combinación del tamaño de los datos y del tamaño del índice. Normalmente, el tamaño del índice es una fracción del tamaño de los datos. Para obtener más información, consulte el artículo Tamaño de índice. En el panel Métricas de Azure Portal, la pestaña Almacenamiento muestra el desglose de consumo de almacenamiento en función de los datos y el índice.

// Measure the document size usage (which includes the index size)  
ResourceResponse<DocumentCollection> collectionInfo = await client.ReadDocumentCollectionAsync(UriFactory.CreateDocumentCollectionUri("db", "coll"));
 Console.WriteLine("Document size quota: {0}, usage: {1}", collectionInfo.DocumentQuota, collectionInfo.DocumentUsage);

Si desea conservar el espacio de índice, puede ajustar la directiva de indexación.

Depuración de consultas lentas

En los SDK de la API para NoSQL, Azure Cosmos DB proporciona estadísticas de ejecución de consultas.

IDocumentQuery<dynamic> query = client.CreateDocumentQuery(
 UriFactory.CreateDocumentCollectionUri(DatabaseName, CollectionName),
 "SELECT * FROM c WHERE c.city = 'Seattle'",
 new FeedOptions
 {
 PopulateQueryMetrics = true,
 MaxItemCount = -1,
 MaxDegreeOfParallelism = -1,
 EnableCrossPartitionQuery = true
 }).AsDocumentQuery();
FeedResponse<dynamic> result = await query.ExecuteNextAsync();

// Returns metrics by partition key range Id
IReadOnlyDictionary<string, QueryMetrics> metrics = result.QueryMetrics;

QueryMetrics proporciona información detallada sobre cuánto tardó cada componente de la consulta en ejecutarse. La causa principal más común para las consultas de larga duración son los análisis, lo que significa que la consulta no pudo aplicar los índices. Este problema puede resolverse con una mejor condición de filtro.

Supervisión de solicitudes del plano de control

Azure Cosmos DB aplica límites en el número de solicitudes de metadatos que se pueden realizar en intervalos consecutivos de 5 minutos. Las solicitudes del plano de control que superan estos límites pueden experimentar limitación. Las solicitudes de metadatos pueden, en algunos casos, consumir rendimiento frente a un master partition en una cuenta que contenga todos los metadatos de la cuenta. Las solicitudes del plano de control que superan la cantidad de rendimiento experimentarán una limitación de velocidad (429s).

Para empezar, vaya a Azure Portal y navegue a la hoja Información. En este panel, abra la pestaña Sistema. La pestaña Sistema muestra dos gráficos. El primero muestra todas las solicitudes de metadatos de una cuenta. El segundo muestra el consumo de rendimiento de las solicitudes de metadatos de la cuenta master partition que almacena los metadatos de una cuenta.

Captura de pantalla del panel Información, que destaca el grafo de solicitudes de metadatos en la pestaña Sistema.

Captura de pantalla del panel Información, que destaca el grafo de solicitudes de metadatos 429 en la pestaña Sistema.

El gráfico anterior de Solicitud de metadatos por código de estado agrega solicitudes con una granularidad cada vez mayor a medida que se aumenta el intervalo de tiempo. El intervalo de tiempo más grande que puede usar para un rango de tiempo de 5 minutos es de 4 horas. Para supervisar las solicitudes de metadatos en un intervalo de tiempo mayor con granularidad específica, use Métricas de Azure. Cree un gráfico y seleccione Métrica de solicitudes de metadatos. En la esquina superior derecha, seleccione 5 minutos para Granularidad de tiempo, como se muestra a continuación. Las métricas también permiten a los usuarios crear alertas sobre ellas, lo que hace que sean más útiles que la información.

Captura de pantalla del panel Métricas, que destaca las solicitudes de metadatos para una cuenta y una granularidad de tiempo de 5 minutos.

Pasos siguientes

Si quiere obtener más información acerca de cómo mejorar el rendimiento de bases de datos, lea estos artículos: