Configurare i criteri di avviso basati su log

Puoi configurare un criterio di avviso per ricevere una notifica ogni volta che un messaggio specifico viene visualizzato nei log inclusi. Ad esempio, se vuoi sapere quando un log di controllo registra un particolare messaggio di accesso ai dati, puoi ricevere una notifica quando viene visualizzato il messaggio. Questi tipi di criteri di avviso sono chiamati criteri di avviso basati su log. Questo documento descrive come eseguire le seguenti operazioni, utilizzando la console Google Cloud e l'API Cloud Monitoring:

  • Crea e testa un criterio di avviso basato su log.
  • Modifica una criterio di avviso basata su log.
  • Elimina un criterio di avviso basato su log.

Prima di iniziare

Crea una criterio di avviso basata su log utilizzando Esplora log

Puoi creare una criterio di avviso basata su log dalla pagina Esplora log nella console Google Cloud o utilizzando l'API Monitoring. Questa sezione descrive come creare criteri di avviso basati su log utilizzando Esplora log. Per informazioni sull'API Monitoring, consulta Creare un criterio di avviso basato su log utilizzando l'API Monitoring.

Le policy di avviso basate su log non rispettano l'impostazione dell'ambito nella pagina Esplora log. Al contrario, quando un sink a livello di progetto instrada una voce di log proveniente da un progetto a un bucket di log, le policy di avviso basate su log definite in quel progetto analizzano la voce di log. Per saperne di più, vedi Voci di log disponibili.

L'interfaccia di Esplora log ti guida attraverso i seguenti passaggi:

  • Fornisci i dettagli del criterio di avviso, ad esempio un nome e un livello di gravità.
  • Scegli i log per i quali vuoi ricevere una notifica.
  • Imposta l'orario tra le notifiche.
  • Imposta l'ora per la chiusura automatica degli incidenti.
  • Specifica a chi inviare la notifica.

Ad esempio, supponi di avere un'applicazione che scrive una voce di log syslog con gravità NOTICE quando l'applicazione modifica un indirizzo di rete. Le voci di log per le modifiche dell'indirizzo di rete includono un payload JSON simile al seguente:

"jsonPayload": {
  "type": "Configuration change",
  "action": "Set network address",
  "result": "IP_ADDRESS",
}

Vuoi creare un criterio di avviso basato su log che ti avvisi quando un indirizzo IPv4 non valido viene visualizzato nel campo jsonPayload.result delle voci di log in syslog con gravità NOTICE.

