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.
Nota
Ao filtrar por banco de dados ou coleções em métricas, é possível que você veja "__Empty" ou "<Empty>" como resourceName. Isso ocorre porque os dados métricos estão sendo coletados em um nível de conta para essa solicitação específica. Portanto, não há nenhum banco de dados associado ou coleção como o valor da métrica.
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
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.
Com a ajuda deste gráfico, você pode identificar se há uma partição quente. O PartitionKeyRangeIDs corresponde a partições físicas. A métrica Consumo de RU Normalizado é um valor entre 0% e 100% que ajuda a medir a utilização da taxa de transferência provisionada em um banco de dados ou contêiner. 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.
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.
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.
Próximos passos
Talvez você queira saber mais sobre como melhorar o desempenho do banco de dados lendo os seguintes artigos: