Questo documento spiega come creare una criterio di avviso per monitorare i risultati di una query eseguita in Observability Analytics. Queste query sono scritte in SQL e devono
eseguire query su una vista log. La criterio di avviso ti invia una notifica quando il risultato della query soddisfa le condizioni che hai specificato. Ad esempio, puoi configurare una criterio di avviso in modo da ricevere una notifica quando almeno il 25% delle voci di log in un determinato periodo ha una gravità di ERROR.
Le policy di avviso create dalla pagina Observability Analytics vengono eseguite su un motore BigQuery. Pertanto, i dati su cui viene eseguita la query devono essere accessibili tramite un set di dati BigQuery collegato. Per questo motivo, queste query SQL possono eseguire query solo sulle viste log. Non possono eseguire query sulle viste di analisi.
Per informazioni generali su Observability Analytics, consulta Eseguire query e analizzare i log con Observability Analytics.
Come funzionano le policy di avviso
Una criterio di avviso descrive le circostanze in cui vuoi ricevere un avviso e come vuoi ricevere una notifica relativa a un incidente. Esistono tre approcci diversi che puoi utilizzare per ricevere una notifica quando nei dati di log vengono visualizzati contenuti o pattern:
Per eseguire la scansione delle singole voci di log alla ricerca di una frase specifica, crea una policy di avviso basata su log. Utilizza queste policy di avviso quando vuoi ricevere una notifica su eventi come quelli relativi alla sicurezza.
Per monitorare gli eventi nei dati voce di log, puoi creare una metrica basata su log e poi creare una criterio di avviso per monitorare la metrica. Questi tipi di policy di avviso sono efficaci quando vuoi monitorare le tendenze nei dati voce di log nel tempo. Tuttavia, non sono altrettanto efficaci se prevedi solo pochi eventi.
Per monitorare l'analisi aggregata dei dati voce di log, combina Observability Analytics con le policy di avviso. In questo scenario, esegui l'upgrade di un bucket di log per utilizzare Observability Analytics e crei un set di dati BigQuery collegato per quel bucket di log. Poi, utilizzi Observability Analytics, che supporta le query SQL, per eseguire query su una vista log nel bucket di log. Infine, crei la criterio di avviso per monitorare i risultati della query SQL. Questo tipo di criterio di avviso è chiamato policy di avviso basata su SQL.
Le policy di avviso basate su SQL sono più efficaci per valutare i valori esatti in più voci di log. Se vuoi valutare le singole voci di log, crea una policy di avviso basata su log.
Il resto di questo documento descrive come utilizzare le policy di avviso basate su SQL.
Componenti delle policy di avviso
Una criterio di avviso basata su SQL contiene una condizione e una pianificazione:
La condizione contiene la query, ovvero una query SQL che esegue query sui dati. La condizione definisce anche le circostanze in cui il risultato della query fa sì che Monitoring crei un incidente.
La pianificazione definisce la frequenza con cui la criterio di avviso esegue la query. La pianificazione definisce anche le dimensioni della finestra temporale, ovvero un filtro che seleziona solo i dati ricevuti dall'ultima volta che la query è stata valutata. Ad esempio, se imposti la pianificazione su 60 minuti, la query viene eseguita ogni 60 minuti utilizzando una finestra temporale che seleziona i 60 minuti di dati più recenti.
Le policy di avviso contengono anche un elenco di canali di notifica. Quando la condizione della criterio di avviso viene soddisfatta, Cloud Monitoring crea un incidente e poi invia notifiche sull'incidente tramite questi canali. Un incidente è un record dei dati che hanno fatto sì che la condizione venisse soddisfatta, insieme ad altre informazioni pertinenti. Queste informazioni possono aiutarti a risolvere i problemi che hanno causato l'incidente. Puoi visualizzare l'incidente utilizzando la Google Cloud console.
Tipi di valutazione per le policy di avviso basate su SQL
Le condizioni che monitorano il risultato di una query SQL supportano due tipi di valutazione:
Soglia del conteggio delle righe: la condizione viene soddisfatta quando il numero di righe nel risultato della query è maggiore, uguale o inferiore a un valore di soglia.
Ad esempio, supponiamo che tu voglia ricevere una notifica quando nella finestra temporale sono presenti più di 50 voci di log con una gravità superiore a 200. Crea una query che segnala le voci di log la cui gravità è superiore a 200. Poi, configura una condizione, seleziona il Soglia del conteggio delle righe e imposta la soglia su 50.
Booleano: la condizione viene soddisfatta quando una colonna booleana specifica nella tabella dei risultati della query contiene una riga con un valore
true.Ad esempio, supponiamo che tu voglia ricevere una notifica quando nella finestra temporale sono presenti più del 25% di voci di log con una gravità di
ERROR. Crea una query che calcola la percentuale di voci di log il cui livello di gravità èERROR. I risultati della query scrivonotruenella colonnanotifyquando la percentuale supera il 25%. Poi, crea una condizione, imposta il tipo su Booleano e configura la condizione per monitorare la colonnanotify.
Le policy di avviso che monitorano il risultato di una query SQL devono avere una sola condizione.
Policy di avviso e BigQuery
Affinché una criterio di avviso possa eseguire query sui dati di log, devi configurare un set di dati BigQuery collegato. I set di dati collegati consentono a BigQuery di leggere i dati di log e di eseguire funzioni BigQuery sui dati restituiti dalla query SQL.
Quando una criterio di avviso esegue una query SQL, questa viene eseguita sul motore BigQuery nel Google Cloud progetto in cui è definita la criterio di avviso. Per impostazione predefinita, le query eseguite sul motore BigQuery utilizzano slot on demand. Gli slot on demand e gli slot riservati sono soggetti a prezzi di BigQuery.
Puoi anche scegliere di configurare le prenotazioni di slot BigQuery dedicati per il tuo progetto:
- Crea una prenotazione con slot dedicati o identifica una prenotazione esistente.
- Crea assegnazioni di prenotazioni per il tuo progetto.
Voci di log valutate
Affinché una voce di log venga valutata dalla query SQL di una criterio di avviso, devono essere soddisfatte entrambe le seguenti condizioni:
- Il timestamp di ricezione della voce di log, che registra quando la voce di log è stata ricevuta da Cloud Logging, deve rientrare nella finestra temporale della criterio di avviso.
- Il timestamp della voce di log, che registra quando la voce di log è stata generata, deve rientrare in un intervallo di 15 minuti dalla finestra temporale.
Ad esempio, la tua criterio di avviso basata su SQL ha una finestra temporale di 60 minuti. Observability Analytics esegue la query SQL della criterio di avviso alle 13:30. Per essere inclusa nella query, una voce di log deve soddisfare entrambi i seguenti criteri:
- Il timestamp di ricezione deve essere compreso tra le 12:30 e le 13:30.
- Il timestamp deve essere compreso tra le 12:15 e le 13:45.
Quando esegui una query dall'interfaccia di Observability Analytics, tutte le voci di log nell'intervallo di tempo selezionato vengono valutate in base al timestamp della voce di log.
Finestra temporale e tempo di propagazione degli incidenti
Quando una criterio di avviso è pianificata per valutare la sua condizione, Observability Analytics ritarda l'esecuzione della query SQL di cinque minuti per consentire a Cloud Logging di indicizzare i dati ricevuti durante la finestra temporale. Ad esempio, se la criterio di avviso utilizza una finestra temporale che termina alle 14:00, Observability Analytics non esegue la query SQL fino alle 14:05.
Se la condizione di avviso viene soddisfatta dopo l'esecuzione della query, la propagazione dell'incidente nel sistema può richiedere fino a due minuti aggiuntivi.
Errori delle query
Le query emesse dalle policy di avviso basate su SQL possono non riuscire per vari motivi, tra cui i seguenti:
Il service account Monitoring non esiste più o non dispone più delle autorizzazioni necessarie per leggere i dati di log su cui viene eseguita la query.
Il tempo di esecuzione della query supera i cinque minuti.
Si verifica un errore interno.
Una query non riuscita genera una voce di log contenente l'ID della policy di avviso e lo stato dell'errore. Puoi utilizzare una policy di avviso basata su log per creare un avviso quando viene registrato un errore.
Prima di iniziare
Questa sezione presuppone che tu abbia eseguito l'upgrade del bucket di log per utilizzare Observability Analytics e che tu possa eseguire query e visualizzare i dati di log utilizzando la pagina Observability Analytics. Presuppone anche che tu abbia già creato un set di dati BigQuery collegato per il bucket di log.
Prima di creare una criterio di avviso basata su SQL, completa i seguenti passaggi:
-
Per ottenere le autorizzazioni necessarie per creare e gestire le policy di avviso basate su SQL, chiedi all'amministratore di concederti i seguenti ruoli IAM:
-
Monitoring Editor (
roles/monitoring.editor) sul tuo progetto -
Logging SqlAlertWriter (
roles/logging.sqlAlertWriter) on your project
-
Monitoring Editor (
Verifica che il service account Monitoring esista e che abbia i seguenti ruoli:
- Monitoring Service Agent (
roles/monitoring.notificationServiceAgent) sul tuo progetto. - BigQuery Data Viewer (
roles/bigquery.dataViewer) sul set di dati collegato.
Se il service account Monitoring non esiste, consulta Risoluzione dei problemi: nessun service account Monitoring.
- Monitoring Service Agent (
- Configura i canali di notifica che vuoi utilizzare per ricevere le notifiche relative agli incidenti. Per motivi di ridondanza, ti consigliamo di creare più tipi di canali di notifica. Per saperne di più, consulta Crea e gestisci canali di notifica.
Creare una criterio di avviso basata su SQL
Per creare una criterio di avviso basata su SQL:
Google Cloud Console
-
Nella Google Cloud console, vai alla manage_search Analisi dei log page:
Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Logging.
Nella pagina Observability Analytics, nell'editor di query, inserisci una query SQL che esegue query sui dati di log.
Per saperne di più sulla scrittura di query SQL per le viste log, consulta Eseguire query su una vista log.
Nella barra degli strumenti, fai clic su Esegui su BigQuery.
Observability Analytics esegue la query sul motore BigQuery e visualizza i risultati nella tabella Risultati.
Se non viene visualizzato Esegui su BigQuery, fai clic su settings Seleziona motore di query e poi su BigQuery. Il pulsante Esegui query diventa Esegui su BigQuery.
Nella tabella Risultati della pagina Observability Analytics, fai clic su add_alert Crea avviso.
La pagina Observability Analytics mostra la finestra Crea policy di avviso SQL, che mostra la query nella sezione Query SQL.
Nella sezione Condizione di avviso , configura la condizione e la pianificazione della criterio di avviso.
Configura i dettagli dell'avviso della criterio di avviso.
Aggiungi canali di notifica e configura i contenuti delle notifiche, ad esempio una riga dell'oggetto personalizzata.
(Facoltativo) Aggiungi etichette della policy di avviso e documentazione.
Fai clic su Avanti.
Esamina la criterio di avviso e poi creala facendo clic su Salva.
API Cloud Monitoring
Utilizza il alertPolicies.create
metodo per creare policy di avviso in modo programmatico. Il
Condition
tipo della criterio di avviso deve essere
MonitoringQueryLanguageCondition, che è un'istanza di
SqlCondition.
Questo tipo di condizione consente di definire le condizioni della 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 la criterio di avviso in modo che la condizione venga soddisfatta quando una riga di una colonna booleana nella tabella dei risultati della query contiene un valore true.row_count_test: configura la criterio di avviso in modo che la condizione venga soddisfatta quando il numero di righe nella tabella dei risultati della query soddisfa una determinata soglia.
Per un elenco completo di campi e definizioni, consulta
SqlCondition nella documentazione dell'API Cloud Monitoring.
Per saperne di più sull'API Monitoring per le policy di avviso, consulta Gestire le policy di avviso tramite l'API.
Terraform
Installa e configura Terraform per il tuo progetto. Per le configurazioni di App Hub, seleziona il progetto host di App Hub o il progetto di gestione.
In Cloud Shell, vai alla directory contenente la configurazione di Terraform.
Nella configurazione di Terraform, configura un'istanza della google_monitoring_alert_policy, inclusa condition_sql.
In Cloud Shell, inserisci
terraform apply.
Per modificare la criterio di avviso, apporta le modifiche e poi riapplica la configurazione di Terraform. Per saperne di più, consulta Gestire le policy di avviso con Terraform.
Per informazioni generali sull'utilizzo di Google Cloud con Terraform, consulta Terraform con Google Cloud.
Limitazioni
- Puoi avere una sola condizione per ogni criterio di avviso basata su SQL.
- Le policy di avviso basate su SQL non possono eseguire query su una vista di analisi.
Le query emesse dalle policy di avviso basate su SQL non riescono quando il tempo di esecuzione supera i cinque minuti.
Si verifica un ritardo di massimo sette minuti, più il tempo di esecuzione della query, tra la pianificazione di una query e la creazione di un incidente.
Per un elenco completo dei limiti associati alle policy di avviso, consulta Limiti di Monitoring.
Prezzi
Per informazioni sui prezzi, consulta i seguenti documenti:
- Prezzi di BigQuery
- Le sezioni di Cloud Logging e Cloud Monitoring della pagina Prezzi di Google Cloud Observability.
Passaggi successivi
Per informazioni sulla creazione di grafici dai dati di Observability Analytics, consulta Creare grafici dei risultati delle query con Observability Analytics.
Per informazioni sulla gestione degli incidenti per queste policy di avviso, consulta Incidenti per le policy di avviso basate su SQL.