Per creare questo criterio di avviso:

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

    Vai a Esplora log

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

  2. Utilizza il riquadro Query per creare una query che corrisponda al messaggio che vuoi utilizzare nel criterio di avviso basato su log.

    Ad esempio, per trovare le voci di log con un livello di gravità NOTICE nel log syslog che hanno indirizzi IP non validi nel payload JSON, puoi utilizzare la seguente query:

    log_id("syslog")
    severity = "NOTICE"
    jsonPayload.result !~ "^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.|$)){4}$"
    

    Fai clic su Esegui query per convalidare la query.

  3. Nella barra degli strumenti Risultati delle query, espandi il menu Azioni e seleziona Crea avviso log.

  4. Nel riquadro Dettagli avviso, segui questi passaggi:

    1. Inserisci un nome per il criterio di avviso nel campo Nome criterio di avviso. Ad esempio: "Indirizzo di rete: valore IPv4 non valido".

    2. Seleziona un'opzione dal menu Livello di gravità della norma. Gli incidenti e le notifiche mostrano il livello di gravità.

    3. (Facoltativo) Aggiungi la documentazione per il criterio di avviso. Puoi includere informazioni che potrebbero aiutare il destinatario di una notifica a diagnosticare il problema. La seguente stringa riassume il motivo della notifica:

      Log-based alerting policy in project ${project} detected an invalid IPv4 value.
      

      Per informazioni su come formattare e personalizzare i contenuti di questo campo, consulta Utilizzo di Markdown e variabili nei modelli di documentazione.

  5. Per passare al passaggio successivo, fai clic su Avanti.

  6. Nel riquadro Scegli i log da includere nell'avviso, procedi nel seguente modo:

    1. Inserisci una query e/o modifica quella esistente per filtrare i log disponibili. Le voci di log corrispondenti alla query attivano il criterio di avviso.

    2. Per verificare la query, fai clic su Anteprima dei log.

    3. (Facoltativo) Estrai le etichette dei log. Puoi creare etichette dai campi dei log da visualizzare in eventuali incidenti e notifiche creati dall'avviso.

      Nel campo della documentazione del criterio di avviso, fai riferimento alle etichette estratte utilizzando una variabile del modulo ${log.extracted_label.KEY}, dove KEY è il nome che hai dato all'etichetta estratta.

  7. Fai clic su Avanti.

  8. Seleziona il tempo minimo tra le notifiche. Questo valore ti consente di controllare il numero di notifiche che ricevi da Monitoring se questa condizione viene soddisfatta più volte. Per questo esempio, seleziona 5 min dalle opzioni.

  9. (Facoltativo) Seleziona la durata della chiusura automatica dell'incidente. Per impostazione predefinita, la durata di chiusura automatica dell'incidente è impostata su 7 giorni.

  10. Fai clic su Avanti.

  11. Seleziona uno o più canali di notifica per il criterio di avviso. In questo esempio, seleziona un canale di notifica via email.

    Se hai già configurato un canale di notifica via email, puoi selezionarlo dall'elenco. In caso contrario, fai clic su Gestisci canali di notifica e aggiungi un canale email. Per informazioni sulla creazione di canali di notifica, consulta Creare e gestire i canali di notifica.

  12. Fai clic su Salva.

Il criterio di avviso basato sui log è ora pronto per essere testato.

Testa la criterio di avviso basata su log di esempio

Per testare il criterio di avviso che hai creato, puoi scrivere manualmente una voce di log che corrisponda alla query. Per scrivere la voce di log:

  1. Configura la seguente voce di log modificando la variabile PROJECT_ID con il tuo ID progetto:

    {
      "entries": [
      {
        "logName": "projects/PROJECT_ID/logs/syslog",
        "jsonPayload": {
          "type": "Configuration change",
          "action": "Set network address",
          "result": "999.027.405.1",
        },
        "severity": "NOTICE",
        "resource": {
          "type": "generic_task",
          "labels" : {
            "project_id": "PROJECT_ID",
            "location": "us-east1",
            "namespace": "fake-task-2",
            "job": "write-log-entry",
            "task_id": "11",
          },
        },
      },
      ],
    }
  2. Vai alla pagina di riferimento logEntries.write o fai clic sul seguente pulsante:

    Vai a logEntries.write

  3. Copia la voce di log che hai configurato in precedenza.

  4. Nel riquadro Prova questa API:

    1. Sostituisci i contenuti del campo Request body (Corpo della richiesta) in Explorer API con la voce di log che hai copiato nel passaggio precedente.

    2. Fai clic su Esegui. Se richiesto, segui il flusso di autenticazione.

      Se la chiamata logEntries.write ha esito positivo, ricevi un codice di risposta HTTP 200 e un corpo della risposta vuoto, {}. Per ulteriori informazioni su Explorer API, vedi Utilizzo di Explorer API nella documentazione di Monitoring. Explorer API funziona allo stesso modo con l'API Logging.

La voce di log corrisponde al filtro specificato per la criterio di avviso nei seguenti modi:

  • Il valore logName specifica il log syslog che si trova nel tuo progettoGoogle Cloud .
  • Il valore severity per questa voce di log è NOTICE.
  • Il valore jsonPayload.result non è un indirizzo IPv4 valido.

Dopo aver scritto la voce di log, si verifica la seguente sequenza:

  • La nuova voce di log viene visualizzata in Esplora log. La voce di log soddisfa la condizione del criterio di avviso.
  • Viene aperto un incidente in Cloud Monitoring.
  • Ricevi una notifica relativa all'incidente. Se hai configurato un canale di notifica via email, la notifica ha l'aspetto dello screenshot seguente:

    Il criterio di avviso basato su log di esempio genera una notifica via email.

Puoi fare clic su Visualizza incidente nell'email per visualizzare l'incidente in Cloud Monitoring. Per ulteriori informazioni sugli incidenti, vedi Gestire gli incidenti relativi ai criteri di avviso basati su log.

Altri scenari: avvisi sugli audit log

L'esempio nella sezione Creazione di un criterio di avviso basato su log è artificiale; in genere non si crea un criterio di avviso e poi si scrivono manualmente le voci di log che soddisfano la condizione del criterio di avviso. Le voci di log vengono generalmente scritte da applicazioni o altri servizi. Tuttavia, l'origine delle voci di log non è importante. Per i criteri di avviso basati su log, ciò che conta è la query che utilizzi per selezionare le voci di log.

Le sezioni seguenti descrivono scenari realistici per le norme di avviso basate sui log in base al contenuto dei log di controllo. Ogni scenario illustra come creare una query che seleziona le voci di log di controllo appropriate. In caso contrario, la procedura per creare le policy di avviso basate su log è la stessa mostrata in Creare un avviso basato su log.

Criteri di avviso che monitorano l'accesso umano ai secret

Supponiamo che il tuo progetto memorizzi i secret in Secret Manager e che alcuni di questi secret siano destinati all'utilizzo esclusivo da parte dei service account. Tranne in circostanze insolite, gli utenti umani non accedono mai a questi secret.

Se hai attivato la registrazione degli audit per Secret Manager, ogni tentativo riuscito di accedere a un secret crea una voce di audit log. Ogni voce include il nome del secret e l'identità del chiamante.

Puoi creare un criterio di avviso basato su log che ti avvisa quando un utente umano accede a un secret.

Di seguito è riportato un estratto di una voce di log di controllo scritta da Secret Manager. L'estratto mostra i campi utili per creare la query per un avviso basato sui log:

{
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "serviceName": "secretmanager.googleapis.com",
    "methodName": "google.cloud.secretmanager.v1.SecretManagerService.AccessSecretVersion",
    "authenticationInfo": {
      "principalEmail": "my-svc-account@PROJECT_ID.iam.gserviceaccount.com",
      "serviceAccountDelegationInfo": [],
      "principalSubject": "serviceAccount:my-svc-account@PROJECT_ID.iam.gserviceaccount.com"
    },
    ...
  },
  ...
}

I seguenti sottocampi di protoPayload sono di particolare interesse:

  • @type: indica che questa voce di log è una voce di log di controllo.
  • serviceName: registra il servizio che ha scritto la voce di audit log. Utilizza questo campo per identificare le voci scritte da Secret Manager.
  • methodName: identifica il metodo per il quale è stata scritta questa voce di log di controllo. Utilizza questo campo per identificare l'azione che ha causato la creazione di questa voce. In questo esempio, si tratta del metodo AccessSecretVersion.
  • authenticationInfo.principalEmail: registra l'account che ha richiamato il metodo nel campo methodName. Il valore previsto per questo campo è un account di servizio, che termina con gserviceaccount.com.

Per trovare le voci di log relative all'accesso ai secret da parte di un utente umano, cerca le voci di audit log scritte da Secret Manager. Vuoi trovare le voci di log in cui il metodo AccessSecretVersion è stato richiamato da un principal che non termina con gserviceaccount.com. La seguente query isola queste voci di log:

protoPayload.@type = "type.googleapis.com/google.cloud.audit.AuditLog"
protoPayload.serviceName = "secretmanager.googleapis.com"
protoPayload.methodName =~ "AccessSecretVersion$"
protoPayload.authenticationInfo.principalEmail !~ "gserviceaccount.com$"

Per creare un criterio di avviso basato su log per l'accesso umano ai secret, utilizza questa query nel riquadro Scegli i log da includere nell'avviso.

Criteri di avviso che monitorano gli eventi di decriptazione

L'analisi nell'esempio precedente può essere adattata ad altri servizi. Ad esempio, se utilizzi Cloud Key Management Service per criptare e decriptare dati sensibili, puoi utilizzare i log di controllo generati da Cloud KMS per rilevare quando un utente umano decripta un valore.

Per trovare le voci di log relative alla decriptazione eseguita da un utente umano, cerca le voci di audit log scritte da Cloud KMS. Vuoi trovare le voci di log in cui il metodo Decrypt è stato richiamato da un principal che non termina con gserviceaccount.com, il che indica un account di servizio. La seguente query isola queste voci di log:

protoPayload.@type = "type.googleapis.com/google.cloud.audit.AuditLog"
protoPayload.serviceName = "cloudkms.googleapis.com"
protoPayload.methodName = "Decrypt"
protoPayload.authenticationInfo.principalEmail !~ "gserviceaccount.com$"

Per creare un criterio di avviso basato su log per la decriptazione eseguita da un utente umano, utilizza questa query nel riquadro Scegli i log da includere nell'avviso.

Gestire i criteri di avviso basati su log in Monitoring

Puoi visualizzare, modificare ed eliminare le policy di avviso basate sui log utilizzando la consoleGoogle Cloud per Monitoring o l'API Monitoring. Questo documento descrive come gestire le norme di avviso utilizzando la console Google Cloud . Per informazioni sull'utilizzo dell'API Monitoring per gestire i criteri di avviso, consulta Gestire i criteri di avviso tramite API.

Per visualizzare un elenco di tutti i criteri di avviso nel tuo progetto Google Cloud , esegui una delle seguenti operazioni:

  • Per navigare da Logging:

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

      Vai a Esplora log

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

    2. Nella barra degli strumenti Risultati delle query, espandi il menu Azioni e seleziona Gestisci avvisi log.

  • Per navigare da Monitoring:

    1. Nella Google Cloud console, 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. Per visualizzare tutti i criteri e attivare i filtri, nel riquadro Criteri, fai clic su Visualizza tutti i criteri.

Entrambe queste azioni ti reindirizzano alla pagina Policy di Monitoring, che elenca tutte le policy di avviso nel tuo progetto Google Cloud .

Per limitare i criteri di avviso elencati, aggiungi filtri. Ogni filtro è composto da un nome e un valore. Ad esempio, puoi impostare il valore in modo che corrisponda esattamente a un nome di norma o a una corrispondenza parziale. Le corrispondenze non sono sensibili alle maiuscole. Se specifichi più filtri, questi vengono uniti implicitamente da un AND logico, a meno che tu non inserisca un filtro OR. Lo screenshot seguente elenca i criteri di avviso abilitati e creati dopo il 1° gennaio 2021:

Elenco dei criteri di avviso attivati creati dopo il 1° gennaio 2021.

Dalla pagina Norme puoi modificare, eliminare, copiare, attivare o disattivare una criterio di avviso:

  • Per modificare o copiare una norma, fai clic su Altre opzioni e seleziona un'opzione. La modifica e la copia di una policy sono simili alla procedura descritta in Creare un criterio di avviso basato su log. Puoi modificare e, in alcuni casi, eliminare i valori nei campi. Al termine, fai clic su Salva.

    Puoi anche modificare un criterio di avviso basato su log facendo clic sul relativo nome nell'elenco dei criteri.

  • Per eliminare una norma, fai clic su Altre opzioni e seleziona Elimina. Nella finestra di dialogo di conferma, seleziona Elimina.

  • Per attivare o disattivare la criterio di avviso, fai clic sul pulsante di attivazione/disattivazione che si trova sotto l'intestazione Attivato.

Crea un criterio di avviso basato su log utilizzando l'API Monitoring

Puoi creare criteri di avviso basati su log utilizzando l'API Monitoring. Fornisci all'API Monitoring le stesse informazioni che fornisci quando utilizzi Esplora log nella console Google Cloud :

  • Dettagli del criterio di avviso, ad esempio un nome e un livello di gravità.
  • I log per i quali vuoi ricevere una notifica.
  • Il tempo tra le notifiche.
  • Il tempo per la chiusura automatica degli incidenti.
  • A chi inviare la notifica.

Per creare criteri di avviso utilizzando l'API Monitoring, devi creare un oggetto AlertPolicy e inviarlo al metodo alertPolicies.create.

Prima di poter utilizzare l'API Monitoring, devi abilitarla e disporre dell'autorizzazione per utilizzarla. Per ulteriori informazioni, consulta la seguente documentazione:

Struttura dei criteri di avviso

L'API Monitoring rappresenta un criterio di avviso utilizzando la struttura AlertPolicy. La struttura AlertPolicy ha diverse strutture incorporate, tra cui una descrizione della condizione del criterio di avviso. I criteri di avviso basati su log differiscono da quelli basati su metriche per i seguenti motivi:

  • Descrivi la condizione utilizzando il tipo di condizione LogMatch. I criteri di avviso basati su metriche utilizzano tipi di condizioni diversi.
  • Un criterio di avviso basato su log può avere una sola condizione.
  • Specifica il tempo che intercorre tra le notifiche e il periodo di chiusura automatica dell'incidente includendo una struttura AlertStrategy. I criteri di avviso basati su metriche non includono un intervallo di tempo tra le notifiche.

Questa sezione descrive come creare un criterio di avviso basato su log. Questi criteri differiscono da quelli di avviso basati su metriche per il tipo di condizione utilizzato. Per i criteri di avviso basati su log, il tipo di condizione è LogMatch. Quando utilizzi l'API Monitoring per gestire le policy di avviso, non ci sono differenze nel modo in cui elenchi, modifichi o elimini le policy basate su metriche e log. Gestire i criteri di avviso tramite l'API descrive come creare, elencare, modificare ed eliminare i criterio di avviso utilizzando l'API Monitoring.

Regole di notifica

Quando crei un criterio di avviso basato su log, Logging crea un oggetto interno chiamato regola di notifica. La registrazione utilizza la regola di notifica per trovare corrispondenze tra le voci di log in arrivo e il filtro del criterio di avviso, quindi per creare una notifica quando una voce corrisponde ai criteri del filtro. Non interagisci direttamente con la regola di notifica. Tuttavia, per creare un criterio di avviso basato su log, devi disporre dell'autorizzazione logging.notificationRules.create.

Progetta il criterio di avviso

La sezione intitolata Creare una criterio di avviso basata su log utilizzando Esplora log descrive un modo per creare una criterio di avviso basata su log. Questa sezione mostra come creare un criterio di avviso basato su log che ti avvisa quando una voce di log syslog ha un livello di gravità NOTICE e un indirizzo IPv4 non valido nel campo jsonPayload.result.

Per creare lo stesso criterio di avviso basato su log utilizzando l'API Monitoring, crea un oggetto AlertPolicy simile alla seguente struttura JSON:

{
  "displayName": "Network address: invalid IPv4 value (API)",
  "documentation": {
    "content": "Log-based alerting policy in project ${project} detected an invalid IPv4 value.",
    "mimeType": "text/markdown"
  },

  "conditions": [
    {
      "displayName": "Log match condition: invalid IP addr (API)",
      "conditionMatchedLog": {
        "filter": "log_id(\"syslog\") severity = \"NOTICE\" jsonPayload.result !~ \"^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\\.|$)){4}$\"",
      },
    }
  ],
  "combiner": "OR",

  "alertStrategy": {
    "notificationRateLimit": {
      "period": "300s"
    },
    "autoClose": "604800s",
  },

  "notificationChannels": [
    "projects/PROJECT_ID/notificationChannels/CHANNEL_ID"
  ]
}

Questo codice JSON specifica le stesse informazioni che specifichi quando crei una criterio di avviso basata sui log utilizzando Esplora log. Le sezioni seguenti mappano i contenuti di questa struttura AlertPolicy ai passaggi da seguire quando utilizzi Esplora log per creare un avviso basato sui log. Il valore del campo conditionMatchedLog è una struttura LogMatch.

Fornisci un nome e la documentazione

Un criterio di avviso ha un nome visualizzato e una documentazione associata che vengono forniti con le notifiche per aiutare i soccorritori. In Esplora log, questi campi sono chiamati Nome avviso e Documentazione. Rappresenti questi valori in una struttura AlertPolicy come segue:

{
  "displayName": "Network address: invalid IPv4 value (API)",
  "documentation": {
    "content": "Log-based alerting policy in project ${project} detected an invalid IPv4 value.",
    "mimeType": "text/markdown"
  },
  ...
}

In questo esempio, il valore di displayName include "(API)" in modo da poter distinguere tra i due criteri di esempio quando visualizzi l'elenco dei criteri nella console Google Cloud . La pagina Criteri di monitoraggio elenca i criteri in base al nome visualizzato e indica se il criterio si basa su metriche o log. Per saperne di più, consulta Gestire i criteri di avviso basati su log in Monitoring.

Il campo documentation include, nel campo secondario content, la descrizione che potresti fornire quando utilizzi Logs Explorer. Il secondo sottocampo, mimeType è obbligatorio quando specifichi un valore per il campo documentation. L'unico valore valido è "text/markdown".

Scegli i log per i quali vuoi ricevere una notifica

Un criterio di avviso basato su log ha una sola condizione. In Esplora log, specifica la condizione quando fornisci una query nel campo Definisci le voci di log per l'avviso. Rappresenti questi valori in una struttura AlertPolicy come segue:

{ ...
  "conditions": [
    {
      "displayName": "Log match condition: invalid IP addr (API)",
      "conditionMatchedLog": {
        "filter": "log_id(\"syslog\" severity = \"NOTICE\" jsonPayload.result !~ \"^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\\.|$)){4}$\"",
      },
    }
  ],
  "combiner": "OR",
  ...
}

Il campo conditions accetta un elenco di strutture Condition, anche se una criterio di avviso basata sui log deve avere una sola condizione. Ogni Condition ha un nome visualizzato e una descrizione della condizione.

  • Il valore del campo displayName è una breve descrizione della condizione. Quando utilizzi Esplora log per creare criteri di avviso basati su log, il nome visualizzato è sempre "Condizione di corrispondenza log". Quando utilizzi l'API Monitoring, puoi fornire un nome visualizzato più preciso. È obbligatorio indicare un valore.

  • Il valore del campo conditionMatchedLog è una struttura LogMatch e il valore del campo filter è la query specificata in Esplora log. Poiché questa query viene fornita come valore di un campo JSON, l'intera query viene visualizzata tra virgolette e tutte le virgolette nella query stessa devono essere precedute dal carattere \ (barra rovesciata).

  • La struttura LogMatch include anche un campo facoltativo labelExtractors. Puoi utilizzare gli estrattori di etichette per comporre etichette personalizzate dalle voci di log e poi fare riferimento a queste etichette nelle notifiche.

    Ad esempio, per estrarre il valore dell'etichetta labels."compute.googleapis.com/resource_id" dalla voce di log in un'etichetta denominata vm_identifier, la condizione precedente potrebbe avere il seguente aspetto:

    "conditions": [
      {
        "displayName": "Log match condition: invalid IP addr (API)",
        "conditionMatchedLog": {
          "filter": "log_id(\"syslog\" severity = \"NOTICE\" jsonPayload.result !~ \"^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\\.|$)){4}$\")",
          "labelExtractors": {
            "vm_identifier": "EXTRACT(labels.\"compute.googleapis.com/resource_id\")"
          }
        },
      }
    ],
    

    Utilizza la funzione EXTRACT per trovare la corrispondenza dell'intero valore oppure utilizza REGEXP_EXTRACT per trovare la corrispondenza delle sottostringhe in base alle espressioni regolari. Si tratta della stessa funzione utilizzata per l'estrazione delle etichette nelle metriche basate sui log. Per ulteriori informazioni, consulta Creare un'etichetta.

    Puoi utilizzare queste etichette estratte nella documentazione del criterio di avviso, in modo che vengano riportate nelle notifiche. Nel campo documentation del criterio di avviso, fai riferimento alle etichette estratte utilizzando una variabile del modulo ${log.extracted_label.KEY}, dove KEY è il nome che hai assegnato all'etichetta estratta.

    L'esempio seguente mostra come fare riferimento alla chiave per l'etichetta estratta vm_identifier, in modo che il valore dell'etichetta del log labels."compute.googleapis.com/resource_id" sia incluso nelle notifiche:

    "documentation": {
      "content": "Log-based alerting policy in project ${project} detected an
       invalid IPv4 value on VM with ID ${log.extracted_label.vm_identifier}.",
      "mimeType": "text/markdown"
    },
    

