Esegui la migrazione delle regole di avviso e dei ricevitori da Prometheus

Questa pagina descrive come eseguire la migrazione delle regole di avviso di Prometheus ai criteri di avviso di Cloud Monitoring con una condizione basata su PromQL. Il processo di migrazione è utile se utilizzi PromQL in ambienti esterni a Google Cloud. Eseguendo la migrazione delle regole di avviso di Prometheus a Cloud Monitoring, puoi gestire tutti i criteri di avviso in un unico ambiente.

Per informazioni generali sui criteri di avviso con condizioni basate su PromQL, consulta Criteri di avviso con PromQL.

Puoi anche importare le dashboard di Grafana. Per maggiori informazioni, consulta Importare le dashboard di Grafana in Cloud Monitoring.

Come funziona la migrazione

In gcloud CLI, puoi eseguire la migrazione delle regole di avviso e dei ricevitori esistenti per creare criteri di avviso e canali di notifica di Cloud Monitoring. Gcloud CLI può eseguire i seguenti tipi di migrazione:

  • Se fornisci un file di configurazione Prometheus con una regola di avviso, gcloud CLI crea un criterio di avviso con una condizione basata su PromQL.

    Puoi fornire più file di configurazione di Prometheus contemporaneamente per creare più criteri di avviso con una condizione basata su PromQL.

  • Se fornisci un file Prometheus Alertmanager con almeno un ricevitore, gcloud CLI converte ogni ricevitore in un canale di notifica equivalente in Monitoring.

  • Se fornisci un file Alertmanager di Prometheus e un file di configurazione di Prometheus contemporaneamente, gcloud CLI crea il criterio di avviso e i canali di notifica, quindi associa ogni nuovo canale di notifica al nuovo criterio di avviso.

    Se fornisci più file di configurazione con regole di avviso, gcloud CLI assegna ogni canale di notifica dal file Alertmanager a ogni nuovo criterio di avviso.

Se la regola di avviso di Prometheus fa riferimento a una metrica personalizzata, l'gcloud CLI richiede un descrittore della metrica equivalente per creare il criterio di avviso.

I file di configurazione Prometheus e i file Alertmanager Prometheus devono essere formattati come file di regole Prometheus validi in YAML o JSON.

Mappatura campi

L'interfaccia a riga della gcloud CLI mappa i campi tra una regola di avviso di Prometheus e un criterio di avviso di Cloud Monitoring come segue:

Regola di avviso di Prometheus Criterio di avviso di Cloud Monitoring
alert conditionPrometheusQueryLanguage.alertRule
expr conditionPrometheusQueryLanguage.query
for conditionPrometheusQueryLanguage.duration
labels conditionPrometheusQueryLanguage.labels
annotations: "summary" documentation.subject
annotations: "description" documentation.content

Variabili della documentazione di Google Cloud nelle regole di avviso di Prometheus migrate

Prometheus utilizza modelli di campi di avviso per configurare variabili nelle annotazioni e nelle etichette delle regole di avviso. Quando esegui la migrazione delle regole di avviso di Prometheus dotate di modelli di campi di avviso, Cloud Monitoring li converte in variabili di documentazione di Cloud Monitoring come segue:

Modello di campo di avviso Prometheus Variabile della documentazione di Cloud Monitoring
{{$value}}

${metric.label.value}

Questa variabile è un'implementazione di ${metric.label.KEY}, in cui value contiene il valore della query PromQL.

{{humanize $value}}

${metric.label.value}

Questa variabile è un'implementazione di ${metric.label.KEY}, in cui value contiene il valore della query PromQL.

{{$labels}} ${metric_or_resource.labels}
{{humanize $labels}} ${metric_or_resource.labels}
{{$labels.key}}

Viene visualizzato come ${metric_or_resource.label.KEY} nella configurazione della documentazione criterio di avviso.

  • Se KEY è un'etichetta valida, nella notifica viene visualizzata la variabile come valore ${metric.label.KEY}.
  • Se KEY è una risorsa valida, questa variabile viene visualizzata nella notifica come il valore ${resource.label.KEY}.
  • Se KEY non è né un'etichetta né una risorsa valida, questa variabile viene visualizzata nella notifica come stringa vuota.
{{humanize $labels.<key>}}

