Compreenda a monitorização do desempenho no Firestore no modo Datastore

O Cloud Monitoring recolhe métricas, eventos e metadados de Google Cloud produtos. Com o Cloud Monitoring, também pode configurar painéis de controlo personalizados e alertas de utilização.

Este documento explica como usar métricas, saber mais sobre o painel de controlo de métricas personalizadas e definir alertas.

Recursos monitorizados

Um recurso monitorizado no Cloud Monitoring representa uma entidade lógica ou física, como uma máquina virtual, uma base de dados ou uma aplicação. Os recursos monitorizados contêm um conjunto único de métricas que podem ser exploradas, comunicadas através de um painel de controlo ou usadas para criar alertas. Cada recurso também tem um conjunto de etiquetas de recursos, que são pares de chave-valor que contêm informações adicionais sobre o recurso. As etiquetas de recursos estão disponíveis para todas as métricas associadas ao recurso.

Através da API Cloud Monitoring, o desempenho do Firestore no modo Datastore é monitorizado com os seguintes recursos:

Resources Descrição Modo de base de dados suportado
firestore.googleapis.com/Database (recomendado) Tipo de recurso monitorizado que fornece discriminações para project, location* e database_id . A etiqueta database_id vai ser (default) para bases de dados criadas sem um nome específico. Aplica-se a ambos os modos.
datastore_request Tipo de recurso monitorizado para projetos do Datastore e não fornece discriminação para bases de dados.

Métrica

O Firestore está disponível em dois modos diferentes: Firestore Native e Firestore no modo Datastore. Para uma comparação de funcionalidades entre estes dois modos, consulte o artigo Escolha entre os modos de base de dados.

Para ver uma lista completa de métricas para o Firestore no modo Datastore, consulte Métricas do Firestore no modo Datastore.

Métricas de tempo de execução do serviço

As métricas serviceruntime oferecem uma vista geral do tráfego de um projeto. Estas métricas estão disponíveis para a maioria das APIs Google Cloud . O tipo de recurso monitorizado consumed_api contém estas métricas comuns. Estas métricas são amostradas a cada 30 minutos, o que resulta numa suavização dos dados.

Uma etiqueta de recurso importante para as métricas serviceruntime é method. Esta etiqueta representa o método RPC subjacente chamado. O método do SDK que chama pode não ter necessariamente o mesmo nome que o método RPC subjacente. O motivo é que o SDK fornece uma abstração da API de nível superior. No entanto, quando tenta compreender como a sua aplicação interage com o Firestore, é importante compreender as métricas com base no nome do método RPC.

Se precisar de saber qual é o método RPC subjacente para um determinado método do SDK, consulte a documentação da API.

api/request_count

Esta métrica fornece a contagem de pedidos concluídos, no protocolo(protocolo de pedido, como http, gRPC, etc.), código de resposta (código de resposta HTTP), response_code_class (classe de código de resposta, como 2xx, 4xx, etc.) e grpc_status_code (código de resposta gRPC numérico). Use esta métrica para observar o pedido de API geral e calcular a taxa de erro.

api/request_count que devolve um código 2xx.
Figura 1. métrica api/request_count (clique para aumentar).

Na figura 1, podem ver-se os pedidos que devolvem um código 2xx agrupados por serviço e método. Os códigos 2xx são códigos de estado HTTP que indicam que o pedido foi bem-sucedido.

api/request_count que devolve um código 2xx.
Figura 2. Métrica api/request_count que devolve um código 2xx (clique para aumentar).

Na figura 2, podem ver-se as confirmações agrupadas por response_code. Neste exemplo, vemos apenas respostas HTTP 200, o que implica que a base de dados está em bom estado.

Use as seguintes métricas de tempo de execução do serviço para monitorizar a sua base de dados.

api/request_count no tipo de recurso datastore_request

A métrica api/request_count também está disponível no tipo de recurso datastore_request com discriminações de api_method e response_code. Use esta métrica em alternativa para tirar partido do período de amostragem mais preciso, que ajuda a detetar picos.

Métrica api/request_count no recurso datastore_request
Figura 3. métrica api/request_count no recurso datastore_request (clique para aumentar).
api/request_latencies

A métrica api/request_latencies fornece distribuições de latência em todos os pedidos concluídos.

O Firestore regista métricas do componente Serviço do Firestore. As métricas de latência incluem o tempo que o Firestore demora a receber o pedido até terminar o envio da resposta, incluindo as interações com a camada de armazenamento. Devido a isto, a latência de ida e volta (rtt) entre o cliente e o serviço Firestore não está incluída nestas métricas.

api/request_latencies para calcular a distribuição da latência
Figura 4. api/request_latencies para calcular a distribuição da latência.
api/request_sizes e api/response_sizes

As métricas api/request_sizes e api/response_sizes fornecem, respetivamente, estatísticas sobre os tamanhos das cargas úteis (em bytes). Estas podem ser úteis para compreender as cargas de trabalho de escrita que enviam grandes quantidades de dados ou consultas demasiado amplas e devolvem grandes payloads.

Métricas api/request_sizes e api/response_sizes
Figura 5. Métricas api/request_sizes e api/response_sizes (clique para aumentar).

Na figura 5, pode ver um mapa térmico dos tamanhos das respostas para o método RunQuery. Podemos ver que os tamanhos são estáveis, com uma mediana de 50 bytes e, no geral, entre 10 bytes e 100 bytes. Tenha em atenção que os tamanhos das cargas úteis são sempre medidos em bytes não comprimidos, excluindo as sobrecargas de controlo de transmissão.

Métricas de operação de entidades

Estas métricas fornecem distribuições em bytes de tamanhos de carga útil para leituras (consultas e pesquisas) e escritas numa base de dados do Firestore. Os valores representam o tamanho total da carga útil. Por exemplo, quaisquer resultados devolvidos por uma consulta. Estas métricas são semelhantes às métricas api/request_sizes e api/response_sizes, sendo que a principal diferença é que as métricas de operação de entidades fornecem uma amostragem mais detalhada, mas discriminações menos detalhadas.

Por exemplo, as métricas de operação de entidades usam o recurso monitorizado, pelo que não existe uma discriminação de serviços ou métodos.datastore_request

  • entity/read_sizes: distribuição dos tamanhos das entidades lidas, agrupadas por tipo.
  • entity/write_sizes: distribuição dos tamanhos das entidades escritas, agrupadas por operações.

Métricas de índice

As taxas de gravação de índice podem ser contrastadas com a métrica document/write_ops_count para compreender a proporção de expansão do índice.

  • index/write_count: número de gravações de índice.
taxa de gravação do índice em contraste com a taxa de gravação de documentos
Figura 7. Taxa de gravação do índice em contraste com a taxa de gravação de documentos (clique para ampliar).

Na figura 7, pode ver como a taxa de gravação de índice pode ser contrastada com a taxa de gravação de documentos. Neste exemplo, para cada gravação de documento, existem aproximadamente 6 gravações de índice, o que representa uma taxa de fanout de índice relativamente pequena.

Métricas de TTL

As métricas de TTL estão disponíveis para bases de dados do Firestore Native e do Firestore no modo Datastore. Use estas métricas para monitorizar o efeito da política de TTL aplicada.

  • entity/ttl_deletion_count: número total de entidades eliminadas pelos serviços TTL.
  • entity/ttl_expiration_to_deletion_delays: tempo decorrido entre o momento em que uma entidade com um TTL expirou e o momento em que foi efetivamente eliminada.

    Se verificar que os atrasos na eliminação do TTL estão a demorar mais de 24 horas, contacte o apoio técnico.

O que se segue