Il valore del campo combiner specifica come combinare i risultati di più condizioni nei criteri di avviso basati su metriche. Puoi utilizzare una sola condizione nei criteri di avviso basati sui log e devi specificare il campo combiner con il valore "OR". Non puoi creare criteri di avviso basati su log con più condizioni.

Imposta i valori di notifica e chiusura automatica

Un criterio di avviso basato su log specifica il tempo minimo tra le notifiche. In Esplora log, seleziona un valore dal menu Tempo tra le notifiche. Rappresenti questo valore in una struttura AlertPolicy specificando un valore, in secondi, per il campo period di una struttura NotificationRateLimit incorporata in una struttura AlertStrategy.

Allo stesso modo, il criterio di avviso include il periodo per la chiusura automatica degli incidenti. Il valore predefinito è 7 giorni. In Esplora log, puoi selezionare un valore diverso dal menu Durata della chiusura automatica dell'incidente. L'opzione corrisponde al campo autoclose nella struttura dell'API AlertStrategy. Quando utilizzi questo campo, specifica il valore in secondi. Il valore minimo è 1800 secondi o 30 minuti.

{ ...
  "alertStrategy": {
    "notificationRateLimit": {
      "period": "300s"
    },
    "autoClose": "604800s",
  },
  ...
}

Il valore del campo period in questo esempio, 300s, equivale a 5 minuti. Il valore di autoclose, 604800s, equivale a 7 giorni.

Specifica a chi inviare la notifica

Un criterio di avviso può includere un elenco di canali di notifica. In Esplora log, seleziona i canali da un menu. Rappresenti questi valori in una struttura AlertPolicy fornendo un elenco di uno o più nomi di risorse per gli oggetti NotificationChannel configurati:

{ ...
  "notificationChannels": [
    "projects/PROJECT_ID/notificationChannels/CHANNEL_ID"
  ]
}

Quando crei un canale di notifica, gli viene assegnato un nome risorsa. Per informazioni sul recupero dell'elenco dei canali di notifica disponibili, che include i relativi nomi delle risorse, consulta la sezione Recupero dei canali nella documentazione di Monitoring. Non puoi ottenere gli ID canale utilizzando la console Google Cloud .

Invia il criterio di avviso all'API Monitoring

Per creare un criterio di avviso utilizzando l'API Monitoring, devi creare un oggetto AlertPolicy e inviarlo al metodo alertPolicies.create. Puoi richiamare alertPolicies.create utilizzando Google Cloud CLI chiamando direttamente l'API Monitoring.

Puoi anche creare criteri di avviso basati sui log utilizzando le librerie client per C#, Go, Java, Python e Ruby. Potresti anche essere in grado di utilizzare altre librerie client; la libreria per la tua lingua deve includere il tipo di condizione LogMatch.

