Auf dieser Seite wird beschrieben, wie Sie Prometheus-Benachrichtigungsregeln zu PromQL-basierten Benachrichtigungsrichtlinien in Cloud Monitoring migrieren. Der Migrationsprozess ist nützlich, wenn Sie PromQL in Umgebungen außerhalb von Google Cloudverwenden. Wenn Sie Ihre Prometheus-Benachrichtigungsregeln zu Cloud Monitoring migrieren, können Sie alle Benachrichtigungsrichtlinien in einer einzigen Umgebung verwalten.
Allgemeine Informationen zu PromQL-basierten Benachrichtigungsrichtlinien finden Sie unter PromQL-Benachrichtigungen – Übersicht.
Sie können auch Grafana-Dashboards importieren. Weitere Informationen finden Sie unter Grafana-Dashboards in Cloud Monitoring importieren.
Funktionsweise der Migration
Mit der gcloud CLI können Sie Ihre vorhandenen Benachrichtigungsregeln und ‑empfänger migrieren, um Cloud Monitoring-Benachrichtigungsrichtlinien und ‑kanäle zu erstellen. Mit der gcloud CLI können Sie die folgenden Migrationstypen ausführen:
Wenn Sie eine Prometheus-Konfigurationsdatei mit einer Benachrichtigungsregel angeben, wird mit der gcloud CLI eine PromQL-basierte Benachrichtigungsrichtlinie erstellt.
Sie können mehrere Prometheus-Konfigurationsdateien gleichzeitig angeben, um mehrere PromQL-basierte Benachrichtigungsrichtlinien zu erstellen.
Wenn Sie eine Prometheus-Alertmanager mit mindestens einem Empfänger angeben, wandelt die gcloud CLI jeden Empfänger in einen entsprechenden Benachrichtigungskanal in Monitoring um.
Wenn Sie gleichzeitig eine Prometheus Alertmanager-Datei und eine Prometheus-Konfigurationsdatei angeben, 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 jedem Benachrichtigungskanal aus der Alertmanager-Datei eine neue Benachrichtigungsrichtlinie zu.
Wenn Ihre Prometheus-Benachrichtigungsregel auf einen benutzerdefinierten Messwert verweist, ist für die Erstellung der Benachrichtigungsrichtlinie ein entsprechender Messwertdeskriptor erforderlich.
Prometheus-Konfigurationsdateien und Prometheus AlertManager-Dateien müssen als gültige Prometheus-Regeldateien im YAML- oder JSON-Format formatiert sein.
Feldzuordnung
Die gcloud CLI ordnet Felder zwischen 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 -Dokumentation zu Variablen in migrierten Prometheus-Benachrichtigungsregeln
In Prometheus werden Vorlagen für Benachrichtigungsfelder verwendet, um Variablen in Anmerkungen und Labels von Benachrichtigungsregeln zu konfigurieren. Wenn Sie Prometheus-Benachrichtigungsregeln mit Vorlagen für Benachrichtigungsfelder migrieren, werden die Vorlagen in Cloud Monitoring wie unten beschrieben in Dokumentationsvariablen konvertiert:
Vorlage für Prometheus-Benachrichtigungsfelder | Variable in der Cloud Monitoring-Dokumentation |
---|---|
{{$value}} |
Diese Variable ist eine Implementierung von |
{{humanize $value}} |
Diese Variable ist eine Implementierung von |
{{$labels}} |
${metric_or_resource.labels} |
{{humanize $labels}} |
${metric_or_resource.labels} |
{{$labels.key}} |
Wird in der Dokumentation zur Konfiguration der Benachrichtigungsrichtlinie als
|
{{humanize $labels.<key>}} |
Wird in der Dokumentation zur Konfiguration der Benachrichtigungsrichtlinie als
|
Benachrichtigungsregeln und ‑empfänger aus Prometheus migrieren
Verwenden Sie den Befehl gcloud alpha monitoring policies
migrate
, um Ihre Prometheus-Benachrichtigungsregeln zu Cloud Monitoring-PromQL-basierten Benachrichtigungsrichtlinien 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-Regelndatei, die die Benachrichtigungsregel enthält.
Wenn Sie einen Empfänger migrieren möchten, benötigen Sie eine YAML- oder JSON-Prometheus-Alertmanager-Datei, die den Empfänger enthält.
Google Cloud unterstützt nicht die Migration von Prometheus-Aufzeichnungsregeln. Für die Verwendung von Aufzeichnungsregeln empfehlen wir eine selbst bereitgestellte Regelauswertefunktion.
Benachrichtigungsrichtlinie aus einer Prometheus-Konfigurationsdatei erstellen
Führen Sie 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 Prometheus Alertmanager-Konfigurationsdatei zu erstellen:
gcloud alpha monitoring policies migrate \ --channels-from-prometheus-alertmanager-yaml=PATH_TO_FILE
Benachrichtigungsrichtlinien und -kanäle gleichzeitig erstellen
Wenn Sie Benachrichtigungsrichtlinien aus Prometheus-Konfigurationsdateien und gleichzeitig Benachrichtigungskanäle aus einer Prometheus Alertmanager-Konfigurationsdatei erstellen möchten, 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, die eine Benachrichtigung sendet, wenn die CPU-Auslastung eine Minute lang über 75% liegt. Die Benachrichtigungsregel wird 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 mit 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:
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 aus Managed Service for Prometheus migrieren
InGoogle Cloud wird die verwaltete Regelauswertung für Managed Service for Prometheus mithilfe der benutzerdefinierten Ressourcen Rules, ClusterRules und GlobalRules konfiguriert.
So migrieren Sie diese Ressourcen zu einer PromQL-basierten Benachrichtigungsrichtlinie in Google Cloud :
Kopieren Sie den Abschnitt
groups
der benutzerdefinierten Ressource in eine neue Prometheus-Regeldatei.Migrieren Sie die Regeldatei mithilfe der gcloud CLI.
Angenommen, Sie haben die folgende benutzerdefinierte Rules-Ressource:
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-Regelndatei, die durch Kopieren von groups
aus der vorherigen benutzerdefinierten Regelressource 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, benutzerdefinierte Regeln oder globale Regeln 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 Clusterregeln filtern ihre Prometheus-Benachrichtigungsausdrücke automatisch anhand bestimmter Labels. Wenn Sie dieses Verhalten bei der Abfrage einer migrierten Benachrichtigungsrichtlinie beibehalten möchten, müssen Sie diese Labels vor der Migration der Datei explizit in einen Filter- oder Aggregationsausdruck in Ihrer Prometheus-Regelndatei aufnehmen.
Der verwaltete Regelevaluator für Managed Service for Prometheus führt den Ausdruck sum(up) < 10
beispielsweise so aus:
sum(up{project_id="test-project", cluster="test-cluster", namespace="NAMESPACE_NAME"}) < 10
Wenn eine Benachrichtigungsrichtlinie jedoch die PromQL-Abfrage sum(up) < 10
enthält, führt Cloud Monitoring die Abfrage nur als sum(up) < 10
aus. Diese Abfrage wird auf jedes Google Cloud -Projekt, jeden Cluster und jeden Namespace im Gültigkeitsbereich der Messwerte angewendet. Um dieses Verhalten zu vermeiden, empfehlen wir, in Ihrer Abfrage nach Labels zu aggregieren, damit Cloud Monitoring Ihre Abfrage wie vorgesehen ausführt. Wenn Sie beispielsweise die Regelndatei aus der benutzerdefinierten Ressource „Regeln“ erstellen, können Sie sum(up) < 10
in den folgenden Ausdruck ändern:
sum (up) by (project_id, cluster, namespace) < 10
Mit dem vorherigen Ausdruck wird für jedesGoogle Cloud -Projekt, jeden Cluster und jeden Namespace eine separate Zeitreihe generiert. Anschließend wird jede Zeitreihe mit dem Benachrichtigungsgrenzwert von <10
verglichen.
In der folgenden Tabelle ist die Reihenfolge der Auswertung von Benachrichtigungsausdruckfiltern für Regeln und Clusterregeln aufgeführt:
Ressourcentyp der Regel | Filterlabels |
---|---|
Regel |
|
ClusterRule |
|
Weitere Informationen zum Filterverhalten in Prometheus-Ausdrücken finden Sie unter Instant-Vektorselektoren.