Puoi diagnosticare e risolvere i problemi relativi alle notifiche di avviso di Cloud Monitoring mancanti
esaminando i log notification_channel_events in Esplora log. Puoi
quindi risolvere i problemi di distribuzione e configurazione nei canali webhook, Pub/Sub e
SMS oppure modificare i criteri di avviso per gli arresti delle macchine virtuali (VM)
e le metriche del conteggio delle richieste.
Notifiche non ricevute
Se non ricevi notifiche tramite i canali di notifica configurati, procedi nel seguente modo:
-
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 nei 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=ERRORLa riga di riepilogo e il campo
jsonPayloadin genere contengono informazioni sull'errore. Ad esempio, quando si verifica un errore del gateway, la riga di riepilogo include "failed with 502 Bad Gateway".
Le notifiche webhook non vengono ricevute
Questa sezione si applica quando non ricevi notifiche tramite un canale di notifica webhook configurato.
Endpoint privato
Se hai un endpoint privato, utilizza le notifiche Pub/Sub in combinazione con una sottoscrizione pull all'argomento di notifica. Non puoi utilizzare i webhook per le notifiche agli endpoint privati.
Quando configuri un canale di notifica Pub/Sub, le notifiche di avviso vengono inviate a una coda Pub/Sub con controlli Identity and Access Management. Qualsiasi servizio che può eseguire query o ascoltare un argomento Pub/Sub 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 a Google una richiesta che attende l'arrivo di un messaggio. Questi abbonamenti richiedono l'accesso a Google, ma non richiedono regole per firewall o accesso in entrata.
Endpoint pubblico
Per identificare il motivo per cui la consegna non è riuscita, esamina le voci di log di Cloud Logging per informazioni sull'errore.
Ad esempio, puoi cercare le voci di log per la risorsa del canale di notifica utilizzando Esplora log, con un filtro come il seguente:
resource.type="stackdriver_notification_channel"
Le notifiche Pub/Sub non vengono ricevute
Se non ricevi notifiche tramite un canale di notifica Pub/Sub configurato, i log possono aiutarti a diagnosticare e risolvere l'errore. Questa sezione descrive le voci di log scritte dal sistema quando non è possibile inviare una notifica. Puoi utilizzare le informazioni in questa sezione per risolvere il motivo dell'errore.
I log includono un errore Failed to authenticate as service account
Quando esegui una query nel log notification_channel_events per cercare errori, potresti trovare
una voce di log il cui campo summary include il seguente messaggio:
Failed to authenticate as service account service-PROJECT_NUMBER@gcp-sa-monitoring-notification.iam.gserviceaccount.com
Questo errore si verifica quando il account di servizio di notifica non esiste. Di conseguenza, le notifiche non vengono inviate.
Per verificare che il 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.comSe questo account di servizio non è elencato, seleziona Includi concessioni di ruoli fornite da Google.
Per attivare Monitoring in modo che crei il service account di notifica, inizia la procedura di creazione di un canale di notifica Pub/Sub:
-
Nella Google Cloud console, 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 il account di servizio delle notifiche quando non esiste. La finestra di dialogo Crea canale Pub/Sub mostra il nome del account di servizio di notifica.
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 al account di servizio le autorizzazioni per pubblicare negli argomenti Pub/Sub:
- In una nuova scheda del browser, apri il documento Crea un canale di notifica.
- Seleziona la scheda Pub/Sub e poi segui i passaggi nella sezione Autorizza service account della pagina.
I log includono un errore PERMISSION_DENIED
Quando esegui una query nel log notification_channel_events per cercare errori, potresti trovare
una voce di log il cui campo summary include il seguente messaggio:
An error occurred while publishing notification to Cloud Pub/Sub topic TOPIC_ID. Possible causes: 1) you don't have the required role (https://cloud.google.com/monitoring/support/notification-options#pubsub); or 2) Cloud Pub/Sub API is not enabled in your project: PERMISSION_DENIED
Questo errore si verifica quando il account di servizio di notifica non è stato autorizzato a inviare notifiche per gli argomenti Pub/Sub di interesse oppure quando l'API Pub/Sub non è abilitata nel tuo progetto.
Per visualizzare le autorizzazioni per un account di servizio, puoi utilizzare la consoleGoogle Cloud o il comando Google Cloud CLI:
- La pagina IAM nella 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 ai service account.
Per elencare tutti i service account e i relativi ruoli, esegui questo comando Google Cloud CLI:
gcloud projects get-iam-policy PROJECT_IDDi 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.publisherLa risposta al comando include solo i ruoli; non include l'autorizzazione per argomento.
Per elencare i binding IAM per un argomento specifico, esegui questo comando:
gcloud pubsub topics get-iam-policy TOPIC_IDDi seguito è riportato un esempio di risposta 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 il account di servizio di notifica, consulta Autorizzare il service account.
I log includono un errore FAILED_PRECONDITION
Quando esegui una query nel log notification_channel_events per cercare errori, potresti trovare
una voce di log il cui campo summary include il seguente messaggio:
An error occurred while publishing notification to Cloud Pub/Sub topic TOPIC_ID: FAILED_PRECONDITION
Questo errore si verifica quando Pub/Sub rifiuta una richiesta di pubblicazione da Monitoring perché l'argomento di destinazione non soddisfa una precondizione richiesta. Le cause comuni di questo errore includono:
Criteri di archiviazione dei messaggi e limitazioni della residenza dei dati: i criteri di archiviazione dei messaggi dell'argomento limitano le Google Cloud regioni in cui i messaggi possono essere trattati o archiviati:
- Applicazione del transito in una regione non consentita: il criterio di archiviazione dei messaggi dell'argomento ha
enforceInTransitimpostato sutruee la richiesta di pubblicazione arriva in una regione che non si trova inallowedPersistenceRegions. QuandoenforceInTransitètrue, Pub/Sub rifiuta le richieste provenienti da regioni non consentite anziché reindirizzarle. Se l'argomento utilizza trasformazioni di singoli messaggi di inferenza AI, anche la regione di pubblicazione deve essere consentita dalla trasformazione. - Regioni di persistenza consentite con limitazioni: l'argomento ha
enforceInTransitimpostato sufalsee la richiesta di pubblicazione arriva al di fuori diallowedPersistenceRegions, ma Pub/Sub non può reindirizzare la richiesta perché non è disponibile alcun cluster valido eallowedPersistenceRegionscontiene solo regioni private o con limitazioni. - Replica sincrona tra regioni senza una regione secondaria valida:
L'argomento utilizza la replica sincrona tra regioni e ha una norma di archiviazione dei messaggi, ma
allowedPersistenceRegionsnon include una regione di replica secondaria valida per la posizione di pubblicazione. - Endpoint regionale senza applicazione del transito: la richiesta di pubblicazione
viene indirizzata a un endpoint regionale, ma il
criterio di archiviazione dei messaggi dell'argomento ha
enforceInTransitimpostato sufalse.
Per risolvere gli errori della policy di archiviazione dei messaggi, aggiorna la policy di archiviazione dei messaggi dell'argomento o la configurazione della regione di trasformazione di un singolo messaggio in modo che
allowedPersistenceRegionsincluda la regione di pubblicazione e qualsiasi regione di replica secondaria richiesta oppure impostaenforceInTransitsufalsese non è richiesta l'applicazione regionale in transito.- Applicazione del transito in una regione non consentita: il criterio di archiviazione dei messaggi dell'argomento ha
Errori relativi alla chiave di crittografia gestita dal cliente (CMEK): l'argomento è configurato per utilizzare una chiave di crittografia gestita dal cliente di Cloud Key Management Service (Cloud KMS) e Pub/Sub non può criptare il messaggio pubblicato:
- Autorizzazione negata per la chiave Cloud KMS: Cloud KMS
restituisce un errore
PERMISSION_DENIEDquando Pub/Sub tenta di criptare il messaggio, che Pub/Sub segnala comeFAILED_PRECONDITION. Ad esempio, questo errore si verifica quando il service agent Pub/Sub non dispone del ruolo CryptoKey Encrypter/Decrypter (roles/cloudkms.cryptoKeyEncrypterDecrypter) per la chiave. - Stato della chiave Cloud KMS inutilizzabile: Cloud KMS restituisce un
errore
FAILED_PRECONDITIONperché la versione della chiave è disabilitata o eliminata oppure perché una chiave di un gestore di chiavi esterno non è raggiungibile.
Per risolvere gli errori CMEK, verifica che la versione della chiave Cloud KMS sia abilitata e raggiungibile e assicurati che il service agent Pub/Sub disponga del ruolo
roles/cloudkms.cryptoKeyEncrypterDecryptersulla chiave.- Autorizzazione negata per la chiave Cloud KMS: Cloud KMS
restituisce un errore
Non ricevi una notifica quando una VM viene arrestata
Per ricevere una notifica quando una macchina virtuale (VM) si arresta, crea un controllo di uptime per interrogare periodicamente la VM e poi crea una criterio di avviso per monitorare il controllo di uptime. Se utilizzi un Virtual Private Cloud (VPC), potresti dover creare un controllo privato dell'uptime.
Una criterio di avviso che monitora la metrica
compute.googleapis.com/instance/uptime non ti invierà una notifica quando la VM si spegne. Per questa metrica, le norme di avviso monitorano solo le serie temporali per le istanze VM che si trovano nello stato RUNNING. Se una VM si trova in un altro stato, ad esempio STOPPED o DELETED,
non viene monitorata. Per informazioni sugli stati delle istanze VM, vedi
Ciclo di vita delle istanze VM.
Le notifiche per i criteri di avviso basati sul conteggio delle richieste non vengono ricevute
Se non ricevi notifiche per una criterio di avviso che monitora la metrica
serviceruntime.googleapis.com/api/request_count,
assicurati che il periodo di allineamento della policy non superi
le 7 ore e 30 minuti.
Non vengono ricevuti messaggi di notifica SMS o codici di verifica
Se non ricevi notifiche SMS o codici di verifica, assicurati
di non aver raggiunto il limite di messaggi SMS. Potrebbero esserci
log che confermano questo errore. Controlla i log per Denied quota token.
Tieni presente che gli SMS non sono un tipo di canale di notifica affidabile e potrebbero non essere disponibili in alcune regioni. Evita di fare affidamento esclusivamente sui canali SMS per le notifiche. Configura invece canali di notifica aggiuntivi, ad esempio l'email.