Monitorizar e depurar com informações no Azure Cosmos DB

APLICA-SE A: NoSQL MongoDB Cassandra Gremlin Tabela

O Azure Cosmos DB fornece informações sobre débito, armazenamento, consistência, disponibilidade e latência. O portal do Azure fornece uma vista agregada destas métricas. Também pode ver as métricas do Azure Cosmos DB na API do Azure Monitor. Os valores de dimensão das métricas, como o nome do contentor, não são sensíveis a maiúsculas e minúsculas. Por conseguinte, tem de utilizar uma comparação não sensível a maiúsculas e minúsculas ao fazer comparações de cadeias nestes valores de dimensão. Para saber como ver métricas a partir do Azure Monitor, veja Monitorizar o Azure Cosmos DB.

Este artigo explica os casos de utilização comuns e como as informações do Azure Cosmos DB podem ser utilizadas para analisar e depurar estes problemas. Por predefinição, as informações de métricas são recolhidas a cada cinco minutos e são mantidas durante sete dias.

Ver informações de portal do Azure

  1. Inicie sessão no portal do Azure e navegue para a sua conta do Azure Cosmos DB.

  2. Pode ver as métricas da sua conta no painel Métricas ou no painel Informações .

    • Métricas: Este painel fornece métricas numéricas que são recolhidas em intervalos regulares e descreve algum aspeto de um sistema num determinado momento. Por exemplo, pode ver e monitorizar a métrica de latência do lado do servidor, a métrica de utilização normalizada da unidade de pedido, etc.

    • Informações: Este painel fornece uma experiência de monitorização personalizada para o Azure Cosmos DB. As informações utilizam as mesmas métricas e registos que são recolhidos no Azure Monitor e mostram uma vista agregada para a sua conta.

  3. Abra o painel Informações . Por predefinição, o painel Informações mostra as métricas de débito, pedidos, armazenamento, disponibilidade, latência, sistema e operações de gestão para cada contentor na sua conta. Pode selecionar o Intervalo de Tempo, Base de Dados e Contentor para o qual pretende ver as informações. O separador Descrição Geral mostra a utilização de RU/s, a utilização de dados, a utilização do índice, os pedidos limitados e o consumo normalizado de RU/s para a base de dados e o contentor selecionados.

    Captura de ecrã a mostrar as métricas de desempenho do Azure Cosmos DB no portal do Azure.

  4. As seguintes métricas estão disponíveis no painel Informações :

    • Débito. Este separador mostra o número total de unidades de pedido consumidas ou falhadas (código de resposta 429) porque o débito ou a capacidade de armazenamento aprovisionada para o contentor excedeu.

    • Pedidos. Este separador mostra o número total de pedidos processados por código de estado, por tipo de operação e a contagem de pedidos falhados (código de resposta 429). Os pedidos falham quando a capacidade de débito ou armazenamento aprovisionada para o contentor é excedida.

    • Armazenamento. Este separador mostra o tamanho da utilização dos dados e do índice durante o período de tempo selecionado.

    • Disponibilidade. Este separador mostra a percentagem de pedidos bem-sucedidos ao longo do total de pedidos por hora. Os SLAs do Azure Cosmos DB definem a taxa de êxito.

    • Latência. Este separador mostra a latência de leitura e escrita observada pelo Azure Cosmos DB na região onde a sua conta está a funcionar. Pode visualizar a latência entre regiões para uma conta georreplicada. Também pode ver a latência do lado do servidor através de operações diferentes. Esta métrica não representa a latência do pedido ponto a ponto.

    • Sistema. Este separador mostra quantos pedidos de metadados a partição primária serve. Também ajuda a identificar os pedidos limitados.

    • Operações de Gestão. Este separador mostra as métricas para atividades de gestão de contas, tais como criação de conta, eliminação, atualizações de chaves, definições de rede e replicação.

As secções seguintes explicam cenários comuns em que pode utilizar métricas do Azure Cosmos DB.

Compreender quantos pedidos estão a ter êxito ou a causar erros

Para começar, aceda ao portal do Azure e navegue para o painel Informações. Neste painel, abra o separador Pedidos . O separador Pedidos mostra um gráfico com o total de pedidos segmentados pelo código de estado e tipo de operação. Para obter mais informações sobre códigos de estado HTTP, veja Códigos de estado HTTP para o Azure Cosmos DB.

O código de estado de erro mais comum é 429 (limitação/limitação da taxa). Este erro significa que os pedidos ao Azure Cosmos DB são mais do que o débito aprovisionado. A solução mais comum para este problema é aumentar verticalmente as RUs para a coleção especificada. Para obter mais informações, veja Introdução ao débito aprovisionado no Azure Cosmos DB

