Puoi utilizzare la console Google Cloud o l'API Cloud Monitoring per monitorare Pub/Sub.
Questo documento spiega come monitorare l'utilizzo di Pub/Sub nella console Google Cloud mediante Monitoring.
Se vuoi visualizzare le metriche di altre risorse Google Cloud, oltre a le metriche Pub/Sub, utilizzano Monitoring.
Altrimenti, puoi usare le dashboard di monitoraggio fornite in Pub/Sub. Consulta Monitorare gli argomenti e Monitorare le iscrizioni.
Per le best practice sull'utilizzo delle metriche nella scalabilità automatica, consulta Best practice per l'utilizzo delle metriche Pub/Sub come indicatore di scalabilità.
Prima di iniziare
Prima di utilizzare il monitoraggio, assicurati di aver preparato quanto segue:
Un account di fatturazione Cloud
Un progetto Pub/Sub con fatturazione abilitata
Un modo per assicurarti di averli ottenuti entrambi è completare la guida rapida all'utilizzo della console Cloud.
Visualizzare una dashboard esistente
Una dashboard ti consente di visualizzare e analizzare i dati provenienti da origini diverse nello stesso contesto. Google Cloud fornisce dashboard sia predefinite che personalizzate. Ad esempio, puoi visualizzare una dashboard Pub/Sub predefinita o creare una dashboard personalizzata che mostri dati metrici, criteri di avviso e voci di log relativi a Pub/Sub.
Per monitorare il progetto Pub/Sub con Cloud Monitoring, segui questi passaggi:
Nella console Google Cloud, vai alla pagina Monitoring.
Seleziona il nome del progetto se non è già selezionato nella parte superiore di della pagina.
Fai clic su Dashboard nel menu di navigazione.
Nella pagina Panoramica delle dashboard, crea una nuova dashboard. o seleziona la dashboard Pub/Sub esistente.
Per cercare la dashboard Pub/Sub esistente, nel filtro per Tutte le dashboard, seleziona la proprietà Nome e inserisci
Pub/Sub
.
Per ulteriori informazioni su come creare, modificare e gestire un dashboard personalizzata, consulta Gestire le dashboard personalizzate.
Visualizzare una singola metrica Pub/Sub
Per visualizzare una singola metrica Pub/Sub utilizzando la console Google Cloud, svolgi i seguenti passaggi:
Nella console Google Cloud, vai alla pagina Monitoring.
Nel riquadro di navigazione, seleziona Esplora metriche.
Nella sezione Configurazione, fai clic su Seleziona una metrica.
Nel filtro, inserisci
Pub/Sub
.In Risorse attive, seleziona Abbonamento Pub/Sub o l'argomento Pub/Sub.
Visualizza in dettaglio una metrica specifica e fai clic su Applica.
Viene aperta la pagina di una metrica specifica.
Per ulteriori informazioni sulla dashboard di monitoraggio, consulta la documentazione di Cloud Monitoring.
Visualizzare le metriche e i tipi di risorse Pub/Sub
Per visualizzare le metriche registrate da Pub/Sub in Cloud Monitoring, consulta l'elenco delle metriche Pub/Sub nella documentazione di Cloud Monitoring.
Per visualizzare i dettagli dei tipi di risorse monitorate
pubsub_topic
,pubsub_subscription
opubsub_snapshot
, consulta Tipi di risorse monitorate nella documentazione di Cloud Monitoring.
Accedi all'editor MQL
Metrics Explorer è un'interfaccia di Cloud Monitoring progettata per esplorare e visualizzare i dati delle metriche. In Esplora metriche, puoi utilizzare il Monitoring Query Language(MQL) per eseguire query e analizzare e le metriche Pub/Sub.
Per accedere all'editor MQL quando utilizzi Metrics Explorer, consulta Accesso all'editor di codice.
Crea la tua query MQL
Di seguito sono riportate alcune regole di base per creare una query MQL e le metriche Pub/Sub.
Inizia con
fetch pubsub_topic
ofetch pubsub_subscription
. Questa riga indica all'editor il tipo di risorsa Pub/Sub che vuoi su cui eseguire query, come argomenti o abbonamenti.Seleziona la metrica. Utilizza
| metric 'metric_name'
per specificare la metrica che vuoi analizzare. Un esempio di metrica Pub/Sub èpubsub.googleapis.com/subscription/ack_message_count
(per i messaggi confermati).Usa
| filter
per restringere i dati. I filtri più comuni includono:resource.project_id == 'your-project-id'
resource.topic_id == 'your-topic-id'
resource.subscription_id == 'your-subscription-id'
Utilizza
| align
e| group_by
per aggregare i dati in intervalli e raggruppamenti significativi.Perfeziona i dati con altre clausole. MQL offre varie altre clausole, come
| every
(per impostare la frequenza di esecuzione delle query),| within
(per specificare un intervallo di tempo) e altre ancora.
Ecco un esempio di query per monitorare il conteggio orario dei messaggi inviati a un abbonamento specifico:
fetch pubsub_subscription
| metric 'pubsub.googleapis.com/subscription/sent_message_count'
| filter resource.project_id == 'your-project-id'
&& resource.subscription_id == 'your-subscription-id'
| align delta(1h)
| every 1h
| group_by [], [value_sent_message_count_aggregate: aggregate(value.sent_message_count)]
Monitorare l'utilizzo delle quote
Per un determinato progetto, puoi utilizzare la dashboard delle quote di IAM e amministrazione per visualizzare le quote e l'utilizzo correnti.
Puoi visualizzare l'utilizzo storico della quota utilizzando le seguenti metriche:
Queste metriche utilizzano
consumer_quota
monitorato
un tipo di risorsa. Per altre metriche relative alla quota, consulta
Elenco delle metriche.
Ad esempio, la seguente query MQL crea un grafico con la frazione della quota del publisher utilizzata in ogni regione:
fetch consumer_quota
| filter resource.service == 'pubsub.googleapis.com'
| { metric serviceruntime.googleapis.com/quota/rate/net_usage
| filter metric.quota_metric == 'pubsub.googleapis.com/regionalpublisher'
| align delta_gauge(1m)
| group_by [metric.quota_metric, resource.location],
sum(value.net_usage)
; metric serviceruntime.googleapis.com/quota/limit
| filter metric.quota_metric == 'pubsub.googleapis.com/regionalpublisher'
| group_by [metric.quota_metric, resource.location],
sliding(1m), max(val()) }
| ratio
Se prevedi che l'utilizzo supererà la limiti di quota predefiniti, crea criteri di avviso per tutte le quote pertinenti. Questi avvisi vengono attivati quando il tuo utilizzo raggiunge una certa frazione del limite. Per Ad esempio, la seguente query Monitoring Query Language attiva un criterio di avviso qualsiasi quota Pub/Sub supera l'80% di utilizzo:
fetch consumer_quota
| filter resource.service == 'pubsub.googleapis.com'
| { metric serviceruntime.googleapis.com/quota/rate/net_usage
| align delta_gauge(1m)
| group_by [metric.quota_metric, resource.location],
sum(value.net_usage)
; metric serviceruntime.googleapis.com/quota/limit
| group_by [metric.quota_metric, resource.location],
sliding(1m), max(val()) }
| ratio
| every 1m
| condition gt(val(), 0.8 '1')
Per monitoraggio e avvisi più personalizzati sulle metriche delle quote, consulta Utilizzo delle metriche delle quote.
Consulta Quote e limiti per ulteriori informazioni sulle quote.
Mantenere un abbonamento in salute
Per mantenere un abbonamento efficiente, puoi monitorare diverse proprietà dell'abbonamento utilizzando le metriche fornite da Pub/Sub. Ad esempio, puoi monitora il volume dei messaggi non confermati, la loro scadenza le scadenze di conferma e così via. Puoi anche verificare se il tuo abbonamento è sufficientemente affidabile per ottenere una latenza di recapito dei messaggi ridotta.
Per ulteriori dettagli sulle metriche specifiche, consulta le sezioni successive.
Monitorare il backlog dei messaggi
Per assicurarti che i sottoscrittori stiano al passo con il flusso dei messaggi, crea una dashboard. La dashboard può mostrare le seguenti metriche di backlog, aggregate per per tutte le tue sottoscrizioni:
Messaggi non confermati (
subscription/num_undelivered_messages
) per visualizzare il numero di messaggi non confermati.Età del messaggio non confermato meno recente (
subscription/oldest_unacked_message_age
) per vedere l'età del messaggio non confermato meno recente nel backlog della sottoscrizione.Punteggio di integrità latenza di pubblicazione (
subscription/delivery_latency_health_score
) per controllare lo stato generale dell'abbonamento in relazione alla latenza di distribuzione. Per ulteriori informazioni su questa metrica, consulta la sezione pertinente di questo documento.
Crea criteri di avviso che si attivano quando questi valori non rientrano nell'intervallo accettabile nel contesto del tuo sistema. Ad esempio, il numero assoluto di messaggi non confermati non è necessariamente significativo. Un backlog di milioni di messaggi potrebbero essere accettabili per un milione di messaggi al secondo ma inaccettabile per una sottoscrizione di un messaggio al secondo.
Problemi comuni arretrati
Sintomi | Problema | Soluzioni |
---|---|---|
Sia oldest_unacked_message_age che
num_undelivered_messages stanno crescendo di pari passo. |
Gli iscritti non riescono a stare al passo con il volume di messaggi |
|
Se il backlog è costante e ridotto e il volume
in aumento di oldest_unacked_message_age , è possibile che alcuni messaggi non possano essere elaborati. |
Messaggi bloccati |
|
oldest_unacked_message_age supera la durata di conservazione
dei messaggi della sottoscrizione. |
Perdita permanente dei dati |
|
Monitorare l'integrità della latenza di pubblicazione
In Pub/Sub, la latenza di recapito è il tempo necessario per la consegna di un messaggio pubblicato a un sottoscrittore.
Se la coda dei messaggi è in aumento, puoi utilizzare il punteggio di stato della latenza di invio (subscription/delivery_latency_health_score
) per verificare quali fattori contribuiscono all'aumento della latenza.
Questa metrica misura l'integrità di un singolo abbonamento in una Finestra di 10 minuti. La metrica fornisce informazioni sui seguenti criteri, che sono necessari per garantire una latenza bassa e costante per un abbonamento:
Richieste di ricerca trascurabili.
Messaggi trascurabili con conferma negativa (nacking).
Scadenze di conferma dei messaggi scaduti trascurabili.
Latenza di conferma coerente inferiore a 30 secondi.
Utilizzo ridotto e costante, il che significa che l'abbonamento ha costantemente di elaborazione dei nuovi messaggi.
La metrica Punteggio integrità latenza di pubblicazione riporta un punteggio pari a 0 o 1 per ciascuno dei criteri specificati. Un punteggio pari a 1 indica uno stato integro mentre un punteggio pari a 0 indica uno stato non integro.
Richieste di ricerca: se l'abbonamento ha ricevuto richieste di ricerca negli ultimi 10 minuti, il punteggio viene impostato su 0. La ricerca di una sottoscrizione potrebbe causare la riproduzione di vecchi messaggi molto tempo dopo la loro prima pubblicazione, aumentando la latenza di recapito.
Messaggi con conferma negativa (nacked): se l'abbonamento ha ricevuto richieste di conferma negativa (nack) negli ultimi 10 minuti, il punteggio viene impostato su 0. Una conferma negativa determina la visualizzazione di un messaggio viene ricaricato con una latenza di distribuzione maggiore.
Scadenze di conferma scadute. Se l'abbonamento è scaduto per la conferma negli ultimi 10 minuti, il punteggio è impostato su 0. I messaggi per i quali è scaduta la scadenza di conferma vengono recapitati di nuovo con una latenza di recapito maggiore.
Latenze di riconoscimento: se il 99,9° percentile di tutti i riconoscimenti negli ultimi 10 minuti sia stato mai superiore a 30 secondi, il punteggio sia impostato su 0. Una latenza di conferma elevata indica che il client di un sottoscrittore sta impiegando un tempo insolitamente lungo per elaborare un messaggio. Questo punteggio potrebbe indicare un bug o alcuni vincoli di risorse lato client dell'abbonato.
Utilizzo ridotto: l'utilizzo viene calcolato in modo diverso per ogni tipo di abbonamento.
StreamingPull: se non hai abbastanza stream aperti, il punteggio viene impostato su 0. Apri più stream per assicurarti di avere una capacità adeguata per i nuovi messaggi.
Push: se hai troppi messaggi in sospeso per l'endpoint push, il punteggio viene impostato su 0. Aggiungi più capacità all'endpoint push in modo da avere la capacità per i nuovi messaggi.
Pull: se non hai richieste pull in sospeso sufficienti, il punteggio viene impostato su 0. Apri più richieste di pull simultanee per assicurarti di essere pronto a ricevere nuovi messaggi.
Per visualizzare la metrica, in Esplora metriche, seleziona la metrica Punteggio stato della latenza di invio per il tipo di risorsa dell'abbonamento Pub/Sub. Aggiungi un filtro per selezionare un solo abbonamento alla volta. Seleziona il grafico ad area cumulativa e passa il mouse sopra un momento specifico per controllare i punteggi dei criteri per l'abbonamento in quel momento.
Di seguito è riportato uno screenshot della metrica tracciata per un periodo di un'ora utilizzando un grafico ad area in pila. Il punteggio salute combinato sale a 5 alle 04:15, con un pari a 1 per ogni criterio. In seguito, il punteggio combinato diminuisce a 4 04:20, quando il punteggio di utilizzo scende a 0.
Monitoring Query Language fornisce un'interfaccia espressiva e basata su testo per dati delle serie temporali di Cloud Monitoring. La seguente query MQL crea un grafico per misurare il punteggio di integrità della latenza di pubblicazione per un abbonamento.
fetch pubsub_subscription
| metric 'pubsub.googleapis.com/subscription/delivery_latency_health_score'
| filter (resource.subscription_id == '$SUBSCRIPTION')
| group_by 1m,
[value_delivery_latency_health_score_sum:
sum(if(value.delivery_latency_health_score, 1, 0))]
| every 1m
Monitora la scadenza della scadenza di conferma
Per ridurre la latenza di recapito dei messaggi, Pub/Sub consente ai client sottoscrittori un periodo di tempo limitato per confermare (ack) un determinato messaggio. Questo periodo di tempo è noto come scadenza ACK. Se i tuoi abbonati ricevono troppo lunga per confermare i messaggi, questi vengono recapitati di nuovo, sottoscrittori che vedono messaggi duplicati. Questo nuovo caricamento può avvenire per motivi:
Il numero di iscritti è insufficiente (sono necessari più thread o macchine).
L'elaborazione di ogni messaggio richiede più tempo rispetto alla conferma la scadenza del periodo di conservazione. Le librerie client di Cloud in genere estendono per i singoli messaggi fino a un massimo configurabile. Tuttavia, è in vigore anche una data di scadenza massima per le estensioni delle librerie.
Alcuni messaggi fanno sempre arrestare in modo anomalo il client.
Puoi misurare la frequenza con cui gli abbonati non rispettano la scadenza per l'acknowledgment. La metrica specifica dipende dal tipo di abbonamento:
Pull e StreamingPull:
subscription/expired_ack_deadlines_count
Push:
subscription/push_request_count
filtrato perresponse_code != "success"
Tassi di scadenza della conferma eccessivi possono comportare inefficienze costose nel sistema. Paghi per ogni nuova consegna e per ogni tentativo di elaborare ripetutamente ogni messaggio. Al contrario, un tasso di scadenza ridotto (ad esempio 0,1-1%) potrebbe essere considerato normale.
Monitora la velocità effettiva dei messaggi
Gli iscritti a pull e streaming pull potrebbero ricevere lotti di messaggi in ogni risposta pull. Gli abbonamenti push ricevono un singolo messaggio in ogni richiesta push. Puoi monitorare la velocità effettiva dei messaggi batch elaborati dagli abbonati con le seguenti metriche:
Pull:
subscription/pull_request_count
Tieni presente che questa metrica può includere anche richieste di pull restituite con nessun messaggio)StreamingPull:
subscription/streaming_pull_response_count
Puoi monitorare la produttività dei messaggi singoli o non raggruppati elaborati dai tuoi abbonati con la metrica
subscription/sent_message_count
filtrata in base all'etichetta delivery_type
.
La seguente query MQL fornisce un grafico delle serie temporali che mostra il numero totale
di messaggi inviati a una sottoscrizione Pub/Sub specifica
ogni 10 minuti. Sostituisci i valori segnaposto per $PROJECT_NAME
e $SUBSCRIPTION_NAME
con il tuo
identificatori effettivi di progetti e argomenti.
fetch pubsub_subscription
| metric 'pubsub.googleapis.com/subscription/sent_message_count'
| filter resource.project_id == '$PROJECT_NAME'
&& resource.subscription_id == '$SUBSCRIPTION_NAME'
| align delta(10m)
| every 10m
| group_by [],
[value_sent_message_count_aggregate: aggregate(value.sent_message_count)]
Monitorare le iscrizioni push
Per le sottoscrizioni push, monitora queste metriche:
subscription/push_request_count
Raggruppa la metrica per
response_code
esubcription_id
. Poiché le sottoscrizioni push di Pub/Sub utilizzano i codici di risposta come conferma implicita dei messaggi, è importante per monitorare i codici di risposta alle richieste push. Poiché le iscrizioni push si ritirano in modo esponenziale quando si verificano timeout o errori, il backlog può crescere rapidamente in base alla risposta dell'endpoint.Valuta la possibilità di impostare un avviso per gli alti tassi di errore, poiché questi tassi una distribuzione lenta e un backlog in crescita. Puoi creare una metrica filtrata in base alla classe di risposta. Tuttavia, i conteggi delle richieste push sono probabilmente più utili come strumento per esaminare le dimensioni e la durata crescenti del backlog.
subscription/num_outstanding_messages
In genere, Pub/Sub limita il numero di messaggi in sospeso. Cerca di avere meno di 1000 messaggi in attesa nella maggior parte delle situazioni. Una volta che il throughput raggiunge una frequenza dell'ordine di 10.000 messaggi al secondo, il servizio regola il limite per il numero di messaggi in sospeso. Questa limitazione viene applicata in incrementi di 1000. Non vengono fornite garanzie specifiche oltre il valore massimo, quindi 1000 messaggi in attesa sono una buona guida.
subscription/push_request_latencies
Questa metrica ti aiuta a comprendere la distribuzione della latenza di risposta dell'endpoint push. A causa del limite sul numero di messaggi in sospeso, la latenza dell'endpoint influisce sul throughput dell'abbonamento. Se sono necessari 100 millisecondi per elaborare ogni messaggio, è probabile che il limite di throughput sia di 10 messaggi al secondo.
Per accedere a limiti di messaggi in attesa più elevati, gli iscritti alle notifiche push devono confermare oltre il 99% dei messaggi che ricevono.
Puoi calcolare la frazione dei messaggi che i sottoscrittori riconoscono utilizzando Monitoring Query Language. La seguente query MQL crea grafico con la frazione di messaggi che i sottoscrittori riconoscono di un abbonamento:
fetch pubsub_subscription
| metric 'pubsub.googleapis.com/subscription/push_request_count'
| filter
(resource.subscription_id == '$SUBSCRIPTION')
| filter_ratio_by [], metric.response_class == 'ack'
| every 1m
Monitorare gli abbonamenti con i filtri
Se configuri un filtro su una sottoscrizione, Pub/Sub conferma automaticamente i messaggi che non corrispondono al filtro. Puoi monitorare questa conferma automatica.
Le metriche di backlog includono solo messaggi che corrispondono al filtro.
Per monitorare la percentuale di messaggi con ACK automatico che non corrispondono al filtro, utilizza il metodo
subscription/ack_message_count
con l'etichetta delivery_type
impostata su filter
.
Per monitorare la velocità effettiva e il costo dei messaggi con ACK automatico che non corrispondono
usa il filtro subscription/byte_cost
metrica con l'etichetta operation_type
impostata su
filter_drop
. Per ulteriori informazioni sulle tariffe per questi messaggi, vedi
la pagina dei prezzi di Pub/Sub.
Monitorare i messaggi inoltrati non recapitati
Per monitorare i messaggi non recapitabili che Pub/Sub
inoltra a un argomento messaggi non recapitabili, utilizza la metrica
subscription/dead_letter_message_count
. Questa metrica mostra il numero
di messaggi non recapitabili che Pub/Sub inoltra da un
abbonamento.
Per verificare che Pub/Sub inoltri i messaggi non recapitabili, puoi confrontare la metrica subscription/dead_letter_message_count
con la metrica topic/send_request_count
. Confrontare l'argomento messaggi non recapitabili a cui
Pub/Sub inoltra questi messaggi.
Puoi anche collegare una sottoscrizione all'argomento messaggi non recapitabili e quindi monitorare ha inoltrato i messaggi non recapitabili in questa sottoscrizione utilizzando le seguenti metriche:
subscription/num_undelivered_messages
- il numero di messaggi inoltrati accumulati nella sottoscrizione
subscription/oldest_unacked_message_age
- l'età del messaggio inoltrato meno recente nell'iscrizione
Mantenere un publisher sano
L'obiettivo principale di un publisher è mantenere rapidamente i dati dei messaggi. Monitora questo
rendimento utilizzando
topic/send_request_count
, raggruppato per response_code
. Questo
metrica indica se Pub/Sub è integro e
accettare richieste.
Una percentuale di errori irreversibili (inferiore all'1%) non è un
motivo di preoccupazione, poiché la maggior parte delle librerie client di Cloud riprova
messaggi non riusciti. Esamina i tassi di errore superiori all'1%.
Poiché i codici non ripetibili vengono gestiti dalla tua applicazione (anziché dalla biblioteca client), devi esaminare i codici di risposta. Se il publisher
non ha un buon modo per segnalare uno stato non integro,
impostando un avviso sulla metrica topic/send_request_count
.
È altrettanto importante tenere traccia delle richieste di pubblicazione non riuscite nel client di pubblicazione. Sebbene le librerie client riprovino in genere le richieste non riuscite, non garantiscono la pubblicazione. Consulta la sezione Pubblicazione di messaggi per scoprire come rilevare gli errori di pubblicazione permanenti quando utilizzi le librerie client Cloud. L'applicazione del publisher deve registrare almeno gli errori di pubblicazione permanenti. Se registri questi errori in Cloud Logging, puoi configurare una metrica basata su log con un criterio di avviso.
Monitorare la velocità in bit dei messaggi
I publisher potrebbero inviare i messaggi in batch. Tu monitorare la velocità effettiva dei messaggi inviati dai publisher con questi metriche:
topic/send_request_count
: il volume di messaggi batch inviati dai publisher.Un conteggio di
topic/message_sizes
: il volume di messaggi singoli (non raggruppati) inviati dai publisher.
Per ottenere un conteggio preciso dei messaggi pubblicati, utilizza quanto segue
una query MQL. Questa query MQL recupera in modo efficace il conteggio di singoli
messaggi pubblicati in uno specifico argomento Pub/Sub entro intervalli di tempo definiti.
Sostituisci i valori segnaposto per $PROJECT_NAME
e $TOPIC_ID
con gli identificativi del progetto e dell'argomento effettivi.
fetch pubsub_topic
| metric 'pubsub.googleapis.com/topic/message_sizes'
| filter resource.project_id == '$PROJECT_NAME'
&& resource.topic_id == '$TOPIC_ID'
| align delta(60m)
| every 60m
| group_by [resource.topic_id],
[value_message_sizes_sum: count(value.message_sizes)]
Per una visualizzazione migliore, in particolare per le metriche giornaliere, considera quanto segue:
Visualizza i dati per un periodo più lungo per fornire maggiore contesto per le tendenze giornaliere.
Utilizza i grafici a barre per rappresentare i conteggi giornalieri dei messaggi.
Passaggi successivi
Per creare un avviso per una metrica specifica, consulta Gestire i criteri di avviso basati su metriche.
Per scoprire di più sull'utilizzo di MQL per creare per monitorare i grafici, consulta Utilizzo dell'editor di query.
Per scoprire di più sulle risorse API per l'API Monitoring, come metriche, risorse monitorate, gruppi di risorse monitorate e criteri di avviso, consulta Risorse API.