Entender o monitoramento de desempenho no Firestore
O Cloud Monitoring coleta métricas, eventos e metadados de Google Cloud produtos. Os dados informados no painel Uso e no uso de regras 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.
Este documento orienta você no uso de métricas, no aprendizado sobre o painel de métricas personalizadas e na configuraçã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 analisadas, exibidas em um painel ou usadas para criar alertas. Cada recurso também tem um conjunto de rótulos de recurso, que são pares de chave-valor com informações adicionais sobre o recurso. Os rótulos de recursos estão disponíveis para todas as métricas associadas ao recurso.
Usando a Cloud Monitoring API, o desempenho do Firestore é monitorado com os seguintes recursos:
| Recursos | Descrição | Modo de banco de dados compatível |
firestore.googleapis.com/Database (recomendado) | Tipo de recurso monitorado que fornece detalhamentos para project,
location* e database_id . O
database_id rótulo será (default) para bancos de dados criados
sem um nome específico. |
Aplicável aos dois modos. |
firestore_instance | Tipo de recurso monitorado para projetos do Firestore e não fornece detalhamento para bancos de dados. | Aplicável ao Firestore no modo nativo |
datastore_request | Tipo de recurso monitorado para projetos do Datastore e não fornece detalhamento para bancos de dados. | Aplicável aos dois modos. |
Métricas
O Firestore está disponível em dois modos diferentes: Firestore no modo nativo e Firestore no modo Datastore. Para uma comparação de recursos entre esses dois modos, consulte Escolher entre modos de banco de dados.
Para uma lista completa de métricas para os dois modos, consulte os seguintes links:
Métricas do ambiente de execução do serviço
As serviceruntime
métricas apresentam 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 Google Cloud APIs. O
consumed_api
tipo de recurso monitorado contém essas métricas comuns. Essas métricas são coletadas a cada 30 minutos, o que resulta em dados suavizados.
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 que você chama não precisa ter o mesmo nome do método RPC subjacente. O motivo é que o SDK fornece abstração de API de alto nível. No entanto, ao tentar compreender como o aplicativo interage com o Firestore, é importante entender as métricas com base no nome do método RPC.
Se você precisar 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 ambiente de execução do serviço para monitorar seu banco de dados.
api/request_count
Essa métrica fornece a contagem de solicitações concluídas, em 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 gRPC numérico). Use essa métrica para observar a solicitação de API geral e calcular a taxa de erros.
Na Figura 1, é possível conferir as solicitações que retornam um código 2xx agrupado por serviço e método. Os códigos 2xx são códigos de status HTTP que indicam que a solicitação foi bem-sucedida.
Na Figura 2, é possível conferir commits agrupados por response_code. Neste exemplo, só vemos respostas HTTP 200, o que implica que o banco de dados está íntegro.
api/request_latencies
A métrica api/request_latencies apresenta 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 entre o momento em que o Firestore recebe a solicitação e o momento em que o Firestore termina de enviar a resposta, incluindo interações com a camada de armazenamento. Por isso, a latência de ida e volta (RTT) entre o cliente e o serviço do Firestore não está incluída nessas métricas.
api/request_sizes e api/response_sizes
As métricas api/request_sizes e api/response_sizes fornecem insights sobre os tamanhos de payload (em bytes). Elas podem ser úteis para entender cargas de trabalho de gravação que enviam grandes quantidades de dados ou consultas muito amplas e retornam payloads grandes.
Na Figura 5, é possível conferir um mapa de calor para tamanhos de resposta do método RunQuery.
É possível conferir que os tamanhos são estáveis, com mediana de 50 bytes e, no geral, entre 10 e 100 bytes. Os tamanhos de payload são sempre medidos em bytes não compactados, excluindo sobrecarga de controle de transmissão.
Métricas de operação de documentos
O Firestore fornece contagens de leitura, gravação e exclusão. A métrica de gravação apresenta uma análise detalhada entre as operações "CREATE" e "UPDATE". Essas métricas estão alinhadas com as operações CRUD.
As métricas a seguir podem ser usadas para saber se o banco de dados tem muitas leituras ou gravações e a taxa de documentos novos em relação aos 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 de consultas ou pesquisas.document/write_ops_count: o número de gravações de documentos bem-sucedidas.
Na Figura 6, é possível conferir como criar uma proporção que mostra a proporção de documentos lidos em relação a documentos gravados. Neste exemplo, o número de documentos lidos é cerca de 6% maior que o número de documentos gravados.
Métricas de tamanho de payload
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, todos os resultados retornados por uma consulta.
Essas métricas são semelhantes às métricas api/request_sizes e api/response_sizes, sendo a principal diferença que as métricas de operação de documentos fornecem uma amostragem mais granular, mas detalhamentos menos granulares.
Por exemplo, as métricas de operação de documentos usam o recurso monitorado datastore_request, portanto, não há detalhamento de serviço ou método.
entity/read_sizes: distribuição de tamanhos de documentos lidos.entity/write_sizes: distribuição de tamanhos de documentos gravados.
Métricas de faturamento (edição Enterprise)
As seguintes métricas de faturamento estão disponíveis apenas para a edição Enterprise do Firestore.
Use essas métricas para compreender o uso do faturamento. Essas métricas não incluem o faturamento de operações de administrador (indexação, importação, exportação e exclusão em massa).
api/billable_read_units: o número de unidades de leitura faturáveis. O uso pode ser dividido por nome do serviço e método da API.api/billable_realtime_read_units: o número de unidades de atualização em tempo real faturáveis das atualizações em tempo real.api/billable_write_units: o número de unidades de gravação faturáveis. O uso pode ser dividido por nome do serviço e método da API.document/billable_managed_delete_write_units: o número de unidades de gravação faturáveis de serviços de exclusão gerenciada, como TTL.
Métricas de índice
As taxas de gravação de índice podem ser comparadas com a métrica document/write_ops_count
para entender a proporção de divergência do índice.
index/write_count: contagem de gravações de índice.
Na Figura 7, é possível conferir 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, há aproximadamente seis gravações de índice, o que é uma taxa de divergência 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 a bancos de dados do Firestore por SDKs para dispositivos móveis, SDKs da Web ou ambos. Essas métricas incluem uma funcionalidade relacionada a listeners de snapshot em tempo real em que as mudanças relevantes no banco de dados são transmitidas imediatamente de volta aos clientes.
network/active_connections: o número de conexões ativas no momento. Cada cliente da Web ou para dispositivos móveis tem uma conexão.network/snapshot_listeners: o número de listeners de snapshot registrados no momento em todos os clientes conectados. Pode haver várias conexões por cliente.
É possível conferir essas métricas na guia Usage no banco de dados do Firestore no Console do Firebase.
Métricas de TTL
As métricas de TTL estão disponíveis para bancos de dados do Firestore no modo nativo 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 por serviços de TTL.
Na Figura 9, é possível conferir a taxa de documentos excluídos a cada minuto durante um período de dias.
document/ttl_expiration_to_deletion_delays: tempo decorrido entre a expiração de um documento com um TTL e a exclusão real.
Na Figura 10, é possível conferir 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 99º percentil. Isso implica que o sistema está funcionando normalmente. O Firestore normalmente exclui documentos expirados em até 24 horas, mas isso não é garantido. Se levar mais de 24 horas, entre em contato com o suporte.
A seguir
- Saiba como usar o painel do Cloud Monitoring para conferir métricas.
- Monitore o uso para identificar leituras, gravações e exclusões de documentos ao longo do tempo.