Informazioni sul monitoraggio del rendimento in Firestore

Cloud Monitoring raccoglie metriche, eventi e metadati dai prodotti Google Cloud. I dati riportati nella dashboard Utilizzo e nell'utilizzo delle regole di sicurezza possono essere visualizzati anche tramite Cloud Monitoring per un'analisi più dettagliata. Con Cloud Monitoring puoi anche configurare dashboard e avvisi personalizzati sull'utilizzo.

Questo documento illustra come utilizzare le metriche, conoscere la dashboard delle metriche personalizzate e impostare gli avvisi.

Risorse monitorate

Una risorsa monitorata in Cloud Monitoring rappresenta un'entità logica o fisica, ad esempio una macchina virtuale, un database o un'applicazione. Le risorse monitorate contengono un insieme unico di metriche che possono essere esplorate, registrate tramite una dashboard o utilizzate per creare avvisi. Ogni risorsa ha anche un insieme di etichette, ovvero coppie chiave-valore che contengono informazioni aggiuntive sulla risorsa. Le etichette delle risorse sono disponibili per tutte le metriche associate alla risorsa.

Utilizzando l'API Cloud Monitoring, le prestazioni di Firestore vengono monitorate con le seguenti risorse:

Risorse Descrizione Modalità database supportata
firestore.googleapis.com/Database (consigliata) Tipo di risorsa monitorata che fornisce suddivisioni per project, location* e database_id . L'etichetta database_id sarà (default) per i database creati senza un nome specifico. Tutte le metriche supportate per entrambe le modalità, ad eccezione delle seguenti metriche non supportate per Firestore in modalità Datastore:
  • document/delete_ops_count
  • document/read_ops_count
  • document/write_ops_count
firestore_instance Tipo di risorsa monitorata per i progetti Firestore e non fornisce un'analisi dettagliata per i database. Si applica a Firestore nativo
datastore_request Tipo di risorsa monitorata per i progetti Datastore e non fornisce un'analisi dettagliata per i database. Si applica a entrambe le modalità.

Metriche

Firestore è disponibile in due diverse modalità, Firestore Native e Firestore in modalità Datastore. Per un confronto delle funzionalità tra queste due modalità, consulta Scegliere tra le modalità di database.

Per un elenco completo delle metriche per entrambe le modalità, consulta i seguenti link:

Metriche di runtime del servizio

Le metriche serviceruntime forniscono una panoramica generale del traffico di un progetto. Queste metriche sono disponibili per la maggior parte delle API Google Cloud. Il consumed_api tipo di risorsa monitorata contiene queste metriche comuni. Queste metriche vengono campionate ogni 30 minuti, con un conseguente appiattimento dei dati.

Un'etichetta risorsa importante per le metriche serviceruntime è method. Questa etichetta rappresenta il metodo RPC sottostante chiamato. Il metodo SDK chiamato potrebbe non avere necessariamente lo stesso nome del metodo RPC sottostante. Il motivo è che l'SDK fornisce un'astrazione dell'API di alto livello. Tuttavia, quando cerchi di comprendere in che modo la tua applicazione interagisce con Firestore, è importante comprendere le metriche in base al nome del metodo RPC.

Se vuoi sapere qual è il metodo RPC sottostante per un determinato metodo SDK, consulta la documentazione dell'API.

Utilizza le seguenti metriche di runtime del servizio per monitorare il database.

api/request_count

Questa metrica fornisce il conteggio delle richieste completate, per protocollo(protocollo di richiesta, ad esempio http, gRPC e così via), codice di risposta (codice di risposta HTTP), response_code_class (classe del codice di risposta, ad esempio 2xx, 4xx e così via) e grpc_status_code (codice di risposta gRPC numerico). Utilizza questa metrica per osservare la richiesta API complessiva e calcolare la percentuale di errori.

La metrica api/request_count che restituisce un codice 2xx.
Figura 1. Metrica api/request_count (fai clic per ingrandire).

Nella figura 1 sono visibili le richieste che restituiscono un codice 2xx raggruppate per servizio e metodo. I codici 2xx sono codici di stato HTTP che indicano che la richiesta è andata a buon fine.

La metrica api/request_count che restituisce un codice 2xx.
Figura 2. Metrica api/request_count che restituisce un codice 2xx (fai clic per ingrandire).

Nella figura 2 sono visibili i commit raggruppati per response_code. In questo esempio, vediamo solo risposte HTTP 200, il che implica che il database è integro.

api/request_latencies

La metrica api/request_latencies fornisce le distribuzioni delle latenze per tutte le richieste completate.

Firestore registra le metriche del componente Firestore Service. Le metriche sulla latenza includono il momento in cui Firestore riceve la richiesta e il momento in cui termina l'invio della risposta, incluse le interazioni con il livello di archiviazione. Per questo motivo, la latenza di andata e ritorno (RTT) tra il client e il servizio Firestore non è inclusa in queste metriche.

api/request_latencies per calcolare la distribuzione della latenza
Figura 4. api/request_latencies per calcolare la distribuzione della latenza.
api/request_sizes e api/response_sizes

Le metriche api/request_sizes e api/response_sizes forniscono rispettivamente informazioni sulle dimensioni del payload (in byte). Questi possono essere utili per comprendere i carichi di lavoro di scrittura che inviano grandi quantità di dati o query troppo ampie e restituiscono payload di grandi dimensioni.

Metriche api/request_sizes e api/response_sizes
Figura 5. Metriche api/request_sizes e api/response_sizes (fai clic per ingrandire).