Viene visualizzato come ${metric_or_resource.label.KEY} nella configurazione della documentazione criterio di avviso.

  • Se KEY è un'etichetta valida, nella notifica viene visualizzata la variabile come valore ${metric.label.KEY}.
  • Se KEY è una risorsa valida, questa variabile viene visualizzata nella notifica come il valore ${resource.label.KEY}.
  • Se KEY non è né un'etichetta né una risorsa valida, questa variabile viene visualizzata nella notifica come stringa vuota.

Esegui la migrazione delle regole di avviso e dei ricevitori da Prometheus

Per eseguire la migrazione delle regole di avviso di Prometheus ai criteri di avviso di Cloud Monitoring con condizioni basate su PromQL, utilizza il comando gcloud alpha monitoring policies migrate. Questo comando consente anche di eseguire la migrazione dei ricevitori Prometheus ai canali di notifica di Cloud Monitoring.

  • Per eseguire la migrazione di una regola di avviso, devi avere un file delle regole di Prometheus YAML o JSON contenente la regola di avviso.
  • Per eseguire la migrazione di un ricevitore, devi disporre di un file Alertmanager o YAML o JSON Prometheus di Prometheus che contiene il ricevitore.

Google Cloud non supporta la migrazione delle regole di registrazione di Prometheus. Per utilizzare le regole di registrazione, consigliamo di usare un valutatore delle regole con deployment autonomo.

Crea un criterio di avviso da un file di configurazione di Prometheus

Per creare un criterio di avviso da un file di configurazione di Prometheus, esegui questo comando. Puoi creare più criteri di avviso fornendo più percorsi di file:

gcloud alpha monitoring policies migrate \
--policies-from-prometheus-alert-rules-yaml=PATH_TO_FILE_1,PATH_TO_FILE_2

Creazione di canali di notifica da un file di configurazione di Prometheus Alertmanager

Per creare canali di notifica da un file di configurazione di Prometheus Alertmanager, esegui questo comando:

gcloud alpha monitoring policies migrate \
--channels-from-prometheus-alertmanager-yaml=PATH_TO_FILE

Crea criteri di avviso e canali di notifica contemporaneamente

Per creare criteri di avviso dai file di configurazione di Prometheus e contemporaneamente creare canali di notifica da un file di configurazione di Prometheus Alertmanager, esegui questo comando:

gcloud alpha monitoring policies migrate \
--policies-from-prometheus-alert-rules-yaml=PATH_TO_FILE_1,PATH_TO_FILE_2 \
--channels-from-prometheus-alertmanager-yaml=PATH_TO_FILE

Esempio

Hai un file di configurazione Prometheus con una regola di avviso che invia un avviso quando l'utilizzo della CPU rimane superiore al 75% per un minuto. La regola di avviso è configurata come segue:

groups:
- name: Utilization_Alerts
  interval: 30s
  rules:
  - alert: CPU_Utilization_Over_75
    expr: compute_googleapis_com:instance_cpu_utilization > 75
    for: 60s
    labels:
      severity: page
    annotations:
      subject: "Subject: ${metric.label.value}"
      description: "CPU utilization is over 75%"

Hai anche un file AlertManager di Prometheus contenente i destinatari di email, PagerDuty e webhook.

receivers:
- name: 'team-emails'
  email_configs:
  - to: EMAIL_ADDRESS
- name: 'team-pager'
  pagerduty_configs:
  - service_key: SERVICE_KEY
- name: 'team-webhook'
  webhook_configs:
  - url: WEBHOOK_ADDRESS

Per creare il criterio di avviso e il canale di notifica, esegui questo comando:

gcloud alpha monitoring policies migrate \
--policies-from-prometheus-alert-rules-yaml=PATH_TO_CONFIG_FILE \
--channels-from-prometheus-alertmanager-yaml=PATH_TO_ALERTMANAGER_FILE

