Questo documento spiega come creare un criterio di avviso per monitorare i risultati
di una query SQL. Il criterio di avviso ti avvisa quando il risultato della query
soddisfi le condizioni da te specificate. Ad esempio, puoi configurare un criterio di avviso in modo da ricevere una notifica quando almeno il 25% delle voci di log in un determinato periodo ha una gravità pari a ERROR
.
Esistono tre diversi approcci per ricevere notifiche quando contenuti o pattern appaiono nei dati del log:
Per eseguire la scansione delle singole voci di log per trovare una frase specifica, crea un criterio di avviso basato su log. Utilizza questi criteri di avviso quando vuoi ricevere notifiche su eventi relativi alla sicurezza.
Per monitorare gli eventi nei dati voce di log, puoi creare un metrica basata su log, quindi crea un criterio di avviso per monitorare in un file di dati. Questi tipi di criteri di avviso sono efficaci se vuoi monitorare le tendenze dei dati delle voci di log nel tempo. Tuttavia, non sono altrettanto efficaci se prevedi solo pochi eventi.
Per eseguire un'analisi aggregata dei dati delle voci di log e monitorare i risultati, scrivi una query SQL in Analisi dei log per analizzare i dati delle voci di log. Quindi, crea un criterio di avviso per monitorare la tabella dei risultati della query. Questo tipo di criterio di avviso è chiamato criterio di avviso basato su SQL.
I criteri di avviso basati su SQL sono più efficaci per valutare valori esatti su più voci di log. Se vuoi valutare singole di log e non devono monitorare valori esatti, quindi criteri di avviso basati su log che utilizzano Linguaggio di query di Logging.
La parte rimanente di questo documento descrive come utilizzare i criteri di avviso basati su SQL.
Per informazioni generali su Analisi dei log, consulta Panoramica delle query e delle visualizzazioni dei log.
Come funzionano i criteri di avviso
Un criterio di avviso descrive le circostanze in cui vuoi e come vuoi ricevere la notifica di un incidente. Un criterio di avviso può monitorare i risultati di una query SQL. Quando il risultato della query soddisfa la condizione del criterio di avviso, Cloud Monitoring crea un incidente e poi invia notifiche relative all'incidente tramite i canali di notifica.
Un incidente è un record dei dati che hanno causato il verificarsi della condizione, insieme ad altre informazioni pertinenti. Questo informazioni possono aiutarti a risolvere i problemi che hanno causato l'incidente. Puoi visualizzare l'incidente utilizzando la console Google Cloud. Per ulteriori informazioni, vedi Incidenti per i criteri di avviso basati su SQL.
Componenti dei criteri di avviso
Un criterio di avviso basato su SQL contiene una condizione e una pianificazione:
La condizione contiene la query, ovvero una query SQL che esegue query su una vista log. La condizione definisce anche le circostanze in cui la query fa sì che Monitoring crei un incidente.
La pianificazione definisce la frequenza con cui il criterio di avviso esegue la query. La pianificazione definisce anche la dimensione della finestra temporale, che è un filtro che seleziona solo le voci di log ricevute dopo la precedente valutazione della query. Ad esempio, se imposti la pianificazione a 60 minuti, quindi la query viene eseguita ogni 60 minuti, utilizzando una finestra temporale che seleziona i 60 minuti di voci di log.
Tipi di valutazione per i criteri di avviso SQL
Le condizioni che monitorano un risultato SQL supportano due tipi di valutazione:
Soglia di conteggio righe: la condizione è soddisfatta quando il numero di righe nella il risultato della query è maggiore, uguale o inferiore a valore di soglia.
Ad esempio, supponiamo che tu voglia ricevere una notifica quando vengono le voci di log nella finestra temporale hanno una gravità maggiore di 200. Creando una query che registri le voci di log la cui gravità è superiore a 200. Configura quindi una condizione, seleziona Soglia di conteggio righe e imposta la soglia su 50.
Booleano: la condizione è soddisfatta quando una specifica colonna booleana nella query la tabella dei risultati contiene qualsiasi riga con il valore
true
.Ad esempio, supponiamo che tu voglia ricevere una notifica quando oltre il 25% Voci di log nella finestra temporale hanno una gravità pari a
ERROR
. Crei una query che calcola la percentuale di voci di log il cui livello di gravità èERROR
. I risultati della query scrivonotrue
alla colonnanotify
quando tale percentuale supera il 25%. Poi, crei una condizione, imposti il tipo su Booleano e configuri per monitorare la colonnanotify
.
I criteri di avviso che monitorano il risultato di una query SQL devono avere una sola condizione.
Criteri di avviso e BigQuery
Quando un criterio di avviso esegue una query SQL, questa viene eseguita utilizzando gli slot BigQuery riservati nel progetto Google Cloud in cui è definito il criterio di avviso. Per ulteriori informazioni, vedi Utilizza le prenotazioni di slot.
Affinché un criterio di avviso utilizzi gli slot BigQuery riservati per eseguire query su una visualizzazione di log, questa visualizzazione di log deve essere configurata per avere un set di dati collegato. Collegato di dati consentono di eseguire funzioni BigQuery che viene restituito dalla query SQL. Per ulteriori informazioni, vedi Crea un set di dati BigQuery collegato.
Prima di iniziare
-
Per ottenere le autorizzazioni necessarie per utilizzare Analisi dei log, chiedi all'amministratore di concederti i seguenti ruoli IAM sui bucket di log o sulle visualizzazioni dei log:
-
Per eseguire una query sui bucket di log
_Required
e_Default
: Visualizzatore log (roles/logging.viewer
). -
Per eseguire una query su tutte le visualizzazioni dei log di un progetto:
Funzione di accesso alla visualizzazione dei log (
roles/logging.viewAccessor
). -
Per eseguire query sui log in una vista di log specifica:
Crea un criterio IAM per la vista di log o limita il ruolo Accesso alla vista di log (
roles/logging.viewAccessor
) a una determinata vista di log. Per ulteriori informazioni, vedi Controllare l'accesso a una visualizzazione dei log.
-
Per eseguire una query sui bucket di log
- Per le viste di log su cui vuoi eseguire query, vai alla pagina Archiviazione dei log e verifica che sia stato eseguito l'upgrade dei bucket di log che memorizzano queste viste di log per utilizzare Analisi dei log. Se necessario, esegui l'upgrade del bucket di log.
- Per consentire l'esecuzione di query sugli slot BigQuery riservati, svolgi i seguenti passaggi:
- Se il bucket di log su cui vuoi eseguire query non ha un set di dati collegato, creane uno.
- Configurare gli slot BigQuery prenotati e assegnale al tuo progetto Google Cloud.
-
Per ottenere le autorizzazioni necessarie per creare e gestire i criteri di avviso basati su SQL, chiedi all'amministratore di concederti i seguenti ruoli IAM:
-
Editor di Monitoring (
roles/monitoring.editor
) del tuo progetto -
Logging di SqlAlertWriter (
roles/logging.sqlAlertWriter
) nel progetto -
Utente job BigQuery (
roles/bigquery.jobUser
) del tuo progetto -
Visualizzatore dati BigQuery (
roles/bigquery.dataViewer
) nel set di dati collegato
Per informazioni su come concedere l'accesso a un set di dati, vedi Concedere l'accesso a un set di dati.
-
Editor di Monitoring (
Assicurati che l'account di servizio di monitoraggio esista e che abbia i seguenti ruoli:
- Ruolo Agente di servizio Monitoring (
monitoring.notificationServiceAgent
) nel progetto. - Ruolo Visualizzatore dati BigQuery (
roles/bigquery.dataViewer
) sul tuo set di dati collegato.
Se l'account di servizio di monitoraggio non esiste, consulta Risoluzione dei problemi: nessun account di servizio di monitoraggio.
- Ruolo Agente di servizio Monitoring (
- Configura i canali di notifica che vuoi utilizzare per ricevere eventuali notifiche relative agli incidenti. Per motivi di ridondanza, ti consigliamo di creare più tipi di canali di notifica. Per ulteriori informazioni, vedi Creare e gestire i canali di notifica.
Nella console Google Cloud, vai alla pagina Archiviazione dei log:
Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Logging.
Creare un criterio di avviso basato su SQL
Per creare un criterio di avviso basato su SQL, segui questi passaggi:
Console Google Cloud
-
Nella console Google Cloud, vai alla pagina Log Analytics:
Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Logging.
Nella pagina Log Analytics, nell'editor delle query, inserisci una query SQL per una vista dei log.
Per ulteriori informazioni su come scrivere query SQL per le visualizzazioni dei log, consulta Eseguire query su una visualizzazione dei log.
Nella barra degli strumenti, fai clic su Esegui in BigQuery.
Log Analytics esegue la query sul motore BigQuery e visualizza i risultati nella tabella Risultati.
Se non è visualizzata l'opzione Esegui su BigQuery, fai clic su settings Seleziona motore di query e fai clic su BigQuery. Il pulsante Esegui query diventa Esegui su BigQuery.
Nella tabella Risultati della pagina Log Analytics, fai clic su add_alert Crea avviso.
Nella pagina Log Analytics viene visualizzata la finestra Crea criterio di avviso SQL, che mostra la query nella sezione Query SQL.
Nella sezione Condizione di avviso, configura la condizione e la pianificazione del criterio di avviso.
Configura i dettagli dell'avviso del criterio di avviso.
(Facoltativo) Aggiungi le etichette dei criteri di avviso e la documentazione.
Aggiungi i canali di notifica e poi fai clic su Avanti.
Rivedi il criterio di avviso e poi creane uno facendo clic su Salva.
API Cloud Monitoring
Utilizza il metodo alertPolicies.create
per creare programmatically i criteri di avviso. La Condition
il tipo di criterio di avviso deve essere
conditionSql
, che è un'istanza di
SqlCondition
.
Questo tipo di condizione consente di definire le condizioni del criterio di avviso con SQL.
Per definire la pianificazione, imposta un valore periodicity
per uno dei campi minutes
, hours
o days
. Ad esempio, se vuoi che la query venga eseguita ogni 12 ore, imposta
la periodicità del campo hours
su 12.
Per definire la condizione, utilizza i seguenti campi:
boolean_test
: configura il criterio di avviso in modo che la condizione sia soddisfatta quando una riga di una colonna booleana nella tabella dei risultati della query contiene un valore true valore.row_count_test
: configura il criterio di avviso in modo che la relativa condizione sia soddisfatta quando il numero di righe nella tabella dei risultati della query raggiunge una determinata soglia.
Per un elenco completo dei campi e delle definizioni, consulta
SqlCondition
nella documentazione dell'API Cloud Monitoring.
Per saperne di più sull'API Monitoring per i criteri di avviso, consulta la pagina Gestire i criteri di avviso tramite API.
Limitazioni
Quando un criterio di avviso esegue una query SQL pianificata, introduce un ritardo di 15 minuti per consentire la propagazione delle voci di log al bucket dei log. Se le voci di log impiegano più di 15 minuti per essere ricevute, il criterio di avviso non li valuta.
L'introduzione di un ritardo di 15 minuti influisce sul tempo che intercorre tra la generazione di una voce del log e il rilevamento da parte del monitoraggio del verificarsi di una condizione. Ad esempio, supponiamo che tu abbia una query SQL pianificata ogni 30 minuti. Quando il criterio di avviso valuta periodicamente la condizione, esegue query sulle voci di log con timestamp compresi tra 15 e 45 minuti fa.
Per i limiti associati ai criteri di avviso, consulta Limiti di Monitoring.
Prezzi
Per informazioni sui prezzi, consulta i seguenti documenti:
- Prezzi di BigQuery
- Cloud Logging nella documentazione relativa ai prezzi di Google Cloud Observability
- Cloud Monitoring nella documentazione relativa ai prezzi di Google Cloud Observability
Passaggi successivi
Per informazioni sulla creazione di grafici da Analisi dei log dati, consulta Risultati delle query su un grafico con Analisi dei log.