Configura criteri di avviso basati su log

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

  • Creare e testare un criterio di avviso basato su log.
  • Modifica un criterio di avviso basato su log.
  • Elimina un criterio di avviso basato su log.

Prima di iniziare

Rivedi Confronto di avvisi per determinare se si basa su log i criteri di avviso sono una buona soluzione per i dati nei log. Ad esempio:

  • I criteri di avviso basati su log non funzionano sui log esclusi.

  • Non puoi utilizzare i criteri di avviso basati su log per ricavare i conteggi dai log. Per ricavare i conteggi, devi usare invece metriche basate su log.

Per creare e gestire i criteri di avviso basati su log, il tuo ruolo Identity and Access Management deve includere le autorizzazioni descritte in Autorizzazioni per i criteri di avviso basati su log.

Crea un criterio di avviso basato su log utilizzando Esplora log

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

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

  • Fornisci un nome e una descrizione per il criterio di avviso.
  • 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, supponiamo di avere un'applicazione che scrive un oggetto syslog voce di log con gravità NOTICE quando l'applicazione modifica un indirizzo di rete. Le voci di log per le modifiche agli indirizzi di rete includono un payload JSON che ad esempio:

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

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

Per creare questo criterio di avviso, segui questi passaggi:

  1. Nella console Google Cloud, 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 corrispondente al messaggio desiderato. da utilizzare nel criterio di avviso basato su log.

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

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

    Utilizza Esegui query nel riquadro Risultati query per convalidare la query.

  3. Nell'intestazione del riquadro Risultati delle query, fai clic su  Crea avviso. Quando la finestra è restringere, l'opzione Crea avviso potrebbe essere visualizzata nella finestra Azioni .

  4. Nel riquadro Dettagli avviso, assegna un nome al criterio di avviso e descrizione:

    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à dei criteri. Incidenti e le notifiche mostrano il livello di gravità.

    3. Inserisci una descrizione per il criterio di avviso. Puoi anche includere informazioni che potrebbero aiutare il destinatario della 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 delle variabili nella documentazione modelli.

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

  6. Nel riquadro Scegli i log da includere nell'avviso, controlla la query e i risultati facendo clic su Anteprima log.

    Ti consigliamo di creare la query nel riquadro Query di Esplora log. La query creata nel riquadro Query viene visualizzata anche su questo questo riquadro, ad esempio:

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

    Se necessario, puoi modificare la query in questo riquadro. Se modifichi Query, quindi controlla i risultati facendo clic su Anteprima log.

  7. Fai clic su Avanti.

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

  9. (Facoltativo) Seleziona la durata della chiusura automatica dell'incidente. Per impostazione predefinita, l'incidente la durata della chiusura automatica è 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 notifiche canali, consulta Creare e gestire i canali di notifica.

  12. Fai clic su Salva.

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

Testa l'esempio del criterio di avviso basato su log

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

  1. Configura la seguente voce di log modificando la variabile PROJECT_ID all'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 su il seguente pulsante:

    Vai a logEntries.write

  3. Copia la voce di log configurata in precedenza.

  4. Nel riquadro Prova questa API, segui questi passaggi:

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

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

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

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

  • Il valore logName specifica il log syslog presente nel tuo progetto Google 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.
  • Riceverai una notifica relativa all'incidente. Se hai configurato un'email canale di notifica, la notifica ha il seguente aspetto il seguente screenshot:

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

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

Altri scenari: avvisi sugli audit log

L'esempio nella sezione intitolata La creazione di un criterio di avviso basato su log artificiale; in genere non crei un criterio di avviso e poi manualmente scrivi voci di log che soddisfano la condizione del criterio di avviso. In genere, le voci di log sono scritte da applicazioni o altri servizi. ma l'origine delle voci di log non importa: per i criteri di avviso basati su log, ciò che conta è la query che utilizzerai per selezionare le voci di log.

Le seguenti sezioni descrivono scenari realistici per gli avvisi basati su log i criteri basati sui contenuti degli audit log. Ogni scenario illustra come crea una query che seleziona le voci di audit log appropriate. Altrimenti, la procedura per creare criteri di avviso basati su log equivale a quello illustrato in Creazione di un avviso basato su log.

Criteri di avviso che monitorano l'accesso ai secret da parte di persone fisiche

Supponiamo che il tuo progetto archivi i secret Secret Manager e alcuni di questi secret sono destinate esclusivamente all'uso da parte di account di servizio. Tranne in circostanze eccezionali, gli utenti umani non accedono mai a questi secret.

Se hai abilitato il log di controllo per Secret Manager, un 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 per ricevere una notifica quando un utente accede a un secret.

Di seguito è riportato un estratto di una voce di audit log scritta da tramite Secret Manager. L'estratto mostra i campi utili per creando la query per un avviso basato su 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 campi secondari protoPayload sono di particolare interesse:

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

Per trovare le voci di log per l'accesso al secret da parte di un utente, guarda per le voci di audit log scritte da Secret Manager. Vuoi trova le voci di log in cui il metodo AccessSecretVersion è stato richiamato un'entità 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 questo 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 sensibili, puoi utilizzare gli audit log generati Cloud KMS per rilevare un utente decripta un valore.

Per trovare le voci di log per la decrittografia eseguita da un utente, guarda per le voci di audit log scritte da Cloud KMS. Devi trovare Voci di log in cui il metodo Decrypt è stato richiamato un'entità che non termina con gserviceaccount.com, 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 decrittografia eseguita da un utente, utilizza questa query nel riquadro Scegli i log da includere nell'avviso.

Gestisci i criteri di avviso basati su log in Monitoring

Puoi visualizzare, modificare ed eliminare i criteri di avviso basati su log utilizzando il Console Google Cloud per Monitoring o utilizzando l'API Monitoring. Questo documento descrive come gestire i criteri di avviso usando la console Google Cloud. Per informazioni sull'utilizzo dell'API Monitoring per gestire i criteri di avviso, vedi Gestisci i criteri di avviso in base all'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 console Google Cloud, 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. Nell'intestazione del riquadro Risultati delle query, Azioni e seleziona Gestisci avvisi.

  • Per navigare da Monitoring:

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

    2. Per visualizzare tutti i criteri e attivare i filtri, nel riquadro Criteri: fai clic su Visualizza tutte le norme.

Entrambe queste azioni ti portano alle norme di Monitoring. in cui sono elencati tutti i criteri di avviso nel tuo progetto Google Cloud.

Per limitare i criteri di avviso elencati, aggiungi filtri. Ogni filtro è composto da un nome e da un valore. Ad esempio: puoi impostare il valore su una corrispondenza esatta per il nome di un criterio, o una corrispondenza parziale. Le corrispondenze non sono sensibili alle maiuscole. Se specifichi più filtri, questi vengono uniti in modo implicito. da un AND logico, a meno che non inserisci un filtro OR. Il seguente screenshot elenca i criteri di avviso abilitati e che sono state create dopo il 1° gennaio 2021:

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

Nella pagina Criteri 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 un criterio è simile alla procedura descritta in Crea 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 suo 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 abilitare o disabilitare il criterio di avviso, fai clic sul pulsante di attivazione/disattivazione 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 il metodo l'API Monitoring. Fornisci all'API Monitoring le stesse informazioni fornisci quando utilizzi Esplora log nella console Google Cloud:

  • Un nome e una descrizione per il criterio di avviso.
  • I log per i quali vuoi ricevere una notifica.
  • L'intervallo di tempo tra le notifiche.
  • Il tempo necessario per la chiusura automatica degli incidenti.
  • A chi inviare la notifica.

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

Prima di poter utilizzare l'API Monitoring, devi abilitare l'API e disporre dell'autorizzazione per utilizzarlo. Per ulteriori informazioni, consulta le documentazione:

Struttura dei criteri di avviso

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

  • Per descrivere la condizione, utilizza LogMatch tipo di condizione. I criteri di avviso basati sulle 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 la chiusura automatica dell'incidente includendo una struttura AlertStrategy. I criteri di avviso basati sulle metriche non includono un intervallo di tempo tra le notifiche.

Questa sezione descrive come creare un criterio di avviso basato su log. Questi i criteri differiscono da quelli basati su metriche per il tipo di condizione che usi. Per i criteri di avviso basati su log, il tipo di condizione è LogMatch. Quando utilizzi l'API Monitoring per gestire i criteri di avviso, Nessuna differenza nel modo in cui elenchi, modifichi o elimini i criteri basati su log e metriche. Gestisci criteri di avviso per API descrive come creare, elencare, modificare ed eliminare il criterio di avviso tramite l'API Monitoring.

Progetta il criterio di avviso

La sezione intitolata Crea un criterio di avviso basato su log utilizzando Esplora log descrive un modo per creare un criterio di avviso basato 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 gravità a livello di NOTICE e un indirizzo IPv4 non valido in 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 specificate da te quando si crea un criterio di avviso basato su log utilizzando Esplora log. Le seguenti mappano i contenuti di questa struttura di AlertPolicy ai passaggi che seguire quando si utilizza Esplora log per creare un avviso basato su log. Il valore del campo conditionMatchedLog è una struttura LogMatch.

Specifica un nome e una descrizione

Un criterio di avviso ha un nome visualizzato e la documentazione associata che fornite di notifiche per assistere chi risponde. In Esplora log, questi campi sono denominati Nome avviso e Descrizione avviso. Tu 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 Nella pagina Criteri di Monitoring vengono elencati i criteri per nome visualizzato e indica se il criterio è basato su metriche o log. Per ulteriori informazioni, vedi Gestisci i criteri di avviso basati su log in Monitoring.

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

Scegli i log per i quali vuoi ricevere una notifica

Un criterio di avviso basato su log ha una singola condizione. In Esplora log, specifichi la condizione quando fornisci una query nel menu a discesa Definisci le voci di log per avviso on. Rappresenta questi valori in una struttura AlertPolicy come che 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 richiede un elenco di Condition strutturali, sebbene un criterio di avviso basato su log debba avere . Ogni Condition ha un nome visualizzato e una descrizione la 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 il API Monitoring, puoi fornire un nome visualizzato più preciso. È obbligatorio indicare un valore.

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

  • La struttura LogMatch include anche un elemento facoltativo labelExtractors. Puoi puoi utilizzare gli estrattori di etichette per scrivere etichette personalizzate per poi fare riferimento a queste etichette nelle notifiche.

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

    "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 una corrispondenza con l'intero valore oppure utilizza il metodo REGEXP_EXTRACT per trovare una corrispondenza tra le sottostringhe in base a espressioni regolari. Si tratta delle stesse funzioni utilizzate per l'estrazione di etichette nei metriche; consulta Creare un'etichetta per ulteriori informazioni.

    Puoi utilizzare queste etichette estratte nella documentazione del criterio di avviso, vengono segnalati nelle notifiche. Nel campo documentation di di criterio di avviso, fai riferimento alle etichette estratte utilizzando una variabile nel formato ${log.extracted_label.KEY}, dove KEY è il nome assegnato all'etichetta estratta.

    L'esempio seguente mostra come fare riferimento alla chiave per il valore ha estratto l'etichetta vm_identifier, in modo che il valore del log l'etichetta labels."compute.googleapis.com/resource_id" è inclusa in le 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 usarne solo uno nei criteri di avviso basati su log, e devi specificare il campo combiner con il valore "OR". Non puoi creare criteri di avviso basati su log con più condizioni.

Impostare i valori delle notifiche e di chiusura automatica

Un criterio di avviso basato su log specifica l'intervallo di tempo minimo tra notifiche. In Esplora log, seleziona un valore dal campo Ora tra le notifiche. Rappresenta questo valore in una struttura AlertPolicy specificando un valore, in secondi, per il campo period di un struttura di NotificationRateLimit incorporata in Struttura di AlertStrategy.

Analogamente, il criterio di avviso include il periodo la chiusura degli incidenti. Il valore predefinito è 7 giorni. In Esplora log, puoi selezionare un valore diverso dal Menu Durata chiusura automatica incidente. L'opzione corrisponde 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, è equivalente a 5 minuti. Il valore 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. Rappresenta questi valori in una struttura AlertPolicy fornendo un elenco di uno o più nomi di risorse per NotificationChannel oggetti:

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

Quando crei un canale di notifica, gli viene assegnato un nome risorsa. Per informazioni su come recuperare l'elenco dei canali di notifica disponibili, che include i nomi delle risorse, vedi Recupero dei canali in Monitoring documentazione. Non puoi ottenere gli ID canale utilizzando la proprietà nella console Google Cloud.

Invia il criterio di avviso all'API Monitoring

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

Puoi anche creare criteri di avviso basati su log utilizzando le librerie client C#, Go, Java, Python e Ruby. Potresti anche riuscire a utilizzare altri client biblioteche; la libreria per la tua lingua deve includere il LogMatch tipo di condizione.

Per creare un criterio di avviso utilizzando gcloud CLI, esegui la seguenti:

  1. Inserisci la rappresentazione JSON del criterio di avviso in un file di testo. ad esempio in un file denominato 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. Se l'esito è positivo, questo comando restituisce il nome risorsa del nuovo criterio, 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 come segue:

  1. Vai alla pagina di riferimento alertPolicies.create.

  2. Nel riquadro Prova questa API, segui questi passaggi:

    1. Nel campo name, inserisci il seguente valore:

      projects/PROJECT_ID
      
    2. Copia la rappresentazione JSON del criterio di avviso e sostituisci il valore del campo Request body (Corpo della richiesta) di Explorer API con il criterio di avviso copiato.

    3. Fai clic su Execute (Esegui).

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

Per ulteriori informazioni sulla creazione di criteri di avviso mediante API Monitoring, consulta la sezione Creazione dei criteri. Gli esempi in questo documento utilizzano tipi di condizioni per gli avvisi basati sulle metriche di Google, ma i principi sono gli stessi.

Esegui il test del criterio di avviso

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

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

In questo esempio viene utilizzata la console Google Cloud per creare un criterio di avviso, Esplora log per visualizzare le voci di log e Google Cloud CLI per scrivi una voce di log:

  1. Nella console Google Cloud, 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 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 avere un campo textPayload che contiene la stringa "Spiacenti".

  3. Fai clic su Crea avviso e completa la finestra di dialogo. Devi inserire un nome per il criterio, ad esempio Alert on Oops. La query inserita nel il passaggio precedente viene incluso automaticamente nel criterio di avviso.

  4. Per testare il criterio di avviso, apri Cloud Shell 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 denominata test-log. La ha un livello di gravità di ERROR e include un campo textPayload.

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

    Dopo aver aggiornato la visualizzazione, puoi esaminare i dettagli della voce di log. che hai scritto nel passaggio precedente.

  6. 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 Monitoraggio.

    Il riquadro Incidenti visualizza l'incidente e i dettagli sul criterio di avviso.

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

Non vedrai un altro incidente né riceverai un'altra notifica se ripeti immediatamente il comando Google Cloud CLI. Le impostazioni dei criterio di avviso specificare il periodo di tempo minimo tra un incidente e l'altro. Puoi visualizzarle e modificarle impostazioni modificando il criterio.