Compreenda a monitorização do desempenho no Firestore

O Cloud Monitoring recolhe métricas, eventos e metadados de Google Cloud produtos. Os dados comunicados no painel de controlo de utilização e na utilização das regras de segurança também podem ser acedidos através do Cloud Monitoring para uma análise mais detalhada. 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 é 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.
firestore_instance Tipo de recurso monitorizado para projetos do Firestore e não fornece discriminação para bases de dados. Aplica-se ao Firestore Native
datastore_request Tipo de recurso monitorizado para projetos do Datastore e não fornece discriminação para bases de dados. Aplica-se a ambos os modos.

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 ambos os modos, consulte os seguintes links:

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 Google Cloud APIs. 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 oferece 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.

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

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, só vemos respostas HTTP 200, o que implica que a base de dados está em bom estado.

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 da carga útil são sempre medidos em bytes não comprimidos, excluindo as sobrecargas de controlo de transmissão.

Métricas de operações de documentos

O Firestore fornece contagens de leitura, escrita e eliminação. A métrica de gravação fornece uma discriminação entre a operação "CREATE" e "UPDATE". Estas métricas estão alinhadas com as operações CRUD.

As seguintes métricas podem ser usadas para compreender se a sua base de dados tem muitas leituras ou muitas escritas, e a taxa de novos documentos em comparação com documentos eliminados.

  • document/delete_ops_count: o número de eliminações de documentos bem-sucedidas.
  • document/read_ops_count: o número de leituras de documentos bem-sucedidas a partir de consultas ou pesquisas.
  • document/write_ops_count: o número de gravações de documentos bem-sucedidas.
Crie uma relação entre documentos lidos e documentos escritos
Figura 6. Crie uma relação entre documentos lidos e documentos escritos (clique para aumentar).

Na figura 6, pode ver como criar uma proporção que mostra a proporção de documentos lidos em comparação com os documentos escritos. Neste exemplo, o número de documentos lidos é cerca de 6% superior ao número de documentos escritos.

Métricas de operações de documentos

Estas métricas fornecem distribuições em bytes dos 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ções de documentos oferecem uma amostragem mais detalhada, mas discriminações menos detalhadas.

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

  • entity/read_sizes: distribuição dos tamanhos dos documentos lidos.
  • entity/write_sizes: distribuição de tamanhos de documentos escritos.

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.

Clientes ligados diretamente à base de dados através dos SDKs do Firebase

Estão disponíveis duas métricas de indicador para acompanhar a atividade de clientes ligados diretamente a bases de dados do Firestore através de SDKs para dispositivos móveis, SDKs Web ou ambos. Estas métricas incluem uma funcionalidade relacionada com ouvintes de instantâneos em tempo real, em que as alterações relevantes na base de dados são imediatamente transmitidas de volta aos clientes.

  • network/active_connections: o número de ligações ativas no momento. Cada cliente Web ou para dispositivos móveis tem uma ligação.
  • network/snapshot_listeners: o número de ouvintes de instantâneos atualmente registados em todos os clientes ligados. Pode haver várias associações por cliente.

Pode ver estas métricas no separador Usage na base de dados do Firestore na consola do Firebase.

Métricas para acompanhar a atividade de clientes ligados ao Firestore
Figura 8. Métricas para acompanhar a atividade dos clientes ligados ao Firestore.

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.

  • document/ttl_deletion_count: número total de documentos eliminados pelos serviços TTL.
Contagem total de documentos eliminados pelos serviços de TTL
Figura 9. Número total de documentos eliminados pelos serviços de TTL (clique para aumentar).

Na figura 9, pode ver a taxa de documentos eliminados a cada minuto durante um período de dias.

  • document/ttl_expiration_to_deletion_delays: tempo decorrido entre a expiração do TTL de um documento e a sua eliminação real.
Tempo em segundos para o Firestore eliminar documentos com políticas de TTL
Figura 10. Tempo necessário em segundos para o Firestore eliminar documentos com políticas de TTL (clique para aumentar).

Na figura 10, pode ver que esta métrica fornece uma distribuição do tempo em segundos que o Firestore demorou a eliminar documentos com políticas de TTL. Demora menos de 0,5 segundos a eliminar documentos com TTL expirado no percentil 99. Isto implica que o sistema está a funcionar normalmente. Normalmente, o Firestore elimina os documentos expirados no prazo de 24 horas, mas isto não é garantido. Se vir que o processo demora mais de 24 horas, contacte o apoio técnico.

O que se segue