Eseguire la migrazione di regole di avviso e ricevitori da Prometheus

Questa pagina descrive come eseguire la migrazione delle regole di avviso di Prometheus alle policy di avviso basate su PromQL in Cloud Monitoring. Il processo di migrazione è utile se utilizzi PromQL in ambienti esterni Google Cloud. Se esegui la migrazione delle regole di avviso di Prometheus a Cloud Monitoring, puoi gestire tutte le policy di avviso in un unico ambiente.

Per informazioni generali sulle policy di avviso basate su PromQL, consulta Panoramica degli avvisi PromQL.

Puoi anche importare dashboard Grafana. Per saperne di più, consulta Importare dashboard Grafana in Cloud Monitoring.

Come funziona la migrazione

Nella gcloud CLI, puoi eseguire la migrazione delle regole di avviso e dei destinatari 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 di Prometheus con una regola di avviso, gcloud CLI crea una criterio di avviso basata su PromQL.

    Puoi fornire più file di configurazione di Prometheus contemporaneamente per creare più criteri di avviso basati su PromQL.

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

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

    Se fornisci più file di configurazione con regole di avviso, l&#39gcloud CLId assegna ogni canale di notifica dal file Alertmanager a ogni nuovacriterio di avvisoo.

Se la regola di avviso di Prometheus fa riferimento a una metrica personalizzata, la gcloud CLI richiede undescrittore della metricaa equivalente per creare la criterio di avvisoso.

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

Mappatura campi

Gcloud CLI mappa i campi tra una regola di avviso di Prometheus e un criterio di avviso di Cloud Monitoring nel seguente modo:

Regola di avviso 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 diGoogle Cloud nelle regole di avviso Prometheus migrate

Prometheus utilizza i modelli di campi di avviso per configurare le variabili nelle annotazioni e nelle etichette delle regole di avviso. Quando esegui la migrazione delle regole di avviso di Prometheus che hanno modelli di campi di avviso, Cloud Monitoring converte i modelli in variabili di documentazione di Cloud Monitoring nel seguente modo:

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

${metric.label.value}

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

{{humanize $value}}

${metric.label.value}

Questa variabile è un'implementazione di ${metric.label.KEY}, dove 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, questa variabile viene visualizzata nella notifica come valore di ${metric.label.KEY}.
  • Se KEY è una risorsa valida, questa variabile viene visualizzata nella notifica come valore di ${resource.label.KEY}.
  • Se KEY non è un'etichetta valida 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, questa variabile viene visualizzata nella notifica come valore di ${metric.label.KEY}.
  • Se KEY è una risorsa valida, questa variabile viene visualizzata nella notifica come valore di ${resource.label.KEY}.
  • Se KEY non è un'etichetta valida né una risorsa valida, questa variabile viene visualizzata nella notifica come stringa vuota.

Esegui la migrazione di regole di avviso e ricevitori da Prometheus

Per eseguire la migrazione delle regole di avviso di Prometheus alle policy di avviso basate su PromQL di Cloud Monitoring, utilizza il comando gcloud monitoring policies migrate. Questo comando ti 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 disporre di un file di regole Prometheus YAML o JSON che contenga la regola di avviso.
  • Per eseguire la migrazione di un destinatario, devi disporre di un file YAML o JSON Prometheus Alertmanager che contenga il destinatario.

Google Cloud non supporta la migrazione delle regole di registrazione di Prometheus. Per utilizzare le regole di registrazione, ti consigliamo di utilizzare un valutatore di regole autogestito.

Creare un criterio di avviso da un file di configurazione Prometheus

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

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

Creare 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 monitoring policies migrate \
--channels-from-prometheus-alertmanager-yaml=PATH_TO_FILE

Creare criteri di avviso e canali di notifica contemporaneamente

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

gcloud 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 nel modo seguente:

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 Prometheus AlertManager che contiene 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 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 il seguente esempio:

  {
  "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"
  ]
}

Migra le 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 Rules, ClusterRules e GlobalRules.

Per eseguire la migrazione di queste risorse a una criterio di avviso basata su PromQL: Google Cloud

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

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

Ad esempio, hai la seguente risorsa personalizzata Rules:

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 delle regole di Prometheus creato copiando groups dalla risorsa personalizzata Rules precedente avrebbe il seguente aspetto:

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

Eseguire la migrazione di più risorse personalizzate di regole

Se vuoi eseguire la migrazione di più regole, CustomRules o GlobalRules, ti consigliamo di creare ed eseguire la migrazione di un file di regole separato per ogni risorsa. Per saperne di più, consulta la documentazione di Prometheus.

Gestire le espressioni di filtro e aggregazione

Le regole e le ClusterRules filtrano automaticamente le espressioni di avviso di Prometheus in base a determinate etichette. Per preservare questo comportamento nella query di unacriterio di avvisoo migrata, devi includere esplicitamente queste etichette in un filtro o in un'espressione di aggregazione nel tuo file di regole Prometheus prima di eseguire la migrazione del file.

Ad esempio, lo strumento di valutazione delle regole gestito 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 una 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 nell'ambito delle metriche. Google Cloud Per evitare questo comportamento, ti consigliamo di aggregare per etichette nella query per assicurarti che Cloud Monitoring esegua la query come previsto. Ad esempio, quando crei il file di 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, quindi confronta ogni serie temporale con la soglia di avviso di <10.Google Cloud

La tabella seguente mostra l'ordine di valutazione dei filtri delle espressioni di avviso per Rules e ClusterRules:

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

Per saperne di più sul comportamento di filtraggio nelle espressioni Prometheus, consulta Selettori di vettori istantanei.