Entenda o monitoramento de desempenho no Firestore

O Cloud Monitoring coleta métricas, eventos e metadados de produtos do Google Cloud. Os dados informados no Painel de uso e no Uso da regra de segurança também podem ser acessados pelo Cloud Monitoring para uma análise mais detalhada. Com o Cloud Monitoring, também é possível configurar painéis personalizados e alertas de uso.

Neste documento, orientamos você no uso de métricas, no aprendizado sobre o painel de métricas personalizadas e na definição de alertas.

Recursos monitorados

Um recurso monitorado no Cloud Monitoring representa uma entidade lógica ou física, como uma máquina virtual, um banco de dados ou um aplicativo. Os recursos monitorados contêm um conjunto exclusivo de métricas que podem ser exploradas, informadas por um painel ou usadas para criar alertas. Cada recurso também tem um conjunto de rótulos, que são pares de chave-valor que contêm mais informações sobre o recurso. Os rótulos de recursos estão disponíveis para todas as métricas associadas ao recurso.

Usando a API Cloud Monitoring, o desempenho do Firestore é monitorado com os seguintes recursos:

Recursos Descrição Modo de banco de dados compatível
firestore.googleapis.com/Database (recomendada) Tipo de recurso monitorado que fornece detalhamentos para project, location* e database_id . O rótulo database_id será (default) para bancos de dados criados sem um nome específico. Todas as métricas compatíveis com os dois modos, exceto as seguintes métricas que não são compatíveis com o Firestore no modo Datastore:
  • document/delete_ops_count
  • document/read_ops_count
  • document/write_ops_count
firestore_instance O tipo de recurso é monitorado para projetos do Firestore e não fornece detalhamento para bancos de dados. Aplica-se ao Firestore nativo
datastore_request O tipo de recurso é monitorado para projetos do Datastore e não fornece detalhamento para bancos de dados. Aplica-se aos dois modos.

Métricas

O Firestore está disponível em dois modos diferentes: nativo do Firestore e Firestore no modo Datastore. Para uma comparação de recursos entre esses dois modos, consulte Escolher entre os modos de banco de dados.

Para uma lista completa das métricas para ambos os modos, consulte os links a seguir:

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

As métricas serviceruntime fornecem uma visão geral de alto nível do tráfego de um projeto. Essas métricas estão disponíveis para a maioria das APIs do Google Cloud. O tipo de recurso monitorado consumed_api contém essas métricas comuns. Essas métricas são amostradas a cada 30 minutos, resultando na suavização dos dados.

Um rótulo de recurso importante para as métricas serviceruntime é method. Esse rótulo representa o método RPC subjacente chamado. O método do SDK chamado pode não ter necessariamente o mesmo nome do método RPC subjacente. O motivo é que o SDK fornece abstração da API de alto nível. No entanto, ao tentar entender como seu aplicativo interage com o Firestore, é importante entender as métricas com base no nome do método de RPC.

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

Use as seguintes métricas de ambiente de execução do serviço para monitorar o banco de dados.

api/request_count

Essa métrica fornece a contagem de solicitações concluídas, entre protocolo(protocolo de solicitação, 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 de gRPC numérico). Use essa métrica para observar a solicitação geral da API e calcular a taxa de erros.

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

Na figura 1, as solicitações que retornam um código 2xx agrupado por serviço e método podem ser vistas. Os códigos 2xx são códigos de status HTTP que indicam que a solicitação foi bem-sucedida.

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

Na Figura 2, as confirmações agrupadas por response_code podem ser vistas. Neste exemplo, vemos apenas respostas HTTP 200, o que implica que o banco de dados está íntegro.

api/request_latencies

A métrica api/request_latencies fornece distribuições de latência em todas as solicitações concluídas.

O Firestore registra métricas do componente Serviço do Firestore. As métricas de latência incluem o tempo em que o Firestore recebe a solicitação até o momento em que ele termina de enviar a resposta, incluindo as interações com a camada de armazenamento. Por isso, a latência de ida e volta (RTT, na sigla em inglês) entre o cliente e o serviço do Firestore não está incluída nessas métricas.

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

As métricas api/request_sizes e api/response_sizes, respectivamente, fornecem insights sobre os tamanhos de payload (em bytes). Isso pode ser útil para entender as cargas de trabalho de gravação que enviam grandes quantidades de dados ou consultas muito amplas e retornam payloads grandes.

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

Na Figura 5, é possível ver um mapa de calor dos tamanhos de resposta para o método RunQuery. Vemos que os tamanhos são estáveis, a mediana de 50 bytes e, no geral, entre 10 e 100 bytes. Os tamanhos dos payloads são sempre medidos em bytes não compactados, excluindo as sobrecargas de controle de transmissão.