Captura de ecrã a mostrar o total de pedidos por código de estado, pedidos limitados e total de pedidos por tipo de operação.

Determinar o consumo de débito por um intervalo de chaves de partição

Ter uma boa cardinalidade das chaves de partição é essencial para qualquer aplicação dimensionável. Para determinar a distribuição de débito de qualquer contentor particionado dividido por IDs do intervalo de chaves de partição, navegue para o painel Informações . Abra o separador Débito . O consumo normalizado de RU/s entre diferentes intervalos de chaves de partição é apresentado no gráfico.

Captura de ecrã do separador Débito a mostrar o consumo de RU/s.

Com a ajuda deste gráfico, pode identificar se existe uma partição frequente. Uma distribuição de débito desigual pode causar partições frequentes , o que pode resultar em pedidos limitados e pode exigir a repartição. Depois de identificar que chave de partição está a causar a distorção na distribuição, poderá ter de dividir novamente o contentor com uma chave de partição mais distribuída. Para obter mais informações sobre a criação de partições no Azure Cosmos DB, veja Criação de partições e dimensionamento horizontal no Azure Cosmos DB.

Determinar a utilização de dados e índices

É importante determinar a distribuição de armazenamento de qualquer contentor particionado por utilização de dados, utilização de índices e utilização de documentos. Pode minimizar a utilização do índice, maximizar a utilização de dados e otimizar as consultas. Para obter estes dados, navegue para o painel Informações e abra o separador Armazenamento .

Captura de ecrã do painel Informações a realçar o separador Armazenamento.

Comparar o tamanho dos dados com o tamanho do índice

No Azure Cosmos DB, o armazenamento total consumido é a combinação do tamanho dos dados e do tamanho do índice. Normalmente, o tamanho do índice é uma fração do tamanho dos dados. Para saber mais, veja o artigo Tamanho do índice. No painel Métricas do portal do Azure, o separador Armazenamento apresenta a discriminação do consumo de armazenamento com base nos dados e no í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);

Se quiser conservar o espaço de índice, pode ajustar a política de indexação.

Depurar consultas lentas

Na API para SDKs NoSQL, o Azure Cosmos DB fornece estatísticas de execução 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;

A QueryMetrics fornece detalhes sobre quanto tempo cada componente da consulta demorou a ser executado. A causa mais comum para consultas de execução prolongada são as análises, o que significa que a consulta não conseguiu aplicar os índices. Este problema pode ser resolvido com uma condição de filtro melhor.

Monitorizar pedidos do plano de controlo

O Azure Cosmos DB aplica limites ao número de pedidos de metadados que podem ser feitos ao longo de intervalos consecutivos de 5 minutos. Os pedidos do plano de controlo que ultrapassam estes limites podem sofrer limitações. Os pedidos de metadados podem, em alguns casos, consumir débito master partition numa conta que contenha todos os metadados de uma conta. Os pedidos do plano de controlo que ultrapassam o valor do débito terão uma limitação de taxa (429s).

Para começar, aceda ao portal do Azure e navegue para o painel Informações. Neste painel, abra o separador Sistema . O separador Sistema mostra dois gráficos. Um que mostra todos os pedidos de metadados de uma conta. O segundo mostra o consumo de débito dos pedidos de metadados da conta master partition que armazena os metadados de uma conta.

Captura de ecrã do painel Informações a realçar o gráfico de pedidos de metadados no separador Sistema.

Captura de ecrã do painel Informações a realçar o gráfico de pedidos de metadados 429 no separador Sistema.

O gráfico Pedido de Metadados por Código de Estado acima agrega pedidos para aumentar a granularidade à medida que aumenta o Intervalo de Tempo. O maior Intervalo de Tempo que pode utilizar durante um intervalo de tempo de 5 minutos é de 4 horas. Para monitorizar pedidos de metadados num intervalo de tempo maior com granularidade específica, utilize as Métricas do Azure. Crie um novo gráfico e selecione Métrica de pedidos de metadados. No canto superior direito, selecione 5 minutos para Granularidade do tempo, conforme visto abaixo. As métricas também permitem que os utilizadores criem Alertas nos mesmos , o que os torna mais úteis do que o Insights.

Captura de ecrã do painel Métricas a realçar os pedidos de metadados para uma conta e granularidade de tempo de 5 minutos.

Passos seguintes

Poderá querer saber mais sobre como melhorar o desempenho da base de dados ao ler os seguintes artigos: