Monitorare i risultati delle query SQL con una criterio di avviso

Le policy di avviso basate su SQL in Observability Analytics eseguono periodicamente query SQL sui dati di Cloud Trace e ti inviano notifiche quando i risultati soddisfano le condizioni specificate. Queste policy vengono eseguite sul motore BigQuery e richiedono un set di dati BigQuery collegato.

Per informazioni generali su Observability Analytics, consulta Esegui query e analizza le tracce 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 la notifica di un avviso. Esistono diversi approcci che puoi utilizzare per ricevere notifiche quando contenuti o pattern vengono visualizzati nei dati di traccia:

  • Per monitorare il numero di intervalli di Cloud Trace importati al mese, l'utilizzo della quota e la frequenza di importazione degli intervalli, crea policy di avviso in Cloud Monitoring. Se non hai mai creato una criterio di avviso, consulta Crea policy di avviso per informazioni dettagliate sull'utilizzo della console di Cloud Monitoring.

  • Per visualizzare o esplorare singole tracce o intervalli o per visualizzare gli attributi associati agli intervalli, utilizza la pagina Esplora tracce. Per informazioni su questa pagina, consulta Trova ed esplora le tracce.

  • Per monitorare l'analisi aggregata dei dati di traccia, combina Observability Analytics con le policy di avviso. In questo scenario, utilizzi le query SQL per eseguire query sulla vista _AllSpans nel bucket di osservabilità denominato _Trace. 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.

    Per scoprire di più su come vengono archiviati i dati di traccia, consulta la panoramica dello spazio di archiviazione.

    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 tuoi dati. La condizione definisce anche le circostanze in cui il risultato della query fa sì che Monitoring crei un avviso.

  • La pianificazione definisce la frequenza con cui la criterio di avviso esegue la query. La pianificazione definisce anche la dimensione della finestra temporale, che è 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 dati degli ultimi 60 minuti.

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 avviso e invia notifiche sull'avviso tramite questi canali. Un avviso è un record dei dati che hanno causato la soddisfazione della condizione, insieme ad altre informazioni pertinenti. Queste informazioni possono aiutarti a risolvere i problemi che hanno causato l'avviso. Puoi visualizzare l'avviso utilizzando la console Google Cloud .

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 numero di righe: la condizione è soddisfatta quando il numero di righe nel risultato della query è maggiore, uguale o minore di un valore di soglia.

  • Booleano: la condizione è soddisfatta quando una colonna booleana specifica nella tabella dei risultati della query contiene una riga con un valore true.

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 traccia, devi configurare un set di dati BigQuery collegato. I set di dati BigQuery collegati consentono a BigQuery di leggere i dati di traccia 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 progetto Google Cloud 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 prenotati sono soggetti ai prezzi di BigQuery.

Puoi anche scegliere di configurare prenotazioni di slot BigQuery dedicati per il tuo progetto:

  1. Crea una prenotazione con slot dedicati o identificane una esistente.
  2. Crea assegnazioni di prenotazione per il tuo progetto.

Finestra temporale e tempo di propagazione degli avvisi

Quando è pianificata la valutazione della condizione di una criterio di avviso, 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, possono essere necessari fino a due minuti aggiuntivi per la propagazione dell'avviso nel sistema.

Errori delle query

Le query eseguite dalle policy di avviso basate su SQL possono non riuscire per vari motivi, tra cui:

  • Il service account di Monitoring non esiste più o non dispone più delle autorizzazioni necessarie per leggere i dati di traccia 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 di 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 un set di dati BigQuery collegato per i dati di traccia.

Prima di creare una criterio di avviso basata su SQL, completa i seguenti passaggi:

  1. Per ottenere le autorizzazioni necessarie per eseguire query sui dati di traccia e creare policy di avviso basate su SQL, chiedi all'amministratore di concederti i seguenti ruoli IAM:

  2. Verifica che il service account di Monitoring esista e che abbia i seguenti ruoli:

    1. Monitoring Service Agent (roles/monitoring.notificationServiceAgent) sul tuo progetto.
    2. BigQuery Data Viewer (roles/bigquery.dataViewer) sul set di dati BigQuery collegato.

    Se il service account di Monitoring non esiste, consulta Risoluzione dei problemi: nessun service account di Monitoring.

  3. Configura i canali di notifica che vuoi utilizzare per ricevere notifiche per gli avvisi. Per garantire la ridondanza, ti consigliamo di configurare più tipi di canali di notifica. Per saperne di più, consulta la pagina Crea e gestisci canali di notifica.

Crea una criterio di avviso basata su SQL

Per creare una criterio di avviso basata su SQL, segui questi passaggi:

Console

  1. Nella console Google Cloud , vai alla pagina Observability Analytics:

    Vai a Observability Analytics

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

  2. Nella pagina Observability Analytics, nell'editor di query, inserisci una query SQL che esegua query sui dati di traccia.

  3. 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 l'opzione Esegui su BigQuery non viene visualizzata, fai clic su Seleziona motore di query e poi su BigQuery. Il pulsante Esegui query diventa Esegui su BigQuery.

  4. Nella tabella Risultati della pagina Observability Analytics, fai clic su  Crea avviso.

    La pagina Observability Analytics mostra la finestra Crea policy di avviso SQL, che mostra la query nella sezione Query SQL.

  5. Nella sezione Condizione di avviso, configura la condizione e la pianificazione della criterio di avviso.

  6. Configura i dettagli della criterio di avviso.

    1. Aggiungi canali di notifica e configura i contenuti delle notifiche, ad esempio una riga dell'oggetto personalizzata.

    2. (Facoltativo) Aggiungi etichette della policy di avviso e documentazione.

    3. Fai clic su Avanti.

  7. Esamina la criterio di avviso e creala facendo clic su Salva.

Terraform

  1. Installa e configura Terraform per il tuo progetto. Per le configurazioni di App Hub, seleziona il progetto host o il progetto di gestione di App Hub.

  2. In Cloud Shell, vai alla directory che contiene la configurazione Terraform.

  3. Nella configurazione di Terraform, configura un'istanza della risorsa google_monitoring_alert_policy, inclusa condition_sql.

  4. In Cloud Shell, inserisci terraform apply.

Per modificare la criterio di avviso, apporta le modifiche e poi applica nuovamente la configurazione Terraform. Per saperne di più, consulta Gestisci le policy di avviso con Terraform.

Per informazioni generali sull'utilizzo di Google Cloud con Terraform, consulta Terraform con Google Cloud.

REST

Utilizza il metodo alertPolicies.create per creare in modo programmatico le policy di avviso. Il tipo Condition della criterio di avviso deve essere conditionSql, 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 relativa 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 relativa condizione venga 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 le policy di avviso, consulta Gestione delle policy di avviso tramite API.

Limitazioni

  • Puoi avere una condizione per criterio di avviso basata su SQL.
  • Le policy di avviso basate su SQL non possono eseguire query su una vista di analisi.
  • Le query eseguite dalle policy di avviso basate su SQL non vanno a buon fine quando il tempo di esecuzione supera i cinque minuti.

  • Esiste un ritardo fino a sette minuti, più il tempo di esecuzione della query, tra la pianificazione di una query e la creazione di un avviso.

Per un elenco completo dei limiti associati alle policy di avviso, consulta Limiti di Monitoring.

Passaggi successivi