Benachrichtigungsregeln und Empfänger von Prometheus migrieren

Auf dieser Seite wird beschrieben, wie Sie Prometheus-Benachrichtigungsregeln zu Cloud Monitoring migrieren Benachrichtigungsrichtlinien mit einer PromQL-basierten Bedingung. Der Migrationsprozess ist nützlich, wenn Sie PromQL in Umgebungen außerhalb von Google Cloud verwenden. Durch Migration Prometheus-Benachrichtigungsregeln an Cloud Monitoring anpassen, für Ihre Benachrichtigungsrichtlinien in einer Umgebung.

Allgemeine Informationen zu Benachrichtigungsrichtlinien mit PromQL-basierten 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 bestehenden Benachrichtigungsregeln und Empfänger um Cloud Monitoring-Benachrichtigungsrichtlinien und Benachrichtigungskanäle zu erstellen. Mit der gcloud CLI können die folgenden Migrationstypen ausgeführt werden:

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

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

  • Wenn Sie ein Prometheus-Gerät Benachrichtigungsmanager mit mindestens einem Empfänger, konvertiert die gcloud CLI Empfänger einem entsprechenden Benachrichtigungskanal in Monitoring zu.

  • Wenn Sie eine Prometheus Alertmanager-Datei und eine Prometheus-Konfigurationsdatei, erstellt die gcloud CLI die Benachrichtigungsrichtlinie und und verknüpft dann jeden neuen Benachrichtigungskanal mit dem neuen Benachrichtigungsrichtlinie

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

Wenn Ihre Prometheus-Benachrichtigungsregel auf einen benutzerdefinierten Messwert verweist, hat der Gcloud CLI ist zum Erstellen ein entsprechender Messwertdeskriptor erforderlich der Benachrichtigungsrichtlinie.

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

Feldzuordnung

Die gcloud CLI ordnet Felder zwischen Prometheus-Benachrichtigungen zu und einer Cloud Monitoring-Benachrichtigungsrichtlinie wie folgt:

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 Benachrichtigungen zum Konfigurieren von Variablen in Anmerkungen und Labels für Benachrichtigungsregeln. Wenn Sie Prometheus-Benachrichtigungsregeln migrieren mit Vorlagen für Benachrichtigungsfelder, konvertiert Cloud Monitoring diese in Cloud Monitoring-Dokumentationsvariablen so:

Vorlage für Prometheus-Benachrichtigungsfeld Variable für die Cloud Monitoring-Dokumentation
{{$value}}

${metric.label.value}

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

{{humanize $value}}

${metric.label.value}

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

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

Wird in der Konfiguration der Dokumentation 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 Dokumentation 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

So migrieren Sie Ihre Prometheus-Benachrichtigungsregeln zu Cloud Monitoring-Benachrichtigungsrichtlinien für PromQL-basierte Bedingungen gcloud alpha monitoring policies migrate-Befehl. Mit diesem Befehl können Sie auch Prometheus-Empfänger zu Cloud Monitoring migrieren Benachrichtigungskanäle.

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

Google Cloud unterstützt die Migration von Prometheus nicht Aufzeichnungsregeln fest. Für Aufnahmeregeln empfehlen wir eine selbst bereitgestellten Regelauswerter.

Benachrichtigungsrichtlinie aus einer Prometheus-Konfigurationsdatei erstellen

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

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

So erstellen Sie Benachrichtigungskanäle aus einer Prometheus Alertmanager-Konfiguration den folgenden Befehl aus:

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

Benachrichtigungsrichtlinien und -kanäle gleichzeitig erstellen

Um Benachrichtigungsrichtlinien aus Prometheus-Konfigurationsdateien zu erstellen und Benachrichtigungskanäle über eine Prometheus Alertmanager-Konfiguration erstellen und führen Sie den folgenden Befehl aus:

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, wenn die CPU-Auslastung eine Minute lang über 75% liegt. Die Benachrichtigungsregel 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%"

Sie haben auch eine Prometheus AlertManager-Datei, die Folgendes enthält: E-Mail-, PagerDuty- und Webhook-Empfängern.

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 folgenden Befehl aus, um die Benachrichtigungsrichtlinie und den Benachrichtigungskanal zu erstellen: Befehl:

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 die folgendes 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 Auswertung verwalteter Regeln für Managed Service for Prometheus mithilfe der Regeln, ClusterRules und GlobalRules.

So migrieren Sie diese Ressourcen zu einer Google Cloud-Benachrichtigungsrichtlinie mit einem Führen Sie die folgenden Schritte aus:

  1. Kopieren Sie den Abschnitt groups der benutzerdefinierten Ressource in einen 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 den vorherigen Regeln erstellt wurde würde so aussehen:

  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, eine separate Regeldatei für jede . Weitere Informationen finden Sie in der Prometheus-Dokumentation

Filter- und Aggregationsausdrücke verwalten

Regeln und ClusterRules filtern automatisch ihre Prometheus-Benachrichtigungen Ausdrücke, die auf bestimmten Labels basieren. Um die E-Mail-Adresse in der Abfrage einer migrierten müssen Sie diese Labels explizit in einen Filter oder Aggregationsausdruck in Ihrem Prometheus-Regeldatei vor der Migration.

Beispiel: Evaluator verwalteter Regeln für Managed Service for Prometheus führt 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: Cloud Monitoring führt die Abfrage nur so aus, sum(up) < 10 Diese Abfrage wird auf alle Google Cloud-Projekte, Cluster und Namespace in Ihrem Messwertbereich. Um dies zu verhindern, Sie werden nach Labels in der Abfrage aggregiert, um sicherzustellen, dass Cloud Monitoring wie beabsichtigt. Wenn Sie beispielsweise Ihre Regeldatei aus der Benutzerdefinierte Ressource von Regeln, können Sie sum(up) < 10 folgendermaßen ändern: Ausdruck:

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

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

In der folgenden Tabelle sehen Sie die Reihenfolge der Auswertung von Benachrichtigungsausdrucksfiltern für Regeln und ClusterRules:

Ressourcentyp der Regel Filterlabels
Regel
  1. project_id
  2. cluster
  3. namespace
ClusterRule
  1. project_id
  2. cluster

Weitere Informationen zum Filterverhalten in Prometheus-Ausdrücken Weitere Informationen finden Sie unter Sofortige Vektorauswahl.