Criteri di esempio in JSON

Questo documento fornisce esempi di criteri di avviso. Gli esempi sono scritti in JSON e usano i filtri di Monitoring. Puoi creare in formato JSON o YAML, a prescindere dal fatto che tu definisca il criterio tramite utilizzando i filtri di Monitoring o Monitoring Query Language (MQL). Google Cloud CLI può leggere e scrivere sia JSON che YAML, mentre l'API REST può in formato JSON.

Per esempi di criteri di avviso che utilizzano MQL, consulta quanto segue documenti:

Per informazioni su come configurare i campi dei criterio di avviso, consulta seguenti:

Genera YAML per i criteri esistenti

Per generare le rappresentazioni YAML dei tuoi criteri di avviso esistenti, utilizza Comando gcloud alpha monitoring policies list per elencare le e i gcloud alpha monitoring policies describe per stampare il criterio.

Per generare le rappresentazioni YAML dei tuoi canali di notifica esistenti, utilizza Comando gcloud alpha monitoring channels list per elencare le canali e il gcloud alpha monitoring channels describe per stampare la configurazione del canale.

Se non includi il flag --format nei comandi Google Cloud CLI, il formato predefinito 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

a generare rappresentazioni JSON dei criteri di avviso esistenti. e canali di notifica, esegui una delle seguenti operazioni:

Esempi di criteri

Come mostrato nell'esempio di backup/ripristino, puoi utilizzare le norme salvate per creare nuove copie di tali norme.

Puoi utilizzare un criterio salvato in un progetto per crearne uno nuovo o simile in un altro progetto. Tuttavia, devi prima apportare le seguenti modifiche in un copia della norma salvata:

  • Rimuovi i seguenti campi da tutti i canali di notifica:
    • name
    • verificationStatus
  • Crea canali di notifica prima di fare riferimento ai canali negli avvisi (sono necessari i nuovi identificatori di canale).
  • Rimuovi i seguenti campi da tutti i criteri di avviso che stai ricreando:
    • name
    • condition.name
    • creationRecord
    • mutationRecord

Le norme descritte in questo documento sono organizzate utilizzando la stessa terminologia che Il monitoraggio nella console Google Cloud utilizza, ad esempio, le "norme sul tasso di variazione" e esistono due tipi di condizioni:

  • Una condizione di soglia; per 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 ulteriori informazioni, consulta la pagina di riferimento per Condition.

Puoi creare molti di questi criteri manualmente, utilizzando la console Google Cloud, ma alcune possono essere create solo con l'API Monitoring. Per ulteriori informazioni informazioni, consulta Creare un criterio di avviso (UI) oppure Crea criteri di avviso utilizzando l'API.

Criterio soglia metrica

Un criterio di soglia delle metriche rileva quando un valore supera un confine predeterminato. I criteri di soglia consentono di sapere che si sta avvicinando a un punto importante, quindi puoi intraprendere qualche azione. Ad esempio, la condizione per un criterio di soglia della metrica è soddisfatta se lo spazio disponibile su disco è inferiore al 10% dello spazio totale su disco.

Il seguente criterio di avviso utilizza l'utilizzo medio della CPU come indicatore del l'integrità di un gruppo di VM. La condizione del criterio è soddisfatta quando la CPU media delle VM in un progetto, misurato in intervalli di 60 secondi, supera una soglia dell'utilizzo del 90% 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"
                        ],
                        "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 metrica

Una condizione di assenza metrica viene soddisfatta quando non vengono scritti dati in una metrica nell'intervallo di tempo definito in base al campo duration.

Un modo per dimostrarlo è creare una metrica personalizzata.

Di seguito è riportato un descrittore di esempio per una metrica personalizzata. Potresti creare 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 la panoramica delle metriche definite dall'utente.

La condizione nel seguente criterio di avviso viene soddisfatta quando i dati non vengono più scritti per un periodo di circa un'ora: in altre parole, la tua metrica non è stato possibile eseguire la pipeline. Tieni presente che la condizione qui usata è 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 è soddisfatta quando si verifica quanto segue:

  • Tutte le previsioni per una serie temporale sono le stesse all'interno dell'intervallo di tempo definita dal campo duration.
  • Cloud Monitoring prevede che le serie temporali violeranno la soglia entro l'orizzonte di previsione.

Una condizione di previsione è una condizione di soglia della metrica configurata per utilizzare la previsione. Come illustrato nell'esempio seguente, queste condizioni includi un campo forecastOptions che abilita la previsione e specifica 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
          }
        }
      }
    ],
}

Criterio di tasso di variazione

Le condizioni di tasso di variazione vengono soddisfatte quando i valori di una serie temporale aumentano, o una diminuzione pari almeno alla percentuale specificata dalla soglia. Quando crei questo tipo di condizione, il calcolo della percentuale di modifica viene applicato alla serie temporale 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 dell'inizio del periodo di allineamento. Non puoi modificare la finestra di 10 minuti utilizzata per i confronti in un criterio di avviso relativo al tasso di variazione. Tuttavia, devi specificare l'allineamento periodo in cui crei la condizione.

Questo criterio di avviso monitora se l'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
         }
      }
    }
  ],
}

Criterio di aggregazione dei gruppi

Questo criterio di avviso monitora se l'utilizzo medio della CPU 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"
                        ]
                    },
                    {
                        "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 l'Explorer API nel riferimento project.groups.list .

Criterio di controllo di uptime

Lo stato dei controlli di uptime viene visualizzato nella pagina Controlli di uptime, ma configurare un criterio di avviso in modo che Cloud Monitoring ti invii una 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. Il criterio di avviso verifica la disponibilità ogni 5 minuti.

Il controllo di uptime è stato creato con la console Google Cloud. Il file JSON una rappresentazione grafica è stata creata elencando i controlli di uptime nel utilizzando l'API Monitoring; vedi 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, consulta il controllo di uptime dal suo UPTIME_CHECK_ID. Questo ID viene impostato al momento della creazione del controllo. appare come ultimo componente del campo name ed è visibile nella UI come Check ID nel riepilogo della configurazione. Se utilizzano l'API Monitoring, Il metodo uptimeCheckConfigs.create restituisce l'ID.

L'ID deriva da displayName, che in questo caso è stato impostato nella UI. Per verificare la verifica, elenca i controlli di uptime e osserva la name valore.

L'ID del controllo di uptime descritto in precedenza è uptime-check-for-google-cloud-site.

La condizione del criterio di avviso seguente è soddisfatta se il controllo di uptime o se il certificato SSL sul sito Google Cloud scadrà tra meno di 15 giorni. Se è soddisfatta, Monitoring 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 nella condizione specifica la metrica monitorata per tipo e etichetta. I tipi di metriche 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 monitorato. In questo esempio, il campo dell'etichetta check_id contiene l'ID del controllo di uptime.

AND metric.label.check_id=\"uptime-check-for-google-cloud-site\"

Per saperne di più, consulta Filtri di Monitoring.

Politiche sull’integrità dei processi

Un criterio di integrità dei processi può avvisarti se il numero di processi che corrispondono a un pattern superano una soglia. Può essere usato per capire all'utente, ad esempio, che un processo è stato interrotto.

Questo criterio di avviso fa sì che Monitoring invii una notifica a il canale di notifica specificato quando non è stato eseguito alcun processo corrispondente alla stringa nginx, in esecuzione come utente www disponibili per 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, consulta Integrità dei processi.

Rapporto metrica

Ti consigliamo di utilizzare Monitoring Query Language (MQL) per creare avvisi basati sul rapporto criteri. Sebbene l'API Cloud Monitoring supporti la creazione di alcuni rapporti basati su filtri, MQL offre un ambiente più flessibile soluzione:

Questa sezione descrive un rapporto basato su filtro. Con l'API, puoi creare e visualizzare un criterio che calcola il rapporto tra due metriche correlate e si attiva quando questo rapporto supera una soglia. I correlati le metriche devono avere lo stesso elemento MetricKind. Ad esempio: puoi creare un criterio di avviso basato su un rapporto se entrambe le metriche sono metriche di indicatore. Per determinare il MetricKind di un tipo di metrica, consulta le Elenco delle metriche:

Una condizione di rapporto è una variante in una condizione metrica-soglia, in cui la condizione in un criterio di rapporto utilizza due filtri: il solito filter, che funge da numeratore del rapporto e denominatorFilter, che funge da denominatore del rapporto.

Le serie temporali di entrambi i filtri devono essere aggregate nello stesso modo, il calcolo del rapporto dei valori è significativo. La condizione del criterio di avviso è soddisfatta quando il rapporto dei filtri viola un valore di soglia per l'intervallo di tempo definito campo duration.

La sezione successiva descrive come configurare un criterio di avviso Monitora il rapporto tra le risposte di errore HTTP e tutte le risposte HTTP.

Rapporto errori HTTP

Il seguente criterio di avviso ha una condizione di soglia basata sul rapporto tra il numero di risposte di errore HTTP rispetto al 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
                }
            }
        }
    ]
}

Le metriche e i tipi di 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 per il richiesta. Questo criterio filtra i dati delle serie temporali in questa etichetta, in modo che possa determinare quanto segue:
    • Il numero di risposte ricevute.
    • Il numero di risposte di errore ricevute.
    • Il rapporto tra le risposte di errore e tutte le risposte.
  • loading, un valore booleano che indica se la richiesta è in fase di caricamento. L'etichetta loading non è pertinente in questo criterio di avviso.

Il criterio di avviso valuta i dati di risposta delle app di App Engine, ovvero i dati provenienti dal tipo di risorsa monitorata gae_app. Questo 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 queste metriche e sui tipi di risorse monitorate, consulta Metriche App Engine nell'elenco di metriche e Voce gae_app nell'elenco delle risorse monitorate.

Cosa comporta queste norme

Questa condizione calcola il rapporto tra le risposte di errore e le risposte totali. La condizione è soddisfatta se il rapporto è superiore al 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 violano le norme raggruppando le serie temporali in ogni filtro in base ai valori le etichette.

  • Il filtro nella condizione esamina le risposte HTTP da un'app di App Engine e seleziona le risposte nell'intervallo di errore 5xx. Questo è il numeratore nel rapporto.
  • Il filtro denominatore nella condizione esamina tutte le risposte HTTP da di un'app di App Engine.

La condizione è soddisfatta e Monitoring invia una notifica per immediatamente un nuovo incidente; l'intervallo di tempo consentito per il campo duration nella condizione è zero secondi. Questa condizione utilizza un conteggio di trigger pari a 1, ovvero il numero di serie temporali che devono violare la condizione per causare l'incidente. Per un'app di App Engine con un solo servizio, un trigger conteggio di uno va bene. Se hai un'app con 20 servizi e vuoi causare un incidente se tre o più servizi violano la condizione, utilizza un conteggio di trigger 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 nel numeratore corrisponde ai codici di risposta nel intervallo di errori e il filtro delle condizioni nel denominatore corrisponde a tutti i codici di risposta. Le seguenti clausole compaiono solo nella condizione di 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 nello stesso modo per rende valido il calcolo del rapporto. Ciascun filtro può raccogliere più serie temporali, in quanto ci saranno serie temporali diverse per ogni combinazione di valori per le etichette. Questo criterio raggruppa l'insieme di serie temporali in base a quanto specificato etichette delle risorse, che suddividono l'insieme di serie temporali in un di gruppi. Alcune serie temporali di ogni gruppo corrispondono al filtro del numeratore; le altre corrispondono al filtro denominatore.

Per calcolare un rapporto, l'insieme di serie temporali corrispondente a ciascun filtro deve essere aggregate per una singola serie temporale. In questo modo, ogni gruppo avrà due serie temporali, una per il numeratore e una per il denominatore. Poi, il rapporto tra i punti nel numeratore e nella serie temporale del denominatore in ogni gruppo possono essere calcolati.

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 che calcolano ALIGN_DELTA sui valori nel periodo di allineamento di 5 minuti. Questo allineatore restituisce il numero di risposte che corrispondono a un numero intero a 64 bit nel periodo di allineamento.

  • Le serie temporali all'interno di ogni filtro vengono raggruppate anche in base ai valori di le etichette delle risorse per modulo e versione, quindi ogni gruppo contiene due insiemi di serie temporali allineate, quelli che corrispondono al filtro del numeratore corrispondenti al filtro denominatore.

  • Le serie temporali all'interno di ogni gruppo che corrisponde al numeratore o al denominatore vengono aggregati per un'unica volta sommando i valori singole serie temporali utilizzando il riduttore di più serie REDUCER_SUM. Il risultato sarà una serie temporale per il numeratore e una per denominatore, ciascuna delle quali riporta il numero di risposte per tutte le corrispondenze serie temporali nel periodo allineamento.

Il criterio quindi calcola le serie temporali del numeratore e del denominatore che rappresenta ciascun gruppo, il rapporto dei valori. La condizione per l'avviso viene soddisfatta quando il rapporto è superiore al 50%.