Questa pagina spiega perché potresti non ricevere le notifiche come previsto e offre possibili soluzioni per queste situazioni.
Le notifiche non vengono ricevute
Configura i canali di notifica e prevedi di ricevere una notifica quando si verificano incidenti. Non ricevi notifiche.
Per raccogliere informazioni sulla causa dell'errore:
-
Nella console Google Cloud, vai alla pagina Esplora log:
Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Logging.
- Seleziona il progetto Google Cloud appropriato.
Esegui una query sui log per gli eventi del canale di notifica:
- Espandi il menu Nome log e seleziona notification_channel_events.
- Espandi il menu Gravità e seleziona Errore.
- (Facoltativo) Per selezionare un intervallo di tempo personalizzato, utilizza il selettore dell'intervallo di tempo.
- Fai clic su Esegui query.
I passaggi precedenti creano la seguente query:
resource.type:"stackdriver_notification_channel" logName="projects/PROJECT_ID/logs/monitoring.googleapis.com%2Fnotification_channel_events" severity=ERROR
La riga di riepilogo e il campo
jsonPayload
contengono in genere informazioni sugli errori. Ad esempio, quando si verifica un errore di gateway, la riga di riepilogo include "non riuscita con 502 Bad Gateway".
Le notifiche webhook non vengono ricevute
Configura un canale di notifica webhook e prevedi di ricevere una notifica quando si verificano incidenti. Non ricevi notifiche.
Endpoint privato
Non puoi utilizzare gli webhook per le notifiche, a meno che l'endpoint non sia pubblico.
Per risolvere questa situazione, utilizza le notifiche Pub/Sub con una sottoscrizione pull all'argomento di notifica.
Quando configuri un canale di notifica Pub/Sub, le notifiche degli incidenti vengono inviate a una coda Pub/Sub con controlli di Identity and Access Management. Qualsiasi servizio in grado di eseguire query su un argomento Pub/Sub o di ascoltarlo può utilizzare queste notifiche. Ad esempio, le applicazioni in esecuzione su macchine virtuali App Engine, Cloud Run o Compute Engine possono utilizzare queste notifiche.
Se utilizzi una sottoscrizione pull, viene inviata una richiesta a Google che attende l'arrivo di un messaggio. Questi abbonamenti richiedono l'accesso a Google, ma non richiedono regole per i firewall o l'accesso in entrata.
Endpoint pubblico
Per identificare il motivo dell'errore di importazione, esamina le voci di log di Cloud Logging per informazioni sull'errore.
Ad esempio, puoi cercare le voci di log per la risorsa canale di notifica utilizzando Esplora log, con un filtro come il seguente:
resource.type="stackdriver_notification_channel"
Le notifiche Pub/Sub non vengono ricevute
Configura un canale di notifica Pub/Sub, ma non ricevi alcuna notifica.
Per risolvere questa condizione, prova quanto segue:
Assicurati che l'account di servizio per le notifiche esista. Le notifiche non vengono inviate se l'account di servizio è stato eliminato.
Per verificare che l'account di servizio esista:
-
Nella console Google Cloud, vai alla pagina IAM:
Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo IAM e amministrazione.
Cerca un account di servizio con la seguente convenzione di denominazione:
service-PROJECT_NUMBER@gcp-sa-monitoring-notification.iam.gserviceaccount.com
Se questo account di servizio non è presente nell'elenco, seleziona Includi concessioni di ruoli fornite da Google.
Se l'account di servizio per le notifiche non esiste, devi iniziare la procedura di creazione del canale di notifica Pub/Sub per il monitoraggio per creare l'account di servizio:
-
Nella console Google Cloud, vai alla pagina notifications Avvisi:
Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Monitoring.
- Fai clic su Modifica canali di notifica.
Nella sezione Pub/Sub, fai clic su Aggiungi nuovo.
Il monitoraggio crea l'account di servizio per le notifiche se non esiste. La finestra di dialogo Crea canale Pub/Sub mostra il nome dell'account di servizio per le notifiche.
Se non vuoi aggiungere un canale di notifica, fai clic su Annulla. In caso contrario, completa la creazione del canale di notifica e fai clic su Aggiungi canale.
Concedi all'account di servizio le autorizzazioni per pubblicare gli argomenti Pub/Sub:
- In una nuova scheda del browser, apri il documento Creare un canale di notifica.
- Seleziona la scheda Pub/Sub, quindi segui i passaggi indicati nella sezione Autorizza account di servizio della pagina.
-
Assicurati che l'account di servizio per le notifiche sia stato autorizzato a inviare notifiche per gli argomenti Pub/Sub di tuo interesse.
Per visualizzare le autorizzazioni di un account di servizio, puoi utilizzare la console Google Cloud o il comando Google Cloud CLI:
- La pagina IAM della console Google Cloud elenca i ruoli per ogni account di servizio.
- La pagina Argomenti di Pub/Sub nella console Google Cloud elenca ogni argomento. Quando selezioni un argomento, la scheda Autorizzazioni elenca i ruoli concessi agli account di servizio.
Per elencare tutti gli account di servizio e i relativi ruoli, esegui il seguente comando Google Cloud CLI:
gcloud projects get-iam-policy PROJECT_ID
Di seguito è riportata una risposta parziale per questo comando:
serviceAccount:service-PROJECT_NUMBER@gcp-sa-monitoring-notification.iam.gserviceaccount.com role: roles/monitoring.notificationServiceAgent - members: [...] role: roles/owner - members: - serviceAccount:service-PROJECT_NUMBER@gcp-sa-monitoring-notification.iam.gserviceaccount.com role: roles/pubsub.publisher
La risposta al comando include solo i ruoli, non l'autorizzazione per argomento.
Per elencare le associazioni IAM per un argomento specifico, esegui questo comando:
gcloud pubsub topics get-iam-policy TOPIC
Di seguito è riportata una risposta di esempio per questo comando:
bindings: - members: - serviceAccount:service-PROJECT_NUMBER@gcp-sa-monitoring-notification.iam.gserviceaccount.com role: roles/pubsub.publisher etag: BwXPRb5WDPI= version: 1
Per informazioni su come autorizzare l'account di servizio per le notifiche, consulta Autorizzare l'account di servizio.
Le notifiche per i criteri di avviso relativi al controllo di uptime non vengono ricevute
Vuoi ricevere una notifica se una macchina virtuale (VM) si riavvia o si arresta, quindi crei una criterio di avviso che monitora la metrica compute.googleapis.com/instance/uptime
.
Creando e configurando la condizione, viene generato un incidente quando non sono presenti dati sulle metriche. Non definisci la condizione utilizzando
Monitoring Query Language (MQL)1.
Non ricevi una notifica quando la macchina virtuale (VM) si riavvia o si arresta.
Questo criterio di avviso monitora solo le serie temporali per le istanze VM di Compute Engine
che si trovano nello stato RUNNING
. Le serie temporali per le VM in qualsiasi altro stato, ad esempio STOPPED
o DELETED
, vengono filtrate prima della valutazione della condizione. A causa di questo comportamento, non puoi utilizzare un
criterio di avviso
con una condizione di avviso di assenza di metrica per determinare se un'istanza VM è in esecuzione. Per informazioni sugli stati delle istanze VM, consulta
Ciclo di vita delle istanze VM.
Per risolvere il problema, crea un criterio di avviso per monitorare un controllo di uptime. Per gli endpoint privati, utilizza i controlli di uptime privati.
Una possibile alternativa agli avvisi sui controlli di uptime è utilizzare criteri di avviso che monitorano l'assenza di dati. Ti consigliamo vivamente di attivare gli avvisi per i controlli di uptime anziché per l'assenza di dati: le norme di avviso per l'assenza di metriche possono generare falsi positivi se si verificano problemi temporanei con la disponibilità dei dati di monitoraggio.
Tuttavia, se non è possibile utilizzare i controlli di uptime, puoi creare un criterio di avviso con MQL che ti invii una notifica quando la VM viene arrestata. Le condizioni definite in MQL non prefiltrano i dati delle serie temporali in base allo stato dell'istanza VM. Poiché MQL non filtra i dati in base agli stati delle VM, puoi utilizzarlo per rilevare l'assenza di dati delle VM che sono state interrotte.
Prendi in considerazione la seguente condizione MQL che monitora la metrica
compute.googleapis.com/instance/cpu/utilization
:
fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
|absent_for 3m
Se una VM monitorata da questa condizione viene arrestata,
tre minuti dopo viene generato un incidente e vengono inviate notifiche. Il valore absent_for
deve essere almeno di tre minuti.
Per ulteriori informazioni su MQL, consulta Criteri di avviso con MQL.
1: MQL è un linguaggio basato su testo espressivo che può essere utilizzato con le chiamate dell'API Cloud Monitoring e nella console Google Cloud. Per configurare una condizione con MQL quando utilizzi la console Google Cloud, devi utilizzare l'editor di codice.
Le notifiche per i criteri di avviso relativi al numero di richieste non vengono ricevute
Vuoi monitorare il numero di richieste completate. Hai creato un
criterio di avviso che monitora la metrica
serviceruntime.googleapis.com/api/request_count
, ma non ricevi una notifica quando il numero di richieste supera la soglia che hai
configurato.
Il periodo di allineamento massimo per la metrica del conteggio delle richieste è di 7 ore e 30 minuti.
Per risolvere il problema, controlla il valore del periodo di allineamento nel criterio di avviso. Se il valore è superiore al massimo per questa metrica, riduci il periodo di allineamento in modo che non superi le 7 ore e 30 minuti.