Nella figura 5 è visibile una mappa di calore per le dimensioni delle risposte per il metodo RunQuery. Possiamo vedere che le dimensioni sono costanti, con una media di 50 byte e in generale tra 10 e 100 byte. Tieni presente che le dimensioni del payload vengono sempre misurate in byte non compressi, esclusi gli overhead di controllo della trasmissione.

Metriche relative alle operazioni sui documenti

Firestore fornisce i conteggi di letture, scritture ed eliminazioni. La metrica scrittura fornisce una suddivisione tra le operazioni "CREATE" e "UPDATE". Queste metriche sono in linea con le operazioni CRUD.

Le seguenti metriche possono essere utilizzate per capire se il database è sottoposto a un carico elevato di letture o scritture e il rapporto tra nuovi documenti ed eliminati.

  • document/delete_ops_count: il numero di eliminazioni di documenti riuscite.
  • document/read_ops_count: il numero di letture dei documenti riuscite da query o ricerche.
  • document/write_ops_count: il numero di operazioni di scrittura dei documenti riuscite.
Creare un rapporto tra documenti letti e documenti scritti
Figura 6. Crea un rapporto tra i documenti letti e quelli scritti (fai clic per ingrandire).

Nella figura 6 puoi vedere come creare un rapporto che mostri il rapporto tra i documentiletti e i documenti scritti. In questo esempio, il numero di documenti letti è circa il 6% in più rispetto al numero di documenti scritti.

Metriche relative alle operazioni sui documenti

Queste metriche forniscono distribuzioni in byte delle dimensioni del payload per le letture (lookup e query) e le scritture in un database Firestore. I valori rappresentano la dimensione totale del payload. Ad esempio, tutti i risultati restituiti da una query. Queste metriche sono simili a quelle di api/request_sizes e api/response_sizes, con la differenza principale che le metriche relative alle operazioni sui documenti forniscono un campionamento più granulare, ma con suddivisioni meno granulari.

Ad esempio, le metriche relative alle operazioni sui documenti utilizzano la risorsa monitorata datastore_request, pertanto non è possibile suddividere i dati per servizio o metodo.

  • entity/read_sizes: distribuzione delle dimensioni dei documenti letti.
  • entity/write_sizes: distribuzione delle dimensioni dei documenti scritti.

Metriche dell'indice

Le frequenze di scrittura dell'indice possono essere messe a confronto con la metrica document/write_ops_count per comprendere il rapporto di fanout dell'indice.

  • index/write_count: conteggio delle scritture dell'indice.
frequenza di scrittura dell'indice rispetto alla frequenza di scrittura dei documenti
Figura 7. Frequenza di scrittura dell'indice rispetto alla frequenza di scrittura del documento (fai clic per ingrandire).

Nella figura 7 puoi vedere come la frequenza di scrittura dell'indice può essere confrontata con la frequenza di scrittura del documento. In questo esempio, per ogni scrittura di un documento vengono eseguite circa 6 scritture dell'indice, ovvero una frequenza di fanout dell'indice relativamente ridotta.

Client collegati direttamente al database utilizzando gli SDK Firebase

Sono disponibili due metriche di indicatore per monitorare l'attività dei client collegati direttamente ai database Firestore tramite SDK mobile, SDK web o entrambi. Queste metriche includono una funzionalità relativa agli ascoltatori di snapshot in tempo reale, in cui le modifiche pertinenti nel database vengono immediatamente trasmesse in streaming ai client.

  • network/active_connections: il numero di connessioni attive in quel momento. Ogni client web o mobile ha una connessione.
  • network/snapshot_listeners: il numero di listener snapshot attualmente registrati in tutti i client connessi. Potrebbero essere presenti più connessioni per client.

Puoi visualizzare queste metriche nella scheda Usage del database Firestore nella console Firebase.

Metriche per monitorare l'attività dei client connessi a Firestore
Figura 8. Metriche per monitorare l'attività dei client connessi a Firestore.

Metriche TTL

Le metriche TTL sono disponibili sia per Firestore Native sia per i database Firestore in modalità Datastore. Utilizza queste metriche per monitorare l'effetto delle norme sul TTL applicate.

  • document/ttl_deletion_count: numero totale di documenti eliminati dai servizi TTL.
Conteggio totale dei documenti eliminati dai servizi TTL
Figura 9. Conteggio totale dei documenti eliminati dai servizi TTL (fai clic per ingrandire).

Nella figura 9 puoi vedere la frequenza con cui i documenti vengono eliminati ogni minuto in un periodo di giorni.

  • document/ttl_expiration_to_deletion_delays: il tempo trascorso tra la scadenza di un documento con un TTL e la sua eliminazione effettiva.
Tempo in secondi necessario a Firestore per eliminare i documenti con criteri TTL
Figura 10. Tempo in secondi necessario a Firestore per eliminare i documenti con criteri TTL (fai clic per ingrandire).

Nella figura 10 puoi vedere che questa metrica fornisce una distribuzione del tempo in secondi necessario a Firestore per eliminare i documenti con criteri TTL. L'eliminazione dei documenti con TTL scaduto richiede meno di 0,5 secondi al 99° percentile. Ciò implica che il sistema funzioni normalmente. In genere, Firestore elimina i documenti scaduti entro 24 ore, ma non è garantito. Se vedi che il processo richiede più di 24 ore, contatta l'assistenza.

Passaggi successivi