Partilhar via


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 taxa de transferência, 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 para as métricas, como nome do contêiner, não diferenciam maiúsculas de minúsculas. Portanto, você precisa usar a comparação sem diferenciação de maiúsculas e minúsculas ao fazer comparações de cadeia de caracteres nesses valores de dimensão. Para saber como exibir métricas do Azure monitor, consulte Monitorar o Azure Cosmos DB.

Este artigo descreve casos de uso comuns e como as informações do Azure Cosmos DB podem ser usadas para analisar e depurar esses problemas. Por padrão, os insights da métrica são coletados a cada cinco minutos e são mantidos por sete dias.

As seções a seguir explicam cenários comuns em que você pode usar métricas do Azure Cosmos DB.

Entender quantas solicitações estão sendo bem-sucedidas ou causando erros

Para começar, vá para o portal do Azure e navegue até o painel Insights. Neste painel, abra a guia Solicitações . A guia Solicitações mostra um gráfico com o total de solicitações segmentadas pelo código de status e tipo de operação. Para obter mais informações sobre códigos de status HTTP, consulte Códigos de status HTTP para o Azure Cosmos DB.

O código de status de erro mais comum é 429 (limitação de taxa/limitação). Esse erro significa que as solicitações ao Azure Cosmos DB são mais do que a taxa de transferência provisionada. A solução mais comum para este problema é aumentar a escala das RUs para a coleção dada. Para obter mais informações, consulte Introdução à taxa de transferência provisionada no Azure Cosmos DB

Captura de tela mostrando o total de solicitações por código de status, solicitações limitadas e total de solicitações por tipo de operação.

Determinar o consumo de taxa de transferência por um intervalo de chaves de partição

Ter uma boa cardinalidade das suas chaves de partição é essencial para qualquer aplicação escalável. Para determinar a distribuição da taxa de transferência de qualquer contêiner particionado dividido por IDs de intervalo de chaves de partição, navegue até o painel Insights . Abra a guia Taxa de transferência. O consumo normalizado de RU/s em diferentes intervalos de chaves de partição é mostrado no gráfico.

Captura de tela da guia Taxa de transferência, mostrando o consumo de RU/s.

Com a ajuda deste gráfico, você pode identificar se há uma partição quente. Uma distribuição de taxa de transferência irregular pode causar partições quentes , o que pode resultar em solicitações limitadas e pode exigir reparticionamento. Depois de identificar qual chave de partição está causando a distorção na distribuição, talvez seja necessário reparticionar seu contêiner com uma chave de partição mais distribuída. Para obter mais informações sobre particionamento no Azure Cosmos DB, consulte Particionamento e dimensionamento horizontal no Azure Cosmos DB.

Determinar o uso de dados e índice

É importante determinar a distribuição de armazenamento de qualquer contêiner particionado por uso de dados, uso de índice e uso de documentos. Você pode minimizar o uso do índice, maximizar o uso de dados e otimizar suas consultas. Para obter esses dados, navegue até o painel Informações e abra a guia Armazenamento.

Captura de ecrã do painel Insights, realçando 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, consulte o artigo Tamanho do índice . No painel Métricas no portal do Azure, a guia Armazenamento mostra o detalhamento do consumo de armazenamento com base em dados e í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 espaço de índice, você 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 consulta.

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 fornece detalhes sobre quanto tempo cada componente da consulta levou para ser executado. A causa raiz mais comum para consultas de longa execução são as verificações, o que significa que a consulta não pôde aplicar os índices. Este problema pode ser resolvido com uma melhor condição de filtro.

Monitorar solicitações de plano de controle

O Azure Cosmos DB aplica limites ao número de solicitações de metadados que podem ser feitas em intervalos consecutivos de 5 minutos. Solicitações de plano de controle que ultrapassam esses limites podem sofrer limitação. As solicitações de metadados podem, em alguns casos, consumir a taxa de transferência em relação a uma master partition conta que contém todos os metadados de uma conta. As solicitações de plano de controle que ultrapassarem o valor da taxa de transferência sofrerão limitação de taxa (429s).

Para começar, vá para o portal do Azure e navegue até o painel Insights. Neste painel, abra a guia Sistema . A guia Sistema mostra dois gráficos. Um que mostra todas as solicitações de metadados para uma conta. O segundo mostra o consumo de taxa de transferência de solicitações de metadados da conta master partition que armazena os metadados de uma conta.

Captura de tela do painel Insights, destacando o gráfico de solicitações de metadados na guia Sistema.

Captura de tela do painel Insights, destacando o gráfico 429 de solicitações de metadados na guia Sistema.

O gráfico Solicitação de metadados por código de status acima agrega solicitações com maior granularidade à medida que você aumenta o intervalo de tempo. O maior intervalo de tempo que você pode usar para um compartimento de tempo de 5 minutos é de 4 horas. Para monitorar solicitações de metadados em um intervalo de tempo maior com granularidade específica, use o Azure Metrics. Crie um novo gráfico e selecione a métrica Solicitações de metadados. No canto superior direito, selecione 5 minutos para Granularidade de tempo, como visto abaixo. As métricas também permitem que os usuários criem alertas sobre elas, o que as torna mais úteis do que os Insights.

Captura de tela do painel Métricas, destacando as solicitações de metadados para uma conta e a granularidade de tempo de 5 minutos.

Próximos passos

Talvez você queira saber mais sobre como melhorar o desempenho do banco de dados lendo os seguintes artigos: