Configurare gli avvisi tramite Cloud Logging

Questo documento spiega come configurare, personalizzare e testare gli avvisi per gli eventi relativi allo stato del servizio.

L'integrità dei servizi personalizzati si integra con gli avvisi dei log di Cloud Monitoring per consentirti di configurare e ricevere avvisi. Puoi creare notifiche per le seguenti condizioni:

  • Quando vengono segnalati nuovi incidenti.
  • Quando gli incidenti esistenti vengono aggiornati, ad esempio quando l'assistenza di Google Cloud invia un nuovo messaggio.
  • Quando vengono creati o aggiornati incidenti per prodotti o località specifici di Google Cloud , ad esempio le regioni.
  • Quando vengono aggiornati dettagli specifici di incidenti esistenti, ad esempio stato e pertinenza.

Poiché queste notifiche utilizzano gli avvisi dei log, ogni notifica è associata a un incidente di monitoraggio. Ogni notifica include link alla pagina dell'incidente e un link diretto alla dashboard dell'Service Health. Scopri di più sulla ricerca degli incidenti.

Dopo aver configurato un avviso, riceverai una notifica ogni volta che vengono soddisfatte le condizioni del criterio di avviso. Queste notifiche sono soggette ai limiti di monitoraggio. Un esempio è 20 avvisi per criterio al giorno per progetto.

Le sezioni riportate di seguito descrivono come configurare un criterio di avviso per i log e forniscono esempi di scenari di avviso comuni. Gli avvisi sui log si basano su canali di notifica, che supportano una serie di integrazioni, tra cui email, SMS, Pub/Sub, webhook, Slack e PagerDuty.

Per inoltrare un avviso a una destinazione diversa da quelle elencate in precedenza, ti consigliamo di utilizzare un webhook. Ad esempio, puoi configurare un webhook per ServiceNow. Per ulteriori informazioni, consulta Configurare l'webhook in Google Cloud nella documentazione di ServiceNow.

Formati delle notifiche di avviso

I formati delle notifiche di avviso variano in base al canale di notifica.

Email

Se configuri l'avviso per l'invio di un'email, quando la condizione di avviso viene soddisfatta, un messaggio che utilizza l'indirizzo alerting-noreply@google.com verrà inviato all'indirizzo email che hai scelto.

Slack

Se configuri la notifica personalizzata per la pubblicazione su Slack, un messaggio dell'applicazione Cloud Monitoring verrà visualizzato nel canale selezionato quando si verifica l'evento.

Configura un criterio di avviso

Un avviso utilizza un criterio di avviso, che descrive le circostanze in cui vuoi ricevere un avviso e la modalità di invio della notifica.

Puoi configurare i criteri di avviso nella dashboard di Service Health o utilizzando Google Cloud CLI.

I criteri di avviso richiedono un canale di notifica di Cloud Monitoring, che definisce dove viene inviato un avviso. Se non hai un canale di notifica, puoi crearne uno nella console Google Cloud o utilizzando l'API di monitoraggio.

Nella dashboard Service Health

Consulta la guida rapida.

Utilizzo di gcloud CLI

Per configurare un criterio di avviso utilizzando gcloud CLI:

  1. Recupera l'ID canale di notifica.

    a. Elenca gli ID canale di notifica.

    gcloud config set project PROJECT_ID gcloud beta monitoring channels list
    

    b. Cerca le voci con projects/PROJECT_ID/notificationChannels/. Queste voci sono gli ID dei canali di notifica.

  2. Crea un file policy.json con i seguenti contenuti:

    • ALERT_NAME viene visualizzato nella notifica. Esempio: "Google Cloud SQL incident"

    • ALERT_CONDITION definisce quando inviare l'avviso.

      • Quando definisci le condizioni, utilizza i valori trovati nei prodotti e nelle località.
      • Esempi di condizioni di avviso:

        Condizione di avviso Valore ALERT_CONDITION
        Ricevere avvisi per qualsiasi evento Cloud SQL jsonPayload.impactedProductIds =~ \"hV87iK5DcEXKgWU2kDri\"
        Ricevere avvisi per qualsiasi evento che si verifica nella zona us-central1-a jsonPayload.impactedLocations =~ \"us-central1-a\"

      Consulta altri esempi di condizioni di avviso.

    • NOTIFICATION_CHANNEL è l'ID canale di notifica recuperato utilizzando il comando list nel passaggio precedente. Esempio: projects/PROJECT_ID/notificationChannels/885798905074.

    Lo snippet seguente mostra un esempio del file policy.json.

    {
      "displayName": "ALERT_NAME",
      "combiner": "OR",
      "conditions": [ {
        "displayName": "Log match condition",
        "conditionMatchedLog": {
          "filter": "ALERT_CONDITION",
         } } ],
      "notificationChannels": [ "NOTIFICATION_CHANNEL" ],
    }
    
  3. Crea il criterio Cloud Monitoring.

    gcloud config set project PROJECT_ID
    gcloud alpha monitoring policies create --policy-from-file="policy.json"
    

Personalizzare i contenuti dell'avviso

Puoi impostare i campi all'interno della notifica tramite i seguenti campi nel file JSON:

  • labelExtractors: le proprietà da includere nell'intestazione della notifica. Per personalizzare queste proprietà, consulta la guida a LabelExtractors.
  • content: la formattazione della notifica via email. Puoi utilizzare la sostituzione delle variabili Markdown, che ti consente di utilizzare labelExtractors come variabili. Per personalizzare queste variabili, consulta questa guida.

Consulta gli esempi di norme e condizioni di avviso per scoprire come personalizzare gli avvisi.

Testa l'avviso

Per testare l'avviso, utilizzerai un log di test di esempio con Cloud Logging. Il log del test mostra la logica di avviso configurata in precedenza.

Utilizzo della console Google Cloud

Segui questi passaggi:

  1. Vai alla pagina di riferimento per il metodo entries:write, che ti consente di scrivere voci di log in Cloud Logging. Viene visualizzata una finestra che ti consente di provare il metodo.
  2. Nel corpo della richiesta, sostituisci PROJECT_ID con il tuo progetto.
  3. Modifica i campi jsonPayload nel corpo della richiesta, a seconda della condizione di avviso che stai testando. Puoi anche controllare lo schema event_log.proto e modificare i valori nel log per testare scenari specifici che ti interessano.

    {
      "entries": [
        {
          "logName": "projects/PROJECT_ID/logs/servicehealth.googleapis.com%2Factivity",
          "resource": {
            "type": "servicehealth.googleapis.com/Event",
            "labels": {
              "resource_container": "PROJECT_ID",
              "location": "global",
              "event_id": "U4AqrjwFQYi5fFBmyAX-Gg"
            }
          },
          "labels": {
            "servicehealth.googleapis.com/new_event": "true",
            "servicehealth.googleapis.com/updated_fields": "[]"
          },
          "jsonPayload": {
            "@type": "type.googleapis.com/google.cloud.servicehealth.logging.v1.EventLog",
            "category": "INCIDENT",
            "title": "EXAMPLE... NOT REAL INCIDENT",
            "description": "EXAMPLE FOR TESTING, NOT REAL INCIDENT. We are experiencing an issue with Google Cloud infrastructure components at us-east1, australia-southeast2. Our engineering team continues to investigate the issue. We apologize to all who are affected by the disruption.",
            "updateTime": "2022-07-15T22:26:40Z",
            "endTime": "2022-07-16T22:13:20Z",
            "impactedLocations": "['us-east1', 'australia-southeast2']",
            "impactedProducts": "['CloudSQL']",
            "impactedProductIds": "['hV87iK5DcEXKgWU2kDri']",
            "startTime": "2022-07-13T12:26:40Z",
            "nextUpdateTime": "2022-07-13T16:26:40Z",
            "state": "ACTIVE",
            "detailedState": "CONFIRMED",
            "relevance": "RELATED"
          }
        }
      ]
    }
    
  4. Fai clic su Execute (Esegui). Viene visualizzata una finestra in cui Explorer API di Google richiede l'accesso al tuo account.

  5. Consenti l'accesso a Google APIs Explorer. La finestra con il corpo della richiesta mostra lo screenshot seguente, che indica il successo.

    Messaggio 200

  6. Attendi qualche minuto, quindi verifica che l'avviso sia stato attivato.

    1. Nella console Google Cloud, vai a Cloud Monitoring > Incidents e cerca l'avviso.
    2. Controlla se hai ricevuto un avviso sul canale di notifica utilizzato dal criterio di avviso.

Se devi testare di nuovo l'avviso, attendi almeno 5 minuti prima di farlo.

Utilizzo di gcloud

Puoi anche creare una voce di log di test chiamando l'API Cloud Logging utilizzando il comando gcloud.

  1. (Facoltativo) Controlla il progetto attuale.

    gcloud config list
    
  2. Imposta il progetto corrente.

    gcloud_name config set project PROJECT_ID
    
  3. Scrivi la voce del log di test.

    gcloud logging write --payload-type=json
    LOG_NAME
    '{ "category": "INCIDENT", "relevance": "IMPACTED", "@type": "type.googleapis.com/google.cloud.servicehealth.logging.v1.EventLog", "description": "This is a test log entry"}'
    
  4. Attendi qualche minuto, quindi verifica che l'avviso sia stato attivato.