Gcloud CLI crea quindi un criterio di avviso come nell'esempio seguente:

  {
  "name": "projects/PROJECT_ID/alertPolicies/POLICY_ID",
  "displayName": "Utilization_Alerts/CPU_Utilization_Over_75",
  "documentation": {
    "content": "CPU utilization is over 75%",
    "mimeType": "text/markdown",
    "subject": "Subject: ${metric.label.value}"
  },
  "userLabels": {},
  "conditions": [
    {
      "name": "projects/PROJECT_ID/alertPolicies/POLICY_ID/conditions/CONDITION_ID",
      "displayName": "CPU_Utilization_Over_75"
      "conditionPrometheusQueryLanguage": {
        "alertRule": "CPU_Utilization_Over_75",
        "duration": "60s",
        "evaluationInterval": "30s",
        "labels": {
          "severity": "page"
        },
        "query": "compute_googleapis_com:instance_cpu_utilization > 75",
        "ruleGroup": "Utilization_Alerts"
      }
    }
  ],
  "alertStrategy": {},
  "combiner": "OR",
  "enabled": true,
  "notificationChannels": [
    "projects/google.com:PROJECT_ID/notificationChannels/CHANNEL_ID_1",
    "projects/google.com:PROJECT_ID/notificationChannels/CHANNEL_ID_2",
    "projects/google.com:PROJECT_ID/notificationChannels/CHANNEL_ID_3"
  ]
}

Esegui la migrazione delle regole di avviso da Managed Service per Prometheus

Google Cloud configura la valutazione delle regole gestite per Managed Service per Prometheus utilizzando le risorse personalizzate Regole, ClusterRules e GlobalRules.

Per eseguire la migrazione di queste risorse a un criterio di avviso di Google Cloud con una condizione basata su PromQL, segui questi passaggi:

  1. Copia la sezione groups della risorsa personalizzata in un nuovo file delle regole di Prometheus.

  2. Esegui la migrazione del file delle regole utilizzando gcloud CLI.

Ad esempio, hai la seguente risorsa personalizzata Regole:

apiVersion: monitoring.googleapis.com/v1
kind: Rules
metadata:
  namespace: NAMESPACE_NAME
  name: example-rules
spec:
  groups:
  - name: example
    interval: 30s
    rules:
    - alert: FewerThanTenInstancesUp
      expr: sum(up) < 10

Il file di regole di Prometheus creato copiando groups dalla precedente risorsa personalizzata Regole sarebbe simile al seguente:

  groups:
  - name: example
    interval: 30s
    rules:
    - alert: FewerThanTenInstancesUp
      expr: sum(up) < 10

Esegui la migrazione di più risorse personalizzate delle regole

Se vuoi eseguire la migrazione di più regole, CustomRules o GlobalRules, ti consigliamo di costruire e migrare un file di regole separato per ogni risorsa. Per ulteriori informazioni, consulta la documentazione di Prometheus.

Gestire le espressioni di filtro e di aggregazione

Le regole e ClusterRules filtrano automaticamente le relative espressioni di avviso di Prometheus in base a determinate etichette. Per mantenere questo comportamento nella query di un criterio di avviso di cui è stata eseguita la migrazione, devi includere esplicitamente queste etichette in un'espressione di filtro o di aggregazione nel file delle regole di Prometheus prima di eseguire la migrazione del file.

Ad esempio, il valutatore delle regole gestite per Managed Service per Prometheus esegue l'espressione sum(up) < 10 nel seguente modo:

sum(up{project_id="test-project", cluster="test-cluster", namespace="NAMESPACE_NAME"}) < 10

Tuttavia, se un criterio di avviso ha la query PromQL sum(up) < 10, Cloud Monitoring esegue la query solo come sum(up) < 10. Questa query viene applicata a ogni progetto, cluster e spazio dei nomi Google Cloud nell'ambito delle metriche. Per evitare questo comportamento, ti consigliamo di aggregare in base alle etichette nella query, in modo che Cloud Monitoring esegua la query come previsto. Ad esempio, quando crei il file delle regole dalla risorsa personalizzata Regole, puoi modificare sum(up) < 10 nella seguente espressione:

sum (up) by (project_id, cluster, namespace) < 10

L'espressione precedente genera una serie temporale separata per ogni progetto, cluster e spazio dei nomi di Google Cloud, quindi confronta ogni serie temporale con la soglia di avviso di <10.

La tabella seguente mostra l'ordine di valutazione dei filtri di espressione degli avvisi per regole e ClusterRules:

Tipo di risorsa regola Filtra etichette
Regola
  1. project_id
  2. cluster
  3. namespace
ClusterRule
  1. project_id
  2. cluster

Per ulteriori informazioni sul comportamento dei filtri nelle espressioni di Prometheus, consulta Selettori di vettori istantanei.