Per creare un criterio di avviso utilizzando gcloud CLI, segui questi passaggi:

  1. Inserisci la rappresentazione JSON della criterio di avviso in un file di testo, ad esempio in un file chiamato alert-invalid-ip.json.

  2. Passa questo file JSON a gcloud CLI utilizzando il seguente comando:

    gcloud alpha monitoring policies create --policy-from-file="alert-invalid-ip.json"
    
  3. In caso di esito positivo, questo comando restituisce il nome della risorsa del nuovo criterio, ad esempio:

    Created alerting policy [projects/PROJECT_ID/alertPolicies/POLICY_ID].
    

Per creare un criterio di avviso chiamando direttamente alertPolicies.create, puoi utilizzare lo strumento Explorer API nel seguente modo:

  1. Vai alla pagina di riferimento alertPolicies.create.

  2. Nel riquadro Prova questa API:

    1. Nel campo name, inserisci il seguente valore:

      projects/PROJECT_ID
      
    2. Copia la rappresentazione JSON del criterio di avviso e sostituisci i contenuti del campo Corpo della richiesta in Explorer API con il criterio di avviso copiato.

    3. Fai clic su Esegui.

      Se la chiamata alertPolicies.create ha esito positivo, ricevi un codice di risposta HTTP 200 e un corpo della risposta vuoto, {}. Per ulteriori informazioni su Explorer API, consulta Utilizzo di Explorer API nella documentazione di Monitoring.

Per saperne di più sulla creazione di criteri di avviso utilizzando l'API Monitoring, consulta la pagina Creazione di criteri. Gli esempi riportati in questo documento utilizzano i tipi di condizioni per i criteri di avviso basati su metriche, ma i principi sono gli stessi.

Esegui il test del criterio di avviso

Per testare la nuova criterio di avviso, puoi utilizzare la stessa procedura descritta in Testare l'avviso basato sui log di esempio.

Esempio: crea un criterio di avviso quando una voce di log contiene una stringa di testo

Questo esempio utilizza la console Google Cloud per creare un criterio di avviso, Esplora log per visualizzare le voci di log e Google Cloud CLI per scrivere una voce di log:

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

    Vai a Esplora log

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

  2. Nel riquadro Query, inserisci la seguente query dopo aver aggiornato il valore di PROJECT_ID:

    logName="projects/PROJECT_ID/logs/test-log"
    textPayload:"Oops"
    

    La query cerca nel log con il nome test-log le voci di log che hanno un campo textPayload che contiene la stringa "Oops".

  3. Nella barra degli strumenti Risultati delle query, espandi il menu Azioni e seleziona Crea avviso log. Poi, completa la finestra di dialogo.

    Devi inserire un nome per la policy, ad esempio Alert on Oops. La query che hai inserito nel passaggio precedente viene inclusa automaticamente nel criterio di avviso.

  4. Per testare il criterio di avviso, apri Cloud Shell ed esegui questo comando:

    gcloud logging write test-log --severity=ERROR --payload-type=text 'This log entry contains Oops'
    

    Il comando precedente scrive una voce nel log denominato test-log. La voce ha un livello di gravità ERROR e include un campo textPayload.

  5. In Esplora log, fai clic su Esegui query.

    Dopo l'aggiornamento del display, puoi visualizzare i dettagli della voce di log che hai scritto nel passaggio precedente.

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

    Vai ad Avvisi

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

    Il riquadro Incidenti mostra l'incidente e i dettagli sullacriterio di avvisoo.

    Se non vedi un incidente quando apri la pagina Avvisi, attendi qualche minuto e poi aggiorna la pagina.

Non vedrai un altro incidente o riceverai un'altra notifica se ripeti immediatamente il comando Google Cloud CLI. Le impostazioni dei criterio di avviso specificano il periodo di tempo minimo tra gli incidenti. Puoi visualizzare e modificare queste impostazioni modificando il criterio.