Benachrichtigungsregeln und Empfänger von Prometheus migrieren

Auf dieser Seite wird beschrieben, wie Sie Prometheus-Benachrichtigungsregeln zu Cloud Monitoring-Benachrichtigungsrichtlinien mit einer PromQL-basierten Bedingung migrieren. Der Migrationsprozess ist nützlich, wenn Sie PromQL in Umgebungen außerhalb von Google Cloud verwenden. Wenn Sie Ihre Prometheus-Benachrichtigungsregeln zu Cloud Monitoring migrieren, können Sie alle Benachrichtigungsrichtlinien in einer Umgebung verwalten.

Allgemeine Informationen zu Benachrichtigungsrichtlinien mit PromQL-basierten Bedingungen finden Sie unter Benachrichtigungsrichtlinien mit PromQL.

Sie können auch Grafana-Dashboards importieren. Weitere Informationen finden Sie unter Grafana-Dashboards in Cloud Monitoring importieren.

Funktionsweise der Migration

In der gcloud CLI können Sie Ihre vorhandenen Benachrichtigungsregeln und Empfänger migrieren, um Cloud Monitoring-Benachrichtigungsrichtlinien und -Benachrichtigungskanäle zu erstellen. Die gcloud CLI kann folgende Arten von Migrationen ausführen:

  • Wenn Sie eine Prometheus-Konfigurationsdatei mit einer Benachrichtigungsregel bereitstellen, erstellt die gcloud CLI eine Benachrichtigungsrichtlinie mit einer PromQL-basierten Bedingung.

    Sie können mehrere Prometheus-Konfigurationsdateien gleichzeitig bereitstellen, um mehrere Benachrichtigungsrichtlinien mit einer PromQL-basierten Bedingung zu erstellen.

  • Wenn Sie eine Prometheus-Datei Alertmanager mit mindestens einem Empfänger bereitstellen, konvertiert die gcloud CLI jeden Empfänger in einen entsprechenden Benachrichtigungskanal in Monitoring.

  • Wenn Sie gleichzeitig eine Prometheus Alertmanager-Datei und eine Prometheus-Konfigurationsdatei bereitstellen, erstellt die gcloud CLI die Benachrichtigungsrichtlinie und die Benachrichtigungskanäle und verknüpft dann jeden neuen Benachrichtigungskanal mit der neuen Benachrichtigungsrichtlinie.

    Wenn Sie mehrere Konfigurationsdateien mit Benachrichtigungsregeln angeben, weist die gcloud CLI jeder neuen Benachrichtigungsrichtlinie jeden Benachrichtigungskanal aus der Alertmanager-Datei zu.

Wenn Ihre Prometheus-Benachrichtigungsregel auf einen benutzerdefinierten Messwert verweist, benötigt die gcloud CLI einen entsprechenden Messwertdeskriptor, um die Benachrichtigungsrichtlinie zu erstellen.

Prometheus-Konfigurationsdateien und Prometheus Alertmanager-Dateien müssen als gültige Prometheus-Regeldateien in YAML oder JSON formatiert sein.

Feldzuordnung

Die gcloud CLI ordnet Felder einer Prometheus-Benachrichtigungsregel und einer Cloud Monitoring-Benachrichtigungsrichtlinie so zu:

Prometheus-Benachrichtigungsregel Cloud Monitoring-Benachrichtigungsrichtlinie
alert conditionPrometheusQueryLanguage.alertRule
expr conditionPrometheusQueryLanguage.query
for conditionPrometheusQueryLanguage.duration
labels conditionPrometheusQueryLanguage.labels
annotations: "summary" documentation.subject
annotations: "description" documentation.content

Google Cloud-Dokumentationsvariablen in migrierten Prometheus-Benachrichtigungsregeln

Prometheus verwendet Vorlagen für Benachrichtigungsfelder, um Variablen in Anmerkungen und Labels von Benachrichtigungsregeln zu konfigurieren. Wenn Sie Prometheus-Benachrichtigungsregeln migrieren, die Vorlagen für Benachrichtigungsfelder enthalten, werden diese von Cloud Monitoring so in Cloud Monitoring-Dokumentationsvariablen konvertiert:

Vorlage für Prometheus-Benachrichtigungsfeld Cloud Monitoring-Dokumentationsvariable
{{$value}}

${metric.label.value}

Diese Variable ist eine Implementierung von ${metric.label.KEY}, wobei value den Wert der PromQL-Abfrage enthält.

{{humanize $value}}

${metric.label.value}

Diese Variable ist eine Implementierung von ${metric.label.KEY}, wobei value den Wert der PromQL-Abfrage enthält.

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

Wird in der Konfiguration der Benachrichtigungsrichtlinie als ${metric_or_resource.label.KEY} angezeigt.

  • Wenn KEY ein gültiges Label ist, wird diese Variable in der Benachrichtigung als Wert von ${metric.label.KEY} gerendert.
  • Wenn KEY eine gültige Ressource ist, wird diese Variable in der Benachrichtigung als Wert von ${resource.label.KEY} gerendert.
  • Wenn KEY weder ein gültiges Label noch eine gültige Ressource ist, wird diese Variable in der Benachrichtigung als leerer String gerendert.
{{humanize $labels.<key>}}

Wird in der Konfiguration der Benachrichtigungsrichtlinie als ${metric_or_resource.label.KEY} angezeigt.

  • Wenn KEY ein gültiges Label ist, wird diese Variable in der Benachrichtigung als Wert von ${metric.label.KEY} gerendert.
  • Wenn KEY eine gültige Ressource ist, wird diese Variable in der Benachrichtigung als Wert von ${resource.label.KEY} gerendert.
  • Wenn KEY weder ein gültiges Label noch eine gültige Ressource ist, wird diese Variable in der Benachrichtigung als leerer String gerendert.

Benachrichtigungsregeln und Empfänger von Prometheus migrieren

Verwenden Sie den Befehl gcloud alpha monitoring policies migrate, um Ihre Prometheus-Benachrichtigungsregeln zu Cloud Monitoring-Benachrichtigungsrichtlinien mit PromQL-basierten Bedingungen zu migrieren. Mit diesem Befehl können Sie auch Ihre Prometheus-Empfänger zu Cloud Monitoring-Benachrichtigungskanälen migrieren.

  • Zum Migrieren einer Benachrichtigungsregel benötigen Sie eine YAML- oder JSON Prometheus-Regeldatei, die die Benachrichtigungsregel enthält.
  • Zum Migrieren eines Empfängers benötigen Sie eine YAML- oder JSON Prometheus-Alertmanager-Datei, die den Empfänger enthält.

Google Cloud unterstützt die Migration von Prometheus-Aufzeichnungsregeln nicht. Wir empfehlen, für Aufzeichnungsregeln eine selbst bereitgestellte Regelauswertung zu verwenden.

Benachrichtigungsrichtlinie aus einer Prometheus-Konfigurationsdatei erstellen

Führen Sie den folgenden Befehl aus, um eine Benachrichtigungsrichtlinie aus einer Prometheus-Konfigurationsdatei zu erstellen. Sie können mehrere Benachrichtigungsrichtlinien erstellen, indem Sie mehrere Dateipfade angeben:

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

Benachrichtigungskanäle aus einer Prometheus Alertmanager-Konfigurationsdatei erstellen

Führen Sie den folgenden Befehl aus, um Benachrichtigungskanäle aus einer Konfigurationsdatei von Prometheus Alertmanager zu erstellen:

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

Gleichzeitige Erstellung von Benachrichtigungsrichtlinien und Benachrichtigungskanälen

Führen Sie den folgenden Befehl aus, um Benachrichtigungsrichtlinien aus Prometheus-Konfigurationsdateien und gleichzeitig Benachrichtigungskanäle aus einer Prometheus Alertmanager-Konfigurationsdatei zu erstellen:

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

Beispiel

Sie haben eine Prometheus-Konfigurationsdatei mit einer Benachrichtigungsregel, die eine Benachrichtigung sendet, wenn die CPU-Auslastung eine Minute lang über 75% bleibt. Die Benachrichtigungsregel ist so konfiguriert:

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%"

Außerdem haben Sie eine Prometheus AlertManager-Datei, die E-Mail-, PagerDuty- und Webhook-Empfänger enthält.

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

Führen Sie den folgenden Befehl aus, um die Benachrichtigungsrichtlinie und den Benachrichtigungskanal zu erstellen:

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

Die gcloud CLI erstellt dann eine Benachrichtigungsrichtlinie wie im folgenden Beispiel:

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

Benachrichtigungsregeln von Managed Service for Prometheus migrieren

Google Cloud konfiguriert die Auswertung verwalteter Regeln für Managed Service for Prometheus mithilfe der benutzerdefinierten Ressourcen Rules, ClusterRules und GlobalRules.

So migrieren Sie diese Ressourcen zu einer Google Cloud-Benachrichtigungsrichtlinie mit einer PromQL-basierten Bedingung:

  1. Kopieren Sie den Abschnitt groups der benutzerdefinierten Ressource in eine neue Prometheus-Regeldatei.

  2. Migrieren Sie die Regeldatei mithilfe der gcloud CLI.

Angenommen, Sie haben die folgende benutzerdefinierte Ressource für Regeln:

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

Die Prometheus-Regeldatei, die durch Kopieren von groups aus der vorherigen benutzerdefinierten Regelressource für Regeln erstellt wurde, sieht so aus:

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

Mehrere benutzerdefinierte Ressourcen für Regeln migrieren

Wenn Sie mehrere Regeln, CustomRules oder GlobalRules migrieren möchten, empfehlen wir, für jede Ressource eine separate Regeldatei zu erstellen und zu migrieren. Weitere Informationen finden Sie in der Prometheus-Dokumentation.

Filter- und Aggregationsausdrücke verwalten

Regeln und ClusterRules filtern ihre Prometheus-Benachrichtigungsausdrücke automatisch anhand bestimmter Labels. Damit dieses Verhalten in der Abfrage einer migrierten Benachrichtigungsrichtlinie beibehalten wird, müssen Sie diese Labels explizit in einen Filter oder Aggregationsausdruck in Ihrer Prometheus-Regeldatei aufnehmen, bevor Sie die Datei migrieren.

Die Evaluierung verwalteter Regeln für Managed Service for Prometheus führt beispielsweise den Ausdruck sum(up) < 10 so aus:

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

Enthält eine Benachrichtigungsrichtlinie jedoch die PromQL-Abfrage sum(up) < 10, führt Cloud Monitoring die Abfrage nur als sum(up) < 10 aus. Diese Abfrage wird auf alle Google Cloud-Projekte, -Cluster und -Namespaces in Ihrem Messwertbereich angewendet. Um dies zu vermeiden, empfehlen wir, die Abfrage nach Labels zu aggregieren, damit Cloud Monitoring die Abfrage wie vorgesehen ausführt. Wenn Sie beispielsweise die Regeldatei aus der benutzerdefinierten Regelressource erstellen, können Sie sum(up) < 10 in den folgenden Ausdruck ändern:

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

Der vorherige Ausdruck generiert eine separate Zeitachse für jedes Google Cloud-Projekt, jeden Cluster und jeden Namespace und vergleicht dann jede Zeitachse mit dem Benachrichtigungsgrenzwert von <10.

Die folgende Tabelle zeigt die Reihenfolge der Auswertung von Benachrichtigungsausdrucksfiltern für Regeln und ClusterRules:

Ressourcentyp der Regel Labels filtern
Regel
  1. project_id
  2. cluster
  3. namespace
ClusterRule
  1. project_id
  2. cluster

Weitere Informationen zum Filterverhalten in Prometheus-Ausdrücken finden Sie unter Instant-Vektorselektoren.