Comprende la supervisión del rendimiento en Firestore

Cloud Monitoring recopila métricas, eventos y metadatos de los productos de Google Cloud. Los datos que se informan en el panel Uso y el Uso de las reglas de seguridad también se pueden acceder a través de Cloud Monitoring para obtener un análisis más detallado. Con Cloud Monitoring, también puedes configurar paneles personalizados y alertas de uso.

En este documento, se explica cómo usar las métricas, aprender sobre el panel de métricas personalizadas y configurar alertas.

Recursos supervisados

Un recurso supervisado en Cloud Monitoring representa una entidad lógica o física, como una máquina virtual, una base de datos o una aplicación. Los recursos supervisados contienen un conjunto único de métricas que se pueden explorar, informar a través de un panel o usar para crear alertas. Cada recurso también tiene un conjunto de etiquetas de recursos, que son pares clave-valor que contienen información adicional sobre el recurso. Las etiquetas de recursos están disponibles para todas las métricas asociadas con el recurso.

Con la API de Cloud Monitoring, el rendimiento de Firestore se supervisa con los siguientes recursos:

Recursos Descripción Modo de base de datos compatible
firestore.googleapis.com/Database (recomendada) Tipo de recurso supervisado que proporciona desgloses para project, location* y database_id . La etiqueta database_id será (default) para las bases de datos creadas sin un nombre específico. Todas las métricas compatibles con ambos modos, excepto las siguientes métricas, que no son compatibles con Firestore en modo Datastore:
  • document/delete_ops_count
  • document/read_ops_count
  • document/write_ops_count
firestore_instance Tipo de recurso supervisado en proyectos de Firestore; no se proporciona desglose para bases de datos. Se aplica a los nativos de Firestore
datastore_request Tipo de recurso supervisado para proyectos de Datastore y no proporciona desgloses de las bases de datos. Se aplica a ambos modos.

Métricas

Firestore está disponible en dos modos diferentes: Firestore nativo y Firestore en modo Datastore. Para ver una comparación de características entre estos dos modos, consulta Elige entre modos de base de datos.

Para obtener una lista completa de las métricas de ambos modos, consulta los siguientes vínculos:

Métricas del entorno de ejecución del servicio

Las métricas serviceruntime proporcionan una descripción general de alto nivel del tráfico de un proyecto. Estas métricas están disponibles para la mayoría de las API de Google Cloud. El tipo de recurso supervisado consumed_api contiene estas métricas comunes. Estas métricas se muestrean cada 30 minutos, lo que hace que los datos se suavicen.

Una etiqueta de recurso importante para las métricas serviceruntime es method. Esta etiqueta representa el método de RPC subyacente al que se llama. Es posible que el método de SDK al que llamas no necesariamente tenga el mismo nombre que el método RPC subyacente. Esto se debe a que el SDK proporciona una abstracción de API de alto nivel. Sin embargo, cuando intentes comprender cómo interactúa la aplicación con Firestore, es importante comprender las métricas según el nombre del método de RPC.

Si necesitas saber cuál es el método de RPC subyacente para un método del SDK determinado, consulta la documentación de la API.

Usa las siguientes métricas del entorno de ejecución del servicio para supervisar tu base de datos.

api/request_count

Esta métrica proporciona el recuento de solicitudes completadas en todos los protocolos(protocolo de solicitud, como http, gRPC, etc.), código de respuesta (código de respuesta HTTP), response_code_class (clase de código de respuesta, como 2xx, 4xx, etc.) y grpc_status_code (código de respuesta numérico de gRPC). Usa esta métrica para observar la solicitud general a la API y calcular la tasa de error.

api/request_count que muestren un código 2xx.
Figura 1: Métrica api/request_count (haz clic para ampliar).

En la figura 1, se pueden ver las solicitudes que muestran un código 2xx agrupado por servicio y método. Los códigos 2xx son códigos de estado HTTP que indican que la solicitud se realizó correctamente.

api/request_count que muestren un código 2xx.
Figura 2: Métrica api/request_count que muestra un código 2xx (haz clic para ampliar).

En la Figura 2, se pueden ver las confirmaciones agrupadas por response_code. En este ejemplo, solo vemos respuestas HTTP 200, lo que implica que la base de datos está en buen estado.

api/request_latencies

La métrica api/request_latencies proporciona distribuciones de latencia en todas las solicitudes completadas.

Firestore registra las métricas del componente del servicio de Firestore. Las métricas de latencia incluyen desde el momento en que Firestore recibe la solicitud hasta el momento en que Firestore termina de enviar la respuesta, incluidas las interacciones con la capa de almacenamiento. Debido a esto, la latencia de ida y vuelta (rtt) entre el cliente y el servicio de Firestore no se incluye en estas métricas.

api/request_latencies para calcular la distribución de latencia
Figura 4: api/request_latencies para calcular la distribución de latencia
api/request_sizes y api/response_sizes

Las métricas api/request_sizes y api/response_sizes, respectivamente, proporcionan estadísticas sobre los tamaños de la carga útil (en bytes). Pueden ser útiles para comprender las cargas de trabajo de escritura que envían grandes cantidades de datos o consultas demasiado amplias y muestran cargas útiles grandes.

Métricas api/request_sizes y api/response_sizes
Figura 5: api/request_sizes y api/response_sizes (haz clic para ampliar).

En la figura 5, se puede ver un mapa de calor para los tamaños de respuesta del método RunQuery. Podemos ver que los tamaños son estables, una mediana de 50 bytes y, en general, entre 10 bytes y 100 bytes. Ten en cuenta que los tamaños de las cargas útiles siempre se miden en bytes sin comprimir, sin incluir las sobrecargas de control de transmisión.

Métricas de operación de documentos

Firestore proporciona recuentos de operaciones de lectura, escritura y eliminación. La métrica de escritura proporciona un desglose entre las operaciones “CREATE” y “UPDATE”. Estas métricas están alineadas con las operaciones de CRUD.

Las siguientes métricas se pueden usar para comprender si tu base de datos tiene muchas operaciones de lectura o escritura, y la tasa de documentos nuevos en comparación con los documentos borrados.

  • document/delete_ops_count: La cantidad de eliminaciones correctas de documentos.
  • document/read_ops_count: Es la cantidad de lecturas de documentos correctas de consultas o búsquedas.
  • document/write_ops_count: Es la cantidad de operaciones de escritura correctas de documentos.
Crear una proporción entre los documentos leídos y los escritos
Figura 6: Crea una proporción de documentos leídos frente a documentos escritos (haz clic para ampliar).

En la Figura 6, puedes ver cómo crear una proporción que muestre la proporción entre los documentos leídos y los escritos. En este ejemplo, la cantidad de documentos que se leen es alrededor de un 6% más que la cantidad de documentos que se escriben.

Métricas de operación de documentos

Estas métricas proporcionan distribuciones en bytes de tamaños de carga útil para operaciones de lectura (búsquedas y consultas) y escrituras en una base de datos de Firestore. Los valores representan el tamaño total de la carga útil. Por ejemplo, cualquier resultado que muestre una consulta. Estas métricas son similares a las métricas api/request_sizes y api/response_sizes, la diferencia principal es que las métricas de operación de documentos proporcionan un muestreo más detallado, pero desgloses menos detallados.

Por ejemplo, las métricas de operación de documentos usan el recurso supervisado datastore_request, por lo que no hay un desglose de servicios o métodos.

  • entity/read_sizes: Distribución de los tamaños de los documentos leídos.
  • entity/write_sizes: La distribución de los tamaños de los documentos escritos.

Métricas de índice

Las tasas de escritura del índice se pueden contrastar con la métrica document/write_ops_count para comprender la proporción de fanout de índices.

  • index/write_count: Recuento de escrituras de índice.
La tasa de escritura del índice se contrastó con la tasa de escritura del documento
Figura 7: La tasa de escritura del índice contrasta con la tasa de escritura del documento (haz clic para ampliar).

En la Figura 7, puedes ver cómo se puede contrastar la tasa de escritura del índice con la tasa de escritura de los documentos. En este ejemplo, por cada escritura de documento, hay alrededor de 6 operaciones de escritura de índice, lo que es una tasa de fanout de índices relativamente pequeña.

Clientes conectados directamente a la base de datos mediante los SDK de Firebase

Hay dos métricas de indicadores disponibles para hacer un seguimiento de la actividad de los clientes conectados directamente a las bases de datos de Firestore mediante los SDK para dispositivos móviles, los SDK web o ambos. Estas métricas incluyen una funcionalidad relacionada con los objetos de escucha de instantáneas en tiempo real, en los que los cambios relevantes en la base de datos se transmiten de inmediato a los clientes.

  • network/active_connections: La cantidad de conexiones activas en un momento determinado. Cada cliente web o para dispositivos móviles tiene una conexión.
  • network/snapshot_listeners: Es la cantidad de objetos de escucha de instantáneas registrados actualmente en todos los clientes conectados. Puede haber varias conexiones por cliente.

Puedes ver estas métricas en la pestaña Usage de la base de datos de Firestore en Firebase console.

Métricas para hacer un seguimiento de la actividad de los clientes conectados a Firestore
Figura 8: Métricas para hacer un seguimiento de la actividad de los clientes conectados a Firestore.

Métricas de TTL

Las métricas de TTL están disponibles para las bases de datos nativas de Firestore y de Firestore en modo Datastore. Usa estas métricas para supervisar el efecto de la política de TTL aplicada.

  • document/ttl_deletion_count: Recuento total de documentos que borraron los servicios de TTL.
Recuento total de documentos que borraron los servicios de TTL
Figura 9: Recuento total de documentos borrados por los servicios de TTL (haz clic para ampliar).

En la figura 9, se puede ver la tasa de eliminación de documentos cada minuto durante un período de días.

  • document/ttl_expiration_to_deletion_delays: Tiempo transcurrido entre el vencimiento de un documento con un TTL y el momento en que se borró.
Tiempo que tarda Firestore en segundos en borrar documentos con políticas de TTL
Figura 10: Tiempo que tarda Firestore en segundos en borrar documentos con políticas de TTL (haz clic para ampliar).

En la figura 10, puedes ver que esta métrica proporciona una distribución del tiempo en segundos que le llevó a Firestore borrar documentos con políticas de TTL. Lleva menos de 0.5 segundos borrar documentos vencidos en el TTL del percentil 99. lo que implica que el sistema funciona normalmente. Por lo general, Firestore borra los documentos vencidos en un plazo de 24 horas, pero esto no está garantizado. Si ves que tarda más de 24 horas, comunícate con el equipo de asistencia.

Próximos pasos