Risolvere i problemi relativi alle notifiche mancanti

Questa pagina spiega perché potresti non ricevere le notifiche come previsto e offre possibili rimedi per queste situazioni.

Le notifiche non vengono ricevute

Configuri i canali di notifica e ti aspetti di ricevere notifiche quando si verificano incidenti. Non ricevi alcuna notifica.

Per raccogliere informazioni sulla causa dell'errore:

  1. Nella console Google Cloud, vai alla pagina Esplora log:

    Vai a Esplora log

    Se usi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Logging.

  2. Seleziona il progetto Google Cloud appropriato.
  3. Esegui una query nei log per verificare gli eventi del canale di notifica:

    1. Espandi il menu Nome log e seleziona notification_channel_events.
    2. Espandi il menu Gravità e seleziona Errore.
    3. (Facoltativo) Per selezionare un intervallo di tempo personalizzato, utilizza il selettore dell'intervallo di tempo.
    4. 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 in genere contengono informazioni sugli errori. Ad esempio, quando si verifica un errore del gateway, la riga di riepilogo include "non riuscito con 502 gateway non valido".

Mancata ricezione di notifiche webhook

Configuri un canale di notifica webhook e prevedi di ricevere una notifica quando si verificano incidenti. Non ricevi alcuna notifica.

Endpoint privato

Puoi utilizzare i webhook per le notifiche solo se l'endpoint è pubblico.

Per risolvere la situazione, utilizza le notifiche Pub/Sub combinate con una sottoscrizione pull all'argomento delle notifiche.

Quando configuri un canale di notifica Pub/Sub, le notifiche degli incidenti vengono inviate a una coda Pub/Sub che dispone di controlli di Identity and Access Management. Qualsiasi servizio che possa eseguire query o ascoltare un argomento Pub/Sub può utilizzare queste notifiche. Ad esempio, le applicazioni in esecuzione su App Engine, Cloud Run o macchine virtuali Compute Engine possono ricevere queste notifiche.

Se utilizzi una sottoscrizione pull, a Google viene inviata una richiesta 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 per cui la consegna non è riuscita, esamina le voci di log di Cloud Logging per trovare 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"

Mancata ricezione di notifiche Pub/Sub

Configuri un canale di notifica Pub/Sub ma non ricevi nessuna notifica.

Per risolvere questa condizione, prova a procedere nel seguente modo:

  • Assicurati che l'account di servizio delle notifiche esista. Le notifiche non vengono inviate quando l'account di servizio è stato eliminato.

    Per verificare che l'account di servizio esista:

    1. Nella console Google Cloud, vai alla pagina IAM:

      Vai a IAM

      Se usi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo IAM e amministrazione.

    2. Cerca un account di servizio che abbia 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 le concessioni dei ruoli fornite da Google.

    Se l'account di servizio delle notifiche non esiste, devi avviare il processo di creazione del canale di notifica Pub/Sub per Monitoring al fine di creare l'account di servizio:

    1. Nella console Google Cloud, vai alla pagina  Avvisi:

      Vai ad Avvisi

      Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Monitoring.

    2. Fai clic su Modifica canali di notifica.
    3. Nella sezione Pub/Sub, fai clic su Aggiungi nuovo.

      Monitoring crea l'account di servizio delle notifiche quando non ne esiste uno. La finestra di dialogo Crea canale Pub/Sub mostra il nome dell'account di servizio delle notifiche.

    4. 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.

    5. Concedi all'account di servizio le autorizzazioni per pubblicare i tuoi argomenti Pub/Sub:

      1. In una nuova scheda del browser, apri il documento Crea un canale di notifica.
      2. Seleziona la scheda Pub/Sub, quindi segui i passaggi descritti nella sezione Autorizza account di servizio della pagina.
  • Assicurati che l'account di servizio delle notifiche sia stato autorizzato a inviare notifiche per gli argomenti Pub/Sub di interesse.

    Per visualizzare le autorizzazioni per 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 ciascun account di servizio.
    • Ogni argomento è elencato nella pagina Argomenti di Pub/Sub nella console Google Cloud. 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 questo comando di 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 è 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 l'account di servizio delle notifiche, vedi Autorizzare l'account di servizio.

Le notifiche relative ai criteri di avviso per il controllo di uptime non vengono ricevute

Vuoi ricevere una notifica se una macchina virtuale (VM) viene riavviata o arrestata, quindi crei un criterio di avviso che monitora la metrica compute.googleapis.com/instance/uptime. Puoi creare e configurare la condizione per generare un incidente quando non sono disponibili dati delle metriche. Non devi definire la condizione utilizzando Monitoring Query Language (MQL)1. Non ricevi notifiche quando la macchina virtuale (VM) viene riavviata o arrestata.

Questo criterio di avviso monitora solo le serie temporali per le istanze VM di Compute Engine che si trovano in stato RUNNING. Le serie temporali per le VM in qualsiasi altro stato, come 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 metrica per determinare se è in esecuzione un'istanza VM. 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 per i controlli di uptime è utilizzare i criteri di avviso per monitorare l'assenza di dati. Consigliamo vivamente di creare avvisi per i controlli di uptime anziché per l'assenza di dati: i criteri di avviso per l'assenza di metrica possono generare falsi positivi in caso di problemi temporanei con la disponibilità dei dati di Monitoring.

Tuttavia, se non è possibile utilizzare i controlli di uptime, puoi creare un criterio di avviso con MQL che indichi che la VM è stata arrestata. Le condizioni definite da MQL non pre-filtrano 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 arrestate.

Considera 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 le notifiche. Il valore absent_for deve essere di almeno tre minuti.

Per ulteriori informazioni su MQL, consulta Criteri di avviso con MQL.

1: MQL è un linguaggio espressivo basato su testo che può essere utilizzato con le chiamate 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 relative ai criteri di avviso del 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 notifiche quando il numero di richieste supera la soglia configurata.

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 è più lungo del massimo per questa metrica, riduci il periodo di allineamento in modo che non sia superiore a 7 ore e 30 minuti.