Métricas de operação de documentos

O Firestore oferece contagens de leitura, gravação e exclusão. A métrica de gravação fornece um detalhamento entre as operações "CREATE" e "UPDATE". Essas métricas estão alinhadas às operações CRUD.

As métricas a seguir podem ser usadas para entender se o banco de dados tem muita leitura ou gravação pesada, e a taxa de novos documentos em comparação com documentos excluídos.

  • document/delete_ops_count: o número de exclusões de documentos bem-sucedidas.
  • document/read_ops_count: o número de leituras de documentos bem-sucedidas em consultas ou pesquisas.
  • document/write_ops_count: o número de gravações de documentos bem-sucedidas.
Criar uma proporção entre documentos lidos e gravados
Figura 6. Crie uma proporção entre os documentos lidos e os gravados (clique para ampliar).

Na Figura 6, você pode ver como criar uma proporção que mostre a proporção de documentos lidos e documentos gravados. Neste exemplo, o número de documentos lidos é cerca de 6% maior do que o número de documentos gravados.

Métricas de operação de documentos

Essas métricas fornecem distribuições em bytes de tamanhos de payload para leituras (pesquisas e consultas) e gravações em um banco de dados do Firestore. Os valores representam o tamanho total do payload. Por exemplo, qualquer resultado retornado por uma consulta. Essas métricas são semelhantes às api/request_sizes e api/response_sizes. A principal diferença é que as métricas de operação de documentos oferecem amostragem mais granular, mas detalhamentos menos granulares.

Por exemplo, as métricas de operação de documentos usam o recurso monitorado datastore_request para que não haja detalhamento do serviço ou método.

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

Métricas de índice

As taxas de gravação do índice podem ser comparadas com a métrica document/write_ops_count para entender a proporção de fanout do índice.

  • index/write_count: contagem de gravações de índice.
taxa de gravação do índice em contraste com a taxa de gravação de documentos
Figura 7. A taxa de gravação do índice é diferente da taxa de gravação do documento (clique para ampliar).

Na Figura 7, veja como a taxa de gravação do índice pode ser comparada com a taxa de gravação de documentos. Neste exemplo, para cada gravação de documento, há aproximadamente seis gravações de índice, que é uma taxa de fanout de índice relativamente pequena.

Clientes conectados diretamente ao banco de dados usando SDKs do Firebase

Duas métricas de medidor estão disponíveis para rastrear a atividade de clientes conectados diretamente aos bancos de dados do Firestore por meio de SDKs para dispositivos móveis, SDKs da Web ou ambos. Essas métricas incluem uma funcionalidade relacionada aos listeners de snapshots em tempo real, em que as alterações relevantes no banco de dados são imediatamente transmitidas aos clientes.

  • network/active_connections: o número de conexões ativas no momento. Cada cliente da Web ou de dispositivos móveis tem uma conexão.
  • network/snapshot_listeners: o número de listeners de snapshots atualmente registrados em todos os clientes conectados. Pode haver várias conexões por cliente.

Veja essas métricas na guia Usage no banco de dados do Firestore no Console do Firebase.

Métricas para rastrear a atividade de clientes conectados ao Firestore
Figura 8. Métricas para rastrear a atividade de clientes conectados ao Firestore.

Métricas de TTL

As métricas de TTL estão disponíveis para os bancos de dados nativos do Firestore e do Firestore no modo Datastore. Use essas métricas para monitorar o efeito da política de TTL aplicada.

  • document/ttl_deletion_count: contagem total de documentos excluídos pelos serviços de TTL.
Contagem total de documentos excluídos pelos serviços TTL
Figura 9. Contagem total de documentos excluídos pelos serviços TTL (clique para ampliar).

Na figura 9, é possível ver a taxa de documentos excluídos a cada minuto ao longo de um período de dias.

  • document/ttl_expiration_to_deletion_delays: tempo decorrido entre a expiração de um documento com um TTL e o momento em que ele foi excluído.
Tempo que o Firestore leva em segundos para excluir documentos com políticas de TTL
Figura 10. Tempo que o Firestore leva em segundos para excluir documentos com políticas de TTL (clique para ampliar).

Na Figura 10, é possível ver que essa métrica fornece uma distribuição do tempo em segundos que o Firestore levou para excluir documentos com políticas de TTL. Leva menos de 0,5 segundo para excluir documentos expirados por TTL no 99o percentil. Isso significa que o sistema está funcionando normalmente. O Firestore geralmente exclui documentos expirados em até 24 horas, mas isso não é garantido. Se isso demorar mais de 24 horas, entre em contato com o suporte.

Próximas etapas