Questo documento fornisce esempi di criteri di avviso. Gli esempi sono scritti in JSON e utilizzano i filtri di Monitoring. Puoi creare criteri in formato JSON o YAML, a prescindere che tu li definisca utilizzando i filtri di Monitoring o il Monitoring Query Language (MQL). Google Cloud CLI può leggere e scrivere sia JSON che YAML, mentre l'API REST può leggere JSON.
Per esempi di criteri di avviso che utilizzano MQL, consulta i seguenti documenti:
Per informazioni su come configurare i campi criterio di avviso, consulta quanto segue:
- Creare criteri di avviso basati su metriche utilizzando la console Google Cloud
- Creare criteri di avviso basati su metriche utilizzando l'API
Genera il file YAML per i criteri esistenti
Per generare rappresentazioni YAML dei criteri di avviso esistenti, utilizza il comando gcloud alpha monitoring policies list
per elencare i criteri e il comando gcloud alpha monitoring policies describe
per stampare il criterio.
Per generare rappresentazioni YAML dei tuoi canali di notifica esistenti, utilizza il comando gcloud alpha monitoring channels list
per elencare i canali e il comando gcloud alpha monitoring channels describe
per stampare la configurazione del canale.
Se non includi il flag --format
nei comandi di Google Cloud CLI, per impostazione predefinita il formato sarà YAML per entrambi i comandi gcloud ... describe
.
Ad esempio, il seguente comando gcloud alpha monitoring policies describe
recupera un singolo criterio denominato projects/a-gcp-project/alertPolicies/12669073143329903307
e il reindirizzamento (>
) copia l'output nel file test-policy.yaml
:
gcloud alpha monitoring policies describe projects/a-gcp-project/alertPolicies/12669073143329903307 > test-policy.yaml
Genera JSON per i criteri esistenti
Per generare rappresentazioni JSON dei criteri di avviso e dei canali di notifica esistenti, esegui una delle seguenti operazioni:
Aggiungi il flag
--format="json"
ai comandi dell'interfaccia a riga di comandogcloud
descritti in Generare YAML per i criteri esistenti. Ad esempio, per elencare i criteri, esegui il comando seguente:Elenco dei criteri di monitoraggio alpha di gcloud --format=json
Utilizza il widget Explorer API nella pagina di riferimento per ogni metodo API:
Per i criteri di avviso, vedi i metodi
alertPolicies.list
ealertPolicies.get
.Per i canali di notifica, vedi i metodi
notificationChannels.list
enotificationChannels.get
.
Per saperne di più, consulta la sezione Explorer API.
Esempi di criteri
Come mostrato nell'esempio di backup/ripristino, puoi utilizzare i criteri salvati per creare nuove copie di questi criteri.
Puoi utilizzare un criterio salvato in un progetto per creare un criterio nuovo o simile in un altro. Tuttavia, devi prima apportare le seguenti modifiche in una copia del criterio salvato:
- Rimuovi i seguenti campi da qualsiasi canale di notifica:
name
verificationStatus
- Crea i canali di notifica prima di fare riferimento ai canali indicati nei criteri di avviso (sono necessari i nuovi identificatori dei canali).
- Rimuovi i seguenti campi da qualsiasi criterio di avviso che stai ricreando:
name
condition.name
creationRecord
mutationRecord
I criteri di questo documento sono organizzati utilizzando la stessa terminologia utilizzata da Monitoring nella console Google Cloud, ad esempio "criterio di frequenza di modifica", e esistono due tipi di condizioni:
- Una condizione di soglia; quasi tutti i tipi di criteri menzionati nell'interfaccia utente sono varianti di una condizione di soglia
- Una condizione di assenza
Negli esempi riportati di seguito, queste condizioni corrispondono a conditionThreshold
e conditionAbsent
. Per maggiori informazioni, consulta la pagina di riferimento per Condition
.
Puoi creare manualmente molti di questi criteri utilizzando la console Google Cloud, ma alcuni possono essere creati solo utilizzando l'API Monitoring. Per ulteriori informazioni, consulta la sezione Creare un criterio di avviso (UI) o Creare criteri (API).
Norme relative alle soglie di metrica
Un criterio relativo alla soglia di metrica è quello che rileva quando un valore supera un confine prestabilito. I criteri relativi alla soglia ti consentono di sapere che qualcosa sta per raggiungere un punto importante, in modo che tu possa intervenire. Ad esempio, quando lo spazio su disco disponibile è inferiore al 10% dello spazio su disco totale e a breve il sistema potrebbe esaurirsi.
Il seguente criterio utilizza l'utilizzo medio della CPU come indicatore dell'integrità di un gruppo di VM. Crea un avviso quando l'utilizzo medio della CPU di un gruppo di VM in un'istanza e una zona, misurato su intervalli di 60 secondi, supera una soglia del 90% di utilizzo per 15 minuti (900 secondi):
{
"displayName": "Very high CPU usage",
"combiner": "OR",
"conditions": [
{
"displayName": "CPU usage is extremely high",
"conditionThreshold": {
"aggregations": [
{
"alignmentPeriod": "60s",
"crossSeriesReducer": "REDUCE_MEAN",
"groupByFields": [
"project",
"resource.label.instance_id",
"resource.label.zone"
],
"perSeriesAligner": "ALIGN_MAX"
}
],
"comparison": "COMPARISON_GT",
"duration": "900s",
"filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\"
AND resource.type=\"gce_instance\"",
"thresholdValue": 0.9,
"trigger": {
"count": 1
}
}
}
],
}
Criterio di assenza di metriche
Un criterio di assenza di metriche viene attivato quando non viene scritto alcun dato in una metrica per la durata specificata.
Un modo per dimostrarlo è creare una metrica personalizzata.
Di seguito è riportato un descrittore di esempio per una metrica personalizzata. Puoi creare la metrica utilizzando Explorer API.
{
"description": "Number of times the pipeline has run",
"displayName": "Pipeline runs",
"metricKind": "GAUGE",
"type": "custom.googleapis.com/pipeline_runs",
"labels": [
{
"description": "The name of the pipeline",
"key": "pipeline_name",
"valueType": "STRING"
},
],
"unit": "1",
"valueType": "INT64"
}
Per saperne di più, consulta Panoramica delle metriche definite dall'utente.
Il seguente criterio di avviso si attiva quando i dati non vengono più scritti in questa metrica per un periodo di circa un'ora: in altre parole, non è stato possibile eseguire la pipeline oraria. Tieni presente che la condizione utilizzata qui è
conditionAbsent
.
{
"displayName": "Data ingestion functioning",
"combiner": "OR",
"conditions": [
{
"displayName": "Hourly pipeline is up",
"conditionAbsent": {
"duration": "3900s",
"filter": "resource.type=\"global\"
AND metric.type=\"custom.googleapis.com/pipeline_runs\"
AND metric.label.pipeline_name=\"hourly\"",
}
}
],
}
Criterio di previsione
Una condizione di previsione viene attivata quando tutte le previsioni effettuate per una serie temporale in una finestra di durata sono uguali e prevedono che la serie temporale violerà la soglia all'interno dell'orizzonte di previsione.
Una condizione di previsione è una condizione di soglia metrica configurata per l'utilizzo della previsione. Come illustrato nell'esempio seguente, queste condizioni includono un campo forecastOptions
che consente la previsione e specifica l'orizzonte di previsione. Nel seguente esempio, l'orizzonte di previsione è impostato su un'ora, che è il valore minimo:
{
"displayName": "NFS free bytes alert",
"combiner": "OR",
"conditions": [
{
"displayName": "Filestore Instance - Free disk space percent",
"conditionThreshold": {
"aggregations": [
{
"alignmentPeriod": "300s",
"perSeriesAligner": "ALIGN_MEAN"
}
],
"comparison": "COMPARISON_LT",
"duration": "900s",
"filter": "resource.type = \"filestore_instance\" AND metric.type = \"file.googleapis.com/nfs/server/free_bytes_percent\"",
"forecastOptions": {
"forecastHorizon": "3600s"
},
"thresholdValue": 20,
"trigger": {
"count": 1
}
}
}
],
}
Norme relative alla percentuale di cambio
Le condizioni di cambio di frequenza si attivano quando i valori in una serie temporale aumentano o diminuiscono di almeno la percentuale specificata dalla soglia. Quando crei questo tipo di condizione, alla serie temporale viene applicato un calcolo percentuale di variazione prima del confronto con la soglia.
La condizione calcola la media dei valori della metrica degli ultimi 10 minuti, quindi confronta il risultato con la media di 10 minuti misurata poco prima del periodo di durata. La finestra temporale di 10 minuti utilizzata da una condizione di frequenza di modifica metrica è un valore fisso che non puoi modificare. Tuttavia, specifichi la finestra della durata quando crei una condizione.
Questo criterio ti avvisa quando il tasso di utilizzo della CPU aumenta rapidamente:
{
"displayName": "High CPU rate of change",
"combiner": "OR",
"conditions": [
{
"displayName": "CPU usage is increasing at a high rate",
"conditionThreshold": {
"aggregations": [
{
"alignmentPeriod": "900s",
"perSeriesAligner": "ALIGN_PERCENT_CHANGE",
}],
"comparison": "COMPARISON_GT",
"duration": "180s",
"filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" AND resource.type=\"gce_instance\"",
"thresholdValue": 0.5,
"trigger": {
"count": 1
}
}
}
],
}
Norme sui gruppi di dati aggregati
Questo criterio avvisa quando l'utilizzo medio della CPU in un cluster Google Kubernetes Engine supera una soglia:
{
"displayName": "CPU utilization across GKE cluster exceeds 10 percent",
"combiner": "OR",
"conditions": [
{
"displayName": "Group Aggregate Threshold across All Instances in Group GKE cluster",
"conditionThreshold": {
"filter": "group.id=\"3691870619975147604\" AND metric.type=\"compute.googleapis.com/instance/cpu/utilization\" AND resource.type=\"gce_instance\"",
"comparison": "COMPARISON_GT",
"thresholdValue": 0.1,
"duration": "300s",
"trigger": {
"count": 1
},
"aggregations": [
{
"alignmentPeriod": "60s",
"perSeriesAligner": "ALIGN_MEAN",
"crossSeriesReducer": "REDUCE_MEAN",
"groupByFields": [
"project",
"resource.label.instance_id",
"resource.label.zone"
]
},
{
"alignmentPeriod": "60s",
"perSeriesAligner": "ALIGN_SUM",
"crossSeriesReducer": "REDUCE_MEAN"
}
]
},
}
],
}
Questo criterio presuppone l'esistenza del seguente gruppo:
{
"name": "projects/a-gcp-project/groups/3691870619975147604",
"displayName": "GKE cluster",
"filter": "resource.metadata.name=starts_with(\"gke-kuber-cluster-default-pool-6fe301a0-\")"
}
Per identificare i campi equivalenti per i tuoi gruppi, elenca i dettagli del gruppo utilizzando Explorer API nella pagina di riferimento di project.groups.list.
Criterio per i controlli di uptime
Lo stato dei controlli di uptime viene visualizzato nella pagina Panoramica di Monitoring, ma puoi utilizzare un criterio di avviso per informarti direttamente se il controllo di uptime non va a buon fine.
Ad esempio, il seguente JSON descrive un controllo di uptime HTTPS sul sito di Google Cloud. Verifica la disponibilità ogni 5 minuti.
Il controllo di uptime è stato creato con la console Google Cloud. La rappresentazione JSON qui è stata creata elencando i controlli di uptime nel progetto utilizzando l'API Monitoring. Consulta uptimeCheckConfigs.list
.
Puoi anche creare controlli di uptime con l'API Monitoring.
{
"name": "projects/a-gcp-project/uptimeCheckConfigs/uptime-check-for-google-cloud-site",
"displayName": "Uptime check for Google Cloud site",
"monitoredResource": {
"type": "uptime_url",
"labels": {
"host": "cloud.google.com"
}
},
"httpCheck": {
"path": "/index.html",
"useSsl": true,
"port": 443,
"authInfo": {}
},
"period": "300s",
"timeout": "10s",
"contentMatchers": [
{}
]
}
Per creare un criterio di avviso per un controllo di uptime, fai riferimento al controllo di uptime entro il giorno UPTIME_CHECK_ID
. Questo ID viene impostato durante la creazione del controllo; viene visualizzato come ultimo componente del campo name
ed è visibile nell'interfaccia utente come Check ID
nel riepilogo della configurazione. Se utilizzi l'API Monitoring, il metodo uptimeCheckConfigs.create
restituisce l'ID.
L'ID deriva dal displayName
, che in questo caso è stato impostato nell'interfaccia utente.
Puoi verificarlo elencando i controlli di uptime e osservando il valore name
.
L'ID per il controllo di uptime descritto in precedenza è
uptime-check-for-google-cloud-site
.
Il criterio di avviso riportato di seguito viene attivato se il controllo di uptime non riesce o se il certificato SSL sul sito di Google Cloud scadrà tra meno di 15 giorni. Se una di queste condizioni si verifica, il criterio di avviso invia una notifica al canale di notifica specificato:
{
"displayName": "Google Cloud site uptime failure",
"combiner": "OR",
"conditions": [
{
"displayName": "Failure of uptime check_id uptime-check-for-google-cloud-site",
"conditionThreshold": {
"aggregations": [
{
"alignmentPeriod": "1200s",
"perSeriesAligner": "ALIGN_NEXT_OLDER",
"crossSeriesReducer": "REDUCE_COUNT_FALSE",
"groupByFields": [ "resource.label.*" ]
}
],
"comparison": "COMPARISON_GT",
"duration": "600s",
"filter": "metric.type=\"monitoring.googleapis.com/uptime_check/check_passed\"
AND metric.label.check_id=\"uptime-check-for-google-cloud-site\"
AND resource.type=\"uptime_url\"",
"thresholdValue": 1,
"trigger": {
"count": 1
}
}
},
{
"displayName": "SSL Certificate for google-cloud-site expiring soon",
"conditionThreshold": {
"aggregations": [
{
"alignmentPeriod": "1200s",
"perSeriesAligner": "ALIGN_NEXT_OLDER",
"crossSeriesReducer": "REDUCE_MEAN",
"groupByFields": [ "resource.label.*" ]
}
],
"comparison": "COMPARISON_LT",
"duration": "600s",
"filter": "metric.type=\"monitoring.googleapis.com/uptime_check/time_until_ssl_cert_expires\"
AND metric.label.check_id=\"uptime-check-for-google-cloud-site\"
AND resource.type=\"uptime_url\"",
"thresholdValue": 15,
"trigger": {
"count": 1
}
}
}
],
}
Il filtro nel criterio di avviso specifica la metrica che viene monitorata
per tipo ed etichetta. I tipi di metrica sono monitoring.googleapis.com/uptime_check/check_passed
e monitoring.googleapis.com/uptime_check/time_until_ssl_cert_expires
.
L'etichetta della metrica identifica lo specifico controllo di uptime che viene monitorato.
In questo esempio, il campo dell'etichetta check_id
contiene l'ID controllo di uptime.
AND metric.label.check_id=\"uptime-check-for-google-cloud-site\"
Per ulteriori informazioni, consulta Filtri di monitoraggio.
Norme relative all'integrità dei processi
Un criterio di integrità di processo può inviarti una notifica se il numero di processi che corrispondono a un pattern supera una soglia. Questo può essere utilizzato per informarti, ad esempio, che un processo ha interrotto l'esecuzione.
Questo criterio invia una notifica al canale di notifica specificato quando nessun processo corrispondente alla stringa nginx
, in esecuzione come utente www
, è disponibile da più di 5 minuti:
{
"displayName": "Server health",
"combiner": "OR",
"conditions": [
{
"displayName": "Process 'nginx' is not running",
"conditionThreshold": {
"filter": "select_process_count(\"has_substring(\\\"nginx\\\")\", \"www\") AND resource.type=\"gce_instance\"",
"comparison": "COMPARISON_LT",
"thresholdValue": 1,
"duration": "300s"
}
}
],
}
Per ulteriori informazioni, vedi Integrità dei processi.
Rapporto metrica
Consigliamo di utilizzare Monitoring Query Language (MQL) per creare criteri di avviso basati sul rapporto. Sebbene l'API Cloud Monitoring supporti la creazione di alcuni rapporti basati su filtri, MQL fornisce una soluzione più flessibile e robusta:
- Per esempi di criteri di rapporto basati su MQL, vedi Esempi di criteri di avviso MQL.
- Per informazioni sulla creazione dei criteri di avviso con MQL, consulta Criteri di avviso con MQL.
- Per informazioni su come creare grafici o monitorare le percentuali delle metriche, consulta Rapporti di metriche.
Questa sezione descrive un rapporto basato su filtri.
Con l'API, puoi creare e visualizzare un criterio che calcola il rapporto di due metriche correlate e si attiva quando tale rapporto supera una soglia. Le metriche correlate devono avere lo stesso MetricKind
. Ad esempio, puoi creare un criterio di avviso basato sul rapporto se entrambe le metriche sono metriche.
Per determinare il MetricKind
di un tipo di metrica, consulta l'elenco delle metriche.
Una condizione di rapporto è una variante di una condizione di soglia semplice, in cui
la condizione in un criterio di rapporto utilizza due filtri: il consueto filter
,
che funge da numeratore del rapporto, e un denominatorFilter
,
che funge da denominatore del rapporto.
Le serie temporali di entrambi i filtri devono essere aggregate nello stesso modo, in modo che il calcolo del rapporto dei valori sia significativo. Il criterio di avviso viene attivato se il rapporto dei due filtri viola un valore di soglia per la durata specificata.
La sezione successiva descrive come configurare un criterio di avviso che monitori il rapporto tra le risposte con errori HTTP e tutte le risposte HTTP.
Rapporto degli errori HTTP
Il seguente criterio crea una condizione di soglia basata sul rapporto tra il conteggio delle risposte HTTP di errore e il conteggio di tutte le risposte HTTP.
{
"displayName": "HTTP error count exceeds 50 percent for App Engine apps",
"combiner": "OR",
"conditions": [
{
"displayName": "Ratio: HTTP 500s error-response counts / All HTTP response counts",
"conditionThreshold": {
"filter": "metric.label.response_code>=\"500\" AND
metric.label.response_code<\"600\" AND
metric.type=\"appengine.googleapis.com/http/server/response_count\" AND
project=\"a-gcp-project\" AND
resource.type=\"gae_app\"",
"aggregations": [
{
"alignmentPeriod": "300s",
"crossSeriesReducer": "REDUCE_SUM",
"groupByFields": [
"project",
"resource.label.module_id",
"resource.label.version_id"
],
"perSeriesAligner": "ALIGN_DELTA"
}
],
"denominatorFilter": "metric.type=\"appengine.googleapis.com/http/server/response_count\" AND
project=\"a-gcp-project\" AND
resource.type=\"gae_app\"",
"denominatorAggregations": [
{
"alignmentPeriod": "300s",
"crossSeriesReducer": "REDUCE_SUM",
"groupByFields": [
"project",
"resource.label.module_id",
"resource.label.version_id"
],
"perSeriesAligner": "ALIGN_DELTA",
}
],
"comparison": "COMPARISON_GT",
"thresholdValue": 0.5,
"duration": "0s",
"trigger": {
"count": 1
}
}
}
]
}
I tipi di metriche e risorse
Il tipo di metrica per questo criterio è appengine.googleapis.com/http/server/response_count
, che ha due etichette:
response_code
, un numero intero a 64 bit che rappresenta il codice di stato HTTP della richiesta. Questo criterio filtra i dati della serie temporale su questa etichetta, in modo da poter stabilire quanto segue:- Il numero di risposte ricevute.
- Il numero di risposte di errore ricevute.
- Il rapporto tra le risposte all'errore e tutte le risposte.
loading
, un valore booleano che indica se la richiesta era in fase di caricamento. L'etichettaloading
non è pertinente in questo criterio di avviso.
Il criterio di avviso riguarda i dati di risposta delle app App Engine, ovvero i dati provenienti dal tipo di risorsa monitorata gae_app
. Questa risorsa monitorata ha tre etichette:
project_id
, l'ID del progetto Google Cloud.module_id
, il nome del servizio o del modulo nell'app.version_id
, la versione dell'app.
Per informazioni di riferimento su questi tipi di metriche e risorse monitorate, consulta le metriche di App Engine nell'elenco delle metriche e la voce gae_app
nell'elenco delle risorse monitorate.
Cosa fanno queste norme
Questo criterio calcola il rapporto tra le risposte con errori e le risposte totali. Il criterio attiva una notifica di avviso se il rapporto supera il 50% (ovvero il rapporto è maggiore di 0, 5) nel periodo di allineamento di 5 minuti.
Questo criterio acquisisce il modulo e la versione dell'app che viola la condizione raggruppando le serie temporali in ogni filtro in base ai valori delle etichette.
- Il filtro nella condizione esamina le risposte HTTP di un'app App Engine e seleziona queste risposte nell'intervallo di errore, 5xx. Questo è il numeratore nel rapporto.
- Il filtro del denominatore nella condizione esamina tutte le risposte HTTP di un'app App Engine.
Il criterio attiva immediatamente la notifica di avviso; la durata consentita per la condizione è di 0 secondi. Questo criterio utilizza un numero di attivatori pari a 1, che corrisponde al numero di serie temporali che devono violare la condizione per attivare la notifica di avviso. Per un'app App Engine con un singolo servizio, un attivatore di numero 1 è consentito. Se hai un'app con 20 servizi e vuoi attivare un avviso se tre o più servizi violano la condizione, utilizza un numero di attivatori pari a 3.
Impostazione di un rapporto
I filtri del numeratore e del denominatore sono esattamente gli stessi, ad eccezione del fatto che il filtro della condizione del numeratore corrisponde ai codici di risposta nell'intervallo di errore, mentre il filtro della condizione nel denominatore corrisponde a tutti i codici di risposta. Le seguenti clausole vengono visualizzate solo nella condizione del numeratore:
metric.label.response_code>=\"500\" AND
metric.label.response_code<\"600\"
In caso contrario, i filtri del numeratore e del denominatore sono gli stessi.
Le serie temporali selezionate da ciascun filtro devono essere aggregate allo stesso modo per rendere valido il calcolo del rapporto. Ciascun filtro potrebbe raccogliere più serie temporali, dato che ci sarà una serie temporale diversa per ogni combinazione di valori per le etichette. Questo criterio raggruppa l'insieme di serie temporali in base a etichette specificate, che partizionano l'insieme di serie temporali in un insieme di gruppi. Alcune serie temporali di ogni gruppo corrispondono al filtro del numeratore, mentre il resto corrisponde al filtro del denominatore.
Per calcolare un rapporto, l'insieme di serie temporali che corrisponde a ciascun filtro deve essere aggregato in una singola serie temporale ciascuno. In questo modo ogni gruppo avrà due serie temporali, una per il numeratore e una per il denominatore. Successivamente, è possibile calcolare il rapporto di punti nel numeratore e nella serie temporale del denominatore di ogni gruppo.
In questo criterio, le serie temporali per entrambi i filtri vengono aggregate come segue:
Ogni filtro crea una serie di serie temporali allineate a intervalli di 5 minuti, con valori rappresentati su
ALIGN_DELTA
per i valori nell'intervallo di allineamento di 5 minuti. Questo allineatore restituisce il numero di risposte corrispondenti in quell'intervallo come un numero intero a 64 bit.Le serie temporali all'interno di ciascun filtro sono raggruppate anche in base ai valori delle etichette delle risorse per modulo e versione, quindi ogni gruppo con contiene due insiemi di serie temporali allineate, quelle che corrispondono al filtro numeratore e quelle corrispondenti al filtro denominatore.
Le serie temporali all'interno di ogni gruppo che corrispondono al filtro numeratore o denominatore vengono aggregate per una sola volta sommando i valori della singola serie temporale utilizzando il riduttore
REDUCER_SUM
per le serie incrociate. Ne risulta una serie temporale per il numeratore e una per il denominatore, ciascuno dei quali segnala il numero di risposte in tutte le serie temporali corrispondenti nell'intervallo di allineamento.
Il criterio calcola quindi la serie temporale del numeratore e del denominatore che rappresenta ogni gruppo. Una volta che il rapporto è disponibile, questo criterio è un semplice criterio per la soglia di metriche.