Monitorar e depurar com insights no Azure Cosmos DB

APLICA-SE A: NoSQL MongoDB Cassandra Gremlin Table

O Azure Cosmos DB fornece insights de taxa de transferência, armazenamento, consistência, disponibilidade e latência. O portal do Microsoft Azure fornece uma visualização agregada dessas métricas. Você também pode exibir métricas do Azure Cosmos DB pela API do Azure Monitor. Os valores de dimensão para as métricas, como o nome do contêiner, não diferenciam maiúsculas de minúsculas. Portanto, ao comparar cadeias de caracteres nesses valores de dimensão, você precisa usar uma comparação que não diferencie maiúsculas e minúsculas. Para saber como visualizar métricas do Azure Monitor, confira o artigo Monitorar o Azure Cosmos DB.

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

Exibir insights no portal do Azure

  1. Entre no portal do Azure e navegue até a sua conta Microsoft Azure Cosmos DB.

  2. Você pode exibir as métricas da conta no painel Métricas ou no painel Insights.

    • Métricas: esse painel fornece métricas numéricas que são coletadas a intervalos regulares e descrevem algum aspecto de um sistema em um determinado momento. Por exemplo, você pode ver e monitorar a métrica de latência do lado do servidor, a métrica de uso da unidade de solicitação normalizada etc.

    • Insights: esse painel fornece uma experiência de monitoramento personalizada para o Azure Cosmos DB. O painel Insights usa as mesmas métricas e logs que são coletados no Azure Monitor, e mostra uma exibição agregada para a sua conta.

  3. Abra o painel Insights. Por padrão, o painel Insights mostra a taxa de transferência, as solicitações, o armazenamento, a disponibilidade, a latência, o sistema e as métricas de gerenciamento de operações de todos os contêineres na sua conta. Você pode selecionar o Intervalo de Tempo, o Banco de Dados e o Contêiner para o qual deseja exibir insights. A guia Visão geral mostra o uso de RU/s, o uso de dados, o uso de índice, as solicitações limitadas e o consumo normalizado de RU/s do banco de dados e do contêiner selecionados.

    Captura de tela de métricas de desempenho do Azure Cosmos DB no portal do Azure.

  4. As seguintes métricas estão disponíveis no painel Insights:

    • Taxa de transferência. Essa guia mostra o número total de unidades de solicitação consumidas ou com falha (código de resposta 429) devido ao fato de que a taxa de transferência ou a capacidade de armazenamento provisionada para o contêiner foram excedidas.

    • Solicitações. Essa guia mostra o número total de solicitações processadas pelo código de status, por tipo de operação, e o número de solicitações com falha (código de resposta 429). As solicitações falham quando a taxa de transferência ou a capacidade de armazenamento provisionada para o contêiner é excedida.

    • Armazenamento. Essa guia mostra o tamanho dos dados e o uso do índice ao longo do período de tempo selecionado.

    • Disponibilidade. Essa guia mostra o percentual de solicitações bem-sucedidas com relação ao total de solicitações por hora. Os SLAs do Azure Cosmos DB definem a taxa de sucesso.

    • Latência. Essa guia mostra a latência de leitura e gravação observada pelo Azure Cosmos DB na região em que a sua conta está operando. Você pode visualizar a latência entre regiões para uma conta replicada geograficamente. Veja também a latência do servidor de diferentes operações. Essa métrica não representa a latência de solicitação de ponta a ponta.

    • Sistema. Essa guia mostra quantas solicitações de metadados a partição principal distribui. Também ajudam a identificar as solicitações limitadas.

    • Operações de gerenciamento. Essa guia mostra as métricas de atividades de gerenciamento de conta, como criação e exclusão de conta, atualizações de chave, configurações de replicação e rede.

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

Reconhecimento de quantas solicitações estão tendo sucesso ou causando erros

Para começar, vá para o portal do Azure e navegue até o painel Insights. Nessa painel, abra a guia Solicitações. A guia Solicitações mostra um gráfico com o total de solicitações segmentadas por 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 banco de dados do Microsoft Azure Cosmos DB.

O código de status de erro mais comum é 429 (limitação/limitação da taxa). Esse erro significa que as solicitações para o Azure Cosmos DB são mais do que a taxa de transferência provisionada. A solução mais comum para esse problema é expandir as RUs para determinada coleção. Para obter mais informações, confira o artigo 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 de suas chaves de partição é essencial para qualquer aplicativo escalonável. Para determinar a distribuição da taxa de transferência de qualquer contêiner particionado dividida por IDs do intervalo de chaves de partição, navegue até o painel Insights. Abra a guia Taxa de Transferência. O consumo normalizado de RU/s (unidades de solicitação) nos 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 desse gráfico, você pode identificar se existe uma partição com acesso frequente. Uma distribuição desigual de taxa de transferência pode causar a ocorrência de partições com acesso frequente, podendo resultar em uma limitação das solicitações e requerer um novo particionamento. Após identificar qual chave de partição está causando a distorção na distribuição, você precisará particionar o contêiner novamente com uma chave de partição mais distribuída. Para obter mais informações sobre o particionamento no Azure Cosmos DB, confira o artigo Partição e ampliação horizontal no Azure Cosmos DB.

Determinar o uso de dados e índices

É 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, vá para o painel Insights e abra a guia Armazenamento.

Captura de tela do painel Insights, realçando a guia Armazenamento.

Compare o tamanho de dados em relação ao tamanho do índice

No Azure Cosmos DB, o armazenamento consumido total é uma combinação entre o tamanho dos dados e o tamanho do índice. Normalmente, o tamanho do índice é uma fração do tamanho dos dados. Para saber mais, confira o artigo Tamanho do índice. No painel Métricas no portal do Azure, a guia Armazenamento apresenta a divisã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 você quiser conservar espaço de índice, você poderá ajustar a política de indexação.

Depurar consultas lentas

Nos SDKs da API do NoSQL, o Azure Cosmos DB oferece 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;

O QueryMetrics fornece detalhes de quanto tempo durou a execução de cada componente da consulta. A causa raiz mais comum para consultas de execução prolongada são as varreduras, o que significa que a consulta não conseguiu aplicar os índices. Esse problema pode ser resolvido com uma melhor condição de filtro.

Monitorar solicitações do painel 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. As solicitações do painel de controle que ultrapassarem esses limites poderão enfrentar limitação. As solicitações de metadados podem, em alguns casos, consumir a taxa de transferência referente a uma master partition dentro de uma conta que contém todos os metadados de uma conta. As solicitações do painel de controle que ultrapassarem o valor da taxa de transferência irão enfrentar uma limitação de taxa (429 s).

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

Captura de tela do painel Insights, com destaque para o grafo de solicitações de metadados na guia Sistema.

Captura de tela do painel Insights, com destaque para o erro 429 do grafo de solicitações de metadados na guia Sistema.

O grafo Solicitação de Metadados por Código de Status acima agrega solicitações com granularidade crescente à 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 as solicitações de metadados em um intervalo de tempo maior com granularidade específica, use as Métricas do Azure. 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, conforme visto abaixo. As métricas também permitem aos usuários Criar Alertas relativos a elas, o que as torna mais úteis do que o Insights.

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

Próximas etapas

Você pode querer saber mais sobre como aprimorar o desempenho do banco de dados lendo os seguintes artigos: