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 Ihre Benachrichtigungsrichtlinien in einer 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
In der gcloud CLI können Sie Ihre vorhandenen Benachrichtigungsregeln und ‑Empfänger migrieren, um Cloud Monitoring-Benachrichtigungsrichtlinien und ‑Benachrichtigungskanäle zu erstellen. Mit der gcloud CLI können die folgenden Arten von Migrationen durchgeführt werden:
Wenn Sie eine Prometheus-Konfigurationsdatei mit einer Benachrichtigungsregel angeben, erstellt die gcloud CLI eine PromQL-basierte Benachrichtigungsrichtlinie.
Sie können mehrere Prometheus-Konfigurationsdateien gleichzeitig bereitstellen, um mehrere PromQL-basierte Benachrichtigungsrichtlinien zu erstellen.
Wenn Sie eine Prometheus-Alertmanager-Datei mit mindestens einem Empfänger angeben, konvertiert die gcloud CLI jeden Empfänger in einen entsprechenden Benachrichtigungskanal in Monitoring.
Wenn Sie gleichzeitig eine Prometheus Alertmanager-Datei und eine Prometheus-Konfigurationsdatei angeben, erstellt die gcloud CLI die Benachrichtigungsrichtlinie und die Benachrichtigungskanäle und ordnet dann jeden neuen Benachrichtigungskanal der neuen Benachrichtigungsrichtlinie zu.
Wenn Sie mehrere Konfigurationsdateien mit Benachrichtigungsregeln bereitstellen, weist die gcloud CLI jeder neuen Benachrichtigungsrichtlinie jeden Benachrichtigungschannel aus der Alertmanager-Datei zu.
Wenn in Ihrer Prometheus-Benachrichtigungsregel auf einen benutzerdefinierten Messwert verwiesen wird, ist für die gcloud CLI ein entsprechender Messwertdeskriptor erforderlich, um die Benachrichtigungsrichtlinie zu erstellen.
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 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 mit Vorlagen für das Feld „alert“ migrieren, werden die Vorlagen in Cloud Monitoring in Dokumentationsvariablen konvertiert:
| Prometheus-Benachrichtigungsfeldvorlage | Cloud Monitoring-Dokumentationsvariable |
|---|---|
{{$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 Konfiguration der Benachrichtigungsrichtlinie als
|
{{humanize $labels.<key>}} |
Wird in der Konfiguration der Benachrichtigungsrichtlinie als
|
Benachrichtigungsregeln und Empfänger aus Prometheus migrieren
Verwenden Sie den Befehl gcloud monitoring policies
migrate, um Ihre Prometheus-Benachrichtigungsregeln zu Cloud Monitoring-Benachrichtigungsrichtlinien zu migrieren, die auf PromQL basieren. 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 Prometheus-Regeldatei im YAML- oder JSON-Format, die die Benachrichtigungsregel enthält.
Wenn Sie einen Empfänger migrieren möchten, benötigen Sie eine YAML- oder JSON-Datei für Alertmanager von Prometheus, die den Empfänger enthält.
Google Cloud unterstützt die Migration von Prometheus-Aufzeichnungsregeln nicht. Wenn Sie Aufzeichnungsregeln verwenden möchten, empfehlen wir, einen selbst bereitgestellten Regelauswerter 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 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 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 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 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%"
Sie haben auch 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 folgenden Befehl aus, um die Benachrichtigungsrichtlinie und den Benachrichtigungskanal zu erstellen:
gcloud 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
Google Cloud konfiguriert die verwaltete Regelauswertung für Managed Service for Prometheus mit den benutzerdefinierten Ressourcen Rules, ClusterRules und GlobalRules.
So migrieren Sie diese Ressourcen zu einer Google Cloud PromQL-basierten Benachrichtigungsrichtlinie:
Kopieren Sie den Abschnitt
groupsder benutzerdefinierten Ressource in eine neue Prometheus-Regeldatei.Migrieren Sie die Regeldatei mit der gcloud CLI.
Angenommen, Sie haben die folgende benutzerdefinierte Ressource „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
Die Prometheus-Regeldatei, die durch Kopieren von groups aus der vorherigen benutzerdefinierten Regelressource erstellt wurde, sieht so aus:
groups:
- name: example
interval: 30s
rules:
- alert: FewerThanTenInstancesUp
expr: sum(up) < 10
Mehrere benutzerdefinierte Rules-Ressourcen migrieren
Wenn Sie mehrere Regeln, CustomRules oder GlobalRules migrieren möchten, empfehlen wir, für jede Ressource eine separate Regelfile 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 einfügen, bevor Sie die Datei migrieren.
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 hat, 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 in Ihrem Messwertbereich angewendet. Um dieses Verhalten zu vermeiden, empfehlen wir, die Daten in Ihrer Abfrage nach Labels zu aggregieren, damit Cloud Monitoring Ihre Abfrage wie vorgesehen ausführt. Wenn Sie beispielsweise Ihre Regelsatzdatei aus der benutzerdefinierten Ressource „Rules“ 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 eine separate Zeitachse für jedesGoogle Cloud -Projekt, jeden Cluster und jeden Namespace generiert und dann jede Zeitachse mit dem Benachrichtigungsschwellenwert von <10 verglichen.
In der folgenden Tabelle sehen Sie die Reihenfolge der Auswertung von Filtern für Benachrichtigungsausdrücke für Regeln und ClusterRules:
| Ressourcentyp der Regel | Filterlabels |
|---|---|
| Regel |
|
| ClusterRule |
|
Weitere Informationen zum Filterverhalten in Prometheus-Ausdrücken finden Sie unter Instant-Vektorselektoren.