Un criterio di avviso è rappresentato nell'API Cloud Monitoring
da un oggetto AlertPolicy
, che descrive un insieme di condizioni che indicano uno stato potenzialmente
non integro nel tuo sistema.
Questo documento descrive quanto segue:
- Come l'API Monitoring rappresenta i criteri di avviso.
- I tipi di condizioni forniti dall'API Monitoring per i criteri di avviso.
- Come creare una criterio di avviso utilizzando Google Cloud CLI o le librerie client.
Questa funzionalità è supportata solo per i progetti Google Cloud . Per le configurazioni di App Hub, seleziona il progetto host di App Hub o il progetto di gestione della cartella app.
Struttura di un criterio di avviso
La struttura AlertPolicy
definisce i componenti di una
criterio di avvisoo. Quando crei un criterio, specifichi i valori per i
seguenti campi AlertPolicy
:
displayName
: un'etichetta descrittiva per la policy.documentation
: ti consigliamo di utilizzare questo campo per fornire informazioni utili per i responsabili della risposta agli incidenti. Per saperne di più, consulta Annotare le notifiche con la documentazione definita dall'utente.userLabels
: eventuali etichette definite dall'utente associate al criterio. Le policy di avviso, gli incidenti e le notifiche mostrano queste etichette. Per informazioni sull'utilizzo delle etichette con gli avvisi, vedi Annotare gli incidenti con le etichette.conditions[]
: un array di struttureCondition
.combiner
: un operatore logico che determina la modalità di gestione di più condizioni.notificationChannels[]
: un array di nomi di risorse, ognuno dei quali identifica unNotificationChannel
.alertStrategy
: specifica quanto segue:- La velocità con cui Monitoring chiude gli incidenti quando i dati smettono di arrivare.
- Per i criteri di avviso basati su metriche, indica se Monitoring invia una notifica quando un incidente viene chiuso.
- Per i criteri di avviso basati su metriche, se le notifiche ripetute sono attive e l'intervallo tra queste notifiche. Per saperne di più, consulta Configurare le notifiche ripetute per i criteri di avviso basati su metriche.
Puoi anche specificare il campo severity
quando utilizzi l'API Cloud Monitoring e la console Google Cloud . Questo campo consente di definire il livello di gravità
degli incidenti. Se non specifichi una gravità,
Cloud Monitoring imposta la gravità del criterio di avviso su No Severity
.
A seconda delle condizioni che crei, puoi utilizzare altri campi.
Quando un criterio di avviso contiene una condizione, viene inviata una notifica quando questa condizione viene soddisfatta. Per informazioni sulle notifiche quando i criteri di avviso contengono più condizioni, consulta Criteri con più condizioni e Numero di notifiche per criterio.
Quando crei o modifichi il criterio di avviso, Monitoring imposta
anche altri campi, incluso il campo name
. Il valore del campo name
è il nome della risorsa per lacriterio di avvisoo, che identifica la
policy. Il nome della risorsa ha il seguente formato:
projects/PROJECT_ID/alertPolicies/POLICY_ID
Nell'espressione precedente:
- PROJECT_ID: l'identificatore del progetto. Per le configurazioni di App Hub, seleziona il progetto host di App Hub o il progetto di gestione della cartella app.
- POLICY_ID: l'ID del criterio di avviso
Tipi di condizioni nell'API
L'API Cloud Monitoring supporta vari tipi di condizioni nella struttura
Condition
. Esistono più tipi di condizioni per i criteri di avviso basati su metriche e uno per i criteri di avviso basati su log. Le sezioni seguenti descrivono i tipi di condizioni disponibili.
Condizioni per i criteri di avviso basati su metriche
Per creare un criterio di avviso che monitori i dati delle metriche, incluse le metriche basate sui log, puoi utilizzare i seguenti tipi di condizioni:
Condizioni delle metriche basate sui filtri
Le condizioni MetricAbsence
e MetricThreshold
utilizzano i
filtri di monitoraggio per selezionare i dati delle serie temporali
da monitorare. Gli altri campi nella struttura della condizione specificano come filtrare,
raggruppare e aggregare i dati. Per ulteriori informazioni su questi concetti, consulta
Filtro e aggregazione: manipolazione delle serie temporali.
Se utilizzi il tipo di condizione MetricAbsence
, puoi creare una condizione
che viene soddisfatta solo quando tutte le serie temporali sono assenti. Questa condizione utilizza
il parametro aggregations
per aggregare più serie temporali in una singola
serie temporale. Per saperne di più, consulta il riferimento MetricAbsence
nella documentazione dell'API.
Una criterio di avviso per l'assenza di metriche richiede che alcuni dati siano stati scritti in precedenza. Per saperne di più, consulta Creare policy di avviso per l'assenza di metriche.
Se vuoi ricevere una notifica in base a un valore previsto, configura il criterio di avviso in modo che utilizzi il tipo di condizione MetricThreshold
e imposta il campo forecastOptions
. Quando
questo campo non è impostato, i dati misurati vengono confrontati con una soglia.
Tuttavia, quando questo campo è impostato, i dati previsti vengono confrontati con una
soglia. Per saperne di più, consulta
Creare policy di avviso basate sul valore di una metrica previsto.
Condizioni per le metriche basate su MQL
La condizione MonitoringQueryLanguageCondition
utilizza Monitoring Query Language (MQL) per
selezionare e manipolare i dati delle serie temporali da monitorare. Puoi creare criteri di avviso
che confrontano i valori con una soglia o verificano l'assenza
di valori con questo tipo di condizione.
Se utilizzi una condizione MonitoringQueryLanguageCondition
, deve essere l'unica
condizione nellacriterio di avvisoo. Per ulteriori informazioni, consulta la sezione
Criteri di avviso con MQL.
Condizioni per le metriche basate su PromQL
La condizione PrometheusQueryLanguageCondition
utilizza query Prometheus Query Language (PromQL)
per selezionare e manipolare i dati delle serie temporali da monitorare.
La condizione può calcolare un rapporto tra le metriche,
valutare i confronti tra le metriche e altro ancora.
Se utilizzi una condizione PrometheusQueryLanguageCondition
, deve essere l'unica
condizione nellacriterio di avvisoo. Per maggiori informazioni, consulta Criteri di avviso con PromQL.
Condizioni per gli avvisi sui rapporti
Puoi creare criteri di avviso basati su soglie delle metriche per monitorare il
rapporto tra due metriche. Puoi creare questi criteri utilizzando il tipo di condizione MetricThreshold
o MonitoringQueryLanguageCondition
.
Puoi anche utilizzare MQL direttamente nella console Google Cloud . Non puoi creare
o gestire condizioni basate sul rapporto utilizzando l'interfaccia grafica per la creazione
di condizioni di soglia.
Ti consigliamo di utilizzare MQL per creare criteri di avviso basati sul rapporto.
MQL ti consente di creare query più potenti e flessibili rispetto a quelle che puoi
creare utilizzando il tipo di condizione MetricTheshold
e
i filtri di monitoraggio.
Ad esempio, con una condizione MonitoringQueryLanguageCondition
, puoi
calcolare il rapporto tra una metrica di indicatore e una metrica delta. Per esempi, vedi
Esempi di criteri di avviso MQL.
Se utilizzi la condizione MetricThreshold
, il numeratore e il denominatore
del rapporto devono avere lo stesso MetricKind
.
Per un elenco delle metriche e delle relative proprietà, consulta Elenchi delle metriche.
In generale, è meglio calcolare i rapporti in base alle serie temporali raccolte per un singolo tipo di metrica, utilizzando i valori delle etichette. Un rapporto calcolato su due tipi di metriche diversi è soggetto ad anomalie dovute a periodi di campionamento e finestre di allineamento diversi.
Ad esempio, supponiamo di avere due tipi di metriche diversi, un conteggio totale RPC e un conteggio errori RPC, e di voler calcolare il rapporto tra le RPC con conteggio errori e le RPC totali. Le RPC non riuscite vengono conteggiate nella serie temporale di entrambi i tipi di metriche. Pertanto, quando allinei le serie temporali, è possibile che una RPC non riuscita non venga visualizzata nello stesso intervallo di allineamento per entrambe le serie temporali. Questa differenza può verificarsi per diversi motivi, tra cui:
- Poiché esistono due diverse serie temporali che registrano lo stesso evento, esistono due valori di contatore sottostanti che implementano la raccolta e non vengono aggiornati in modo atomico.
- Le frequenze di campionamento potrebbero essere diverse. Quando le serie temporali sono allineate a un periodo comune, i conteggi di un singolo evento potrebbero essere visualizzati in intervalli di allineamento adiacenti nelle serie temporali per le diverse metriche.
La differenza nel numero di valori negli intervalli di allineamento corrispondenti può
portare a valori di rapporto error/total
senza senso come 1/0 o 2/1.
È meno probabile che i rapporti tra numeri più grandi generino valori privi di significato. Puoi ottenere numeri più grandi tramite l'aggregazione, utilizzando una finestra di allineamento più lunga del periodo di campionamento o raggruppando i dati per determinate etichette. Queste tecniche riducono al minimo l'effetto di piccole differenze nel numero di punti in un determinato intervallo. ovvero una disparità di due punti è più significativa quando il numero previsto di punti in un intervallo è 3 rispetto a quando il numero previsto è 300.
Se utilizzi tipi di metriche integrati, potresti non avere altra scelta che calcolare i rapporti tra i tipi di metriche per ottenere il valore che ti serve.
Se stai progettando metriche personalizzate che potrebbero conteggiare la stessa cosa, ad esempio le chiamate RPC che restituiscono lo stato di errore, in due metriche diverse, valuta la possibilità di utilizzare una singola metrica, che include ogni conteggio una sola volta. Ad esempio, supponiamo di conteggiare le RPC e di voler monitorare il rapporto tra le RPC non riuscite e tutte le RPC. Per risolvere questo problema, crea un singolo tipo di metrica per conteggiare le RPC e utilizza un'etichetta per registrare lo stato della chiamata, incluso lo stato "OK". Quindi, ogni valore di stato, errore o "OK", viene registrato aggiornando un singolo contatore per quel caso.
Condizione per i criteri di avviso basati su log
Per creare un criterio di avviso basato sui log, che ti avvisa quando nelle voci di log viene visualizzato un messaggio corrispondente al filtro, utilizza il tipo di condizione LogMatch
. Se utilizzi una condizione LogMatch
, deve essere l'unica condizione nella criterio di avviso.
Non tentare di utilizzare il tipo di condizione LogMatch
in combinazione con metriche basate sui log. I criteri di avviso che monitorano le metriche basate su log sono criteri basati su metriche. Per ulteriori informazioni sulla scelta tra criteri di avviso che monitorano metriche basate su log o voci di log, consulta Monitoraggio dei log.
I criteri di avviso utilizzati negli esempi del documento Gestire i criteri di avviso tramite l'API sono criteri di avviso basati su metriche, anche se i principi sono gli stessi per i criteri di avviso basati su log. Per informazioni specifiche sui criteri di avviso basati su log, consulta la sezione Creare un criterio di avviso basato su log utilizzando l'API Monitoring nella documentazione di Cloud Logging.
Come associare un criterio di avviso a un'applicazione App Hub
Google Cloud genera dashboard che ti aiutano a monitorare le tue applicazioni App Hub. Queste dashboard mostrano informazioni come i dati di log e delle metriche per le tue applicazioni e i servizi e i carichi di lavoro che fanno parte dell'applicazione. In queste dashboard vengono visualizzate anche le policy di avviso e i relativi incidenti, quando le policy sono associate al servizio o al workload di un'applicazione. Per saperne di più sul monitoraggio delle applicazioni, vedi Visualizzare la telemetria delle applicazioni.
Per associare un criterio di avviso a un'applicazione App Hub, aggiungi etichette con le seguenti chiavi al criterio:
apphub_application_location
apphub_application_id
apphub_service_id
oapphub_workload_id
userLabels
della rappresentazione JSON di un criterio di avviso potrebbe essere simile alla seguente:
"userLabels": { "apphub_service_id": "my-service-id", "apphub_application_location": "my-app-location", "apphub_application_id": "my-app" },
Prima di iniziare
Prima di scrivere codice per l'API, devi:
- Acquisire familiarità con i concetti generali e la terminologia utilizzati con i criteri di avviso. Per maggiori informazioni, consulta la Panoramica degli avvisi.
- Assicurati che l'API Cloud Monitoring sia abilitata all'uso. Per ulteriori informazioni, consulta la sezione Abilitazione dell'API.
- Se prevedi di utilizzare le librerie client, installale per le lingue che vuoi utilizzare. Per maggiori dettagli, consulta la sezione Librerie client. Il supporto delle API per gli avvisi è disponibile solo per C#, Go, Java, Node.js e Python.
Se prevedi di utilizzare Google Cloud CLI, installala. Tuttavia, se utilizzi Cloud Shell, Google Cloud CLI è già installata.
Qui sono forniti anche esempi che utilizzano l'interfaccia
gcloud
. Tieni presente che tutti gli esempi digcloud
presuppongono che il progetto attuale sia già stato impostato come target (gcloud config set project [PROJECT_ID]
), pertanto le invocazioni omettono il flag--project
esplicito. L'ID del progetto corrente negli esempi èa-gcp-project
. Per le configurazioni di App Hub, seleziona il progetto host di App Hub o il progetto di gestione della cartella app.
-
Per ottenere le autorizzazioni necessarie per creare e modificare i criteri di avviso utilizzando l'API Cloud Monitoring, chiedi all'amministratore di concederti il ruolo IAM Monitoring AlertPolicy Editor (
roles/monitoring.alertPolicyEditor
) nel progetto. Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Per informazioni dettagliate sui ruoli IAM per Monitoring, consulta Controllare l'accesso con Identity and Access Management.
Progetta la tua applicazione in modo da eseguire chiamate API Cloud Monitoring single-thread che modificano lo stato di un criterio di avviso in un progettoGoogle Cloud . Ad esempio, chiamate API a thread singolo che creano, aggiornano o eliminano un criterio di avviso.
Crea un criterio di avviso
Per creare un criterio di avviso in un progetto, utilizza il metodo alertPolicies.create
. Per informazioni su come richiamare questo metodo, sui relativi parametri e sui dati di risposta, consulta la pagina di riferimento alertPolicies.create
.
Puoi creare criteri da file JSON o YAML.
L'interfaccia a riga di comando di Google Cloud accetta questi file come argomenti e puoi leggere i file JSON in modo programmatico, convertirli in oggetti AlertPolicy
e creare policy a partire da questi utilizzando il metodo alertPolicies.create
. Se hai un file di configurazione Prometheus JSON o YAML con una regola di avviso, l'interfaccia alla gcloud CLI può eseguirne la migrazione a una policy di avviso di Cloud Monitoring con una condizione PromQL. Per maggiori informazioni, consulta la pagina
Eseguire la migrazione di regole di avviso e destinatari da Prometheus.
Ogni criterio di avviso appartiene a un progetto di definizione dell'ambito di un ambito delle metriche. Ogni
progetto può contenere fino a 500 criteri.
Per le chiamate API, devi fornire un "ID progetto"; utilizza l'ID del progetto di definizione dell'ambito di un ambito delle metriche come valore. In questi esempi,
l'ID del progetto di definizione dell'ambito di un ambito delle metriche è a-gcp-project
.
Gli esempi seguenti illustrano la creazione di criteri di avviso, ma non descrivono come creare un file JSON o YAML che descriva un criterio di avviso. Gli esempi, invece, presuppongono l'esistenza di un file in formato JSON e mostrano come effettuare la chiamata API. Per esempi di file JSON, consulta Criteri di esempio. Per informazioni generali sul monitoraggio dei rapporti tra le metriche, consulta Rapporti tra le metriche.
gcloud
Per creare un criterio di avviso in un progetto, utilizza il comando gcloud alpha monitoring
policies create
. L'esempio seguente crea un criterio di avviso in
a-gcp-project
dal file rising-cpu-usage.json
:
gcloud alpha monitoring policies create --policy-from-file="rising-cpu-usage.json"
In caso di esito positivo, questo comando restituisce il nome del nuovo criterio, ad esempio:
Created alert policy [projects/a-gcp-project/alertPolicies/12669073143329903307].
Il file rising-cpu-usage.json
contiene il JSON per un criterio con
il nome visualizzato "Tasso di variazione elevato della CPU". Per informazioni dettagliate su questo criterio, consulta
Criterio sul tasso di variazione.
Per saperne di più, consulta il riferimento gcloud alpha monitoring policies create
.
C#
Per eseguire l'autenticazione in Monitoring, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Go
Per eseguire l'autenticazione in Monitoring, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Java
Per eseguire l'autenticazione in Monitoring, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Node.js
Per eseguire l'autenticazione in Monitoring, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
PHP
Per eseguire l'autenticazione in Monitoring, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Python
Per eseguire l'autenticazione in Monitoring, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
L'oggetto AlertPolicy
creato avrà campi aggiuntivi.
Il criterio stesso avrà i campi name
, creationRecord
e
mutationRecord
. Inoltre, a ogni condizione delle norme viene assegnato anche un name
.
Questi campi non possono essere modificati esternamente, quindi non è necessario impostarli
quando crei un criterio. Nessuno degli esempi JSON utilizzati per la creazione
dei criteri li include, ma se i criteri creati a partire da questi vengono recuperati dopo
la creazione, i campi saranno presenti.
Configurare notifiche ripetute per i criteri di avviso basati su metriche
Per impostazione predefinita, un criterio di avviso basato su metriche invia una notifica a ogni canale di notifica quando viene aperto un incidente. Tuttavia, puoi modificare il comportamento predefinito e configurare un criterio di avviso per inviare nuovamente le notifiche a tutti o ad alcuni dei canali di notifica per il criterio di avviso. Queste notifiche ripetute vengono inviate per gli incidenti con stato Aperto o Confermato. L'intervallo tra queste notifiche deve essere di almeno 30 minuti e non superiore a 24 ore, espresso in secondi.
Per configurare le notifiche ripetute, aggiungi alla configurazione del criterio di avviso
un oggetto AlertStrategy
che contenga almeno un oggetto
NotificationChannelStrategy
.
Un oggetto NotificationChannelStrategy
ha due campi:
renotifyInterval
: l'intervallo, in secondi, tra le notifiche ripetute.Se modifichi il valore del campo
renotifyInterval
quando viene aperto un incidente per il criterio di avviso, si verifica quanto segue:- La criterio di avviso invia un'altra notifica per l'incidente.
- Il criterio di avviso riavvia il periodo di intervallo.
notificationChannelNames
: un array di nomi di risorse del canale di notifica, che sono stringhe nel formatoprojects/PROJECT_ID/notificationChannels/CHANNEL_ID
, dove CHANNEL_ID è un valore numerico. Per informazioni su come recuperare l'ID canale, consulta Elencare i canali di notifica in un progetto.
Ad esempio, il seguente campione JSON mostra una strategia di avviso configurata per inviare notifiche ripetute ogni 1800 secondi (30 minuti) a un canale di notifica:
"alertStrategy": { "notificationChannelStrategy": [ { "notificationChannelNames": [ "projects/PROJECT_ID/notificationChannels/CHANNEL_ID" ], "renotifyInterval": "1800s" } ] }
Per interrompere temporaneamente le notifiche ripetute, crea un posticipo. Per
evitare notifiche ripetute, modifica lacriterio di avvisoo utilizzando l'API e
rimuovi l'oggetto NotificationChannelStrategy
.