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 -kanäle zu erstellen. Mit der gcloud CLI können die folgenden Migrationstypen ausgeführt werden:
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-Alertmanager-Datei 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 jeden Benachrichtigungskanal aus der Alertmanager-Datei jeder neuen Benachrichtigungsrichtlinie zu.
Wenn Ihre Prometheus-Benachrichtigungsregel auf einen benutzerdefinierten Messwert verweist, benötigt die gcloud CLI einen entsprechenden Messwertdeskriptor zum Erstellen der Benachrichtigungsrichtlinie.
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 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 Benachrichtigungsfeldvorlagen, um Variablen in Annotationen und Labels für Benachrichtigungsregeln zu konfigurieren. Wenn Sie Prometheus-Benachrichtigungsregeln mit Vorlagen für Benachrichtigungsfeld migrieren, konvertiert Cloud Monitoring die Vorlagen so in Cloud Monitoring-Dokumentationsvariablen:
Vorlage für Prometheus-Benachrichtigungsfeld | Variable für die 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 Konfiguration der Dokumentation der Benachrichtigungsrichtlinie als
|
{{humanize $labels.<key>}} |
Wird in der Konfiguration der Dokumentation der Benachrichtigungsrichtlinie als
|
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.
- Für die Migration einer Benachrichtigungsregel benötigen Sie eine YAML- oder JSON-Prometheus-Regeldatei, die die Benachrichtigungsregel enthält.
Für die Migration eines Empfängers benötigen Sie eine YAML- oder JSON-Prometheus-Alertmanager-Datei, die den Empfänger enthält.
Google Cloud unterstützt nicht die Migration der Aufzeichnungsregeln von Prometheus. Für die Verwendung von Aufzeichnungsregeln empfehlen wir die Verwendung eines selbst bereitgestellten Regelauswerters.
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
Benachrichtigungsrichtlinien und -kanäle gleichzeitig erstellen
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 Sie benachrichtigt, 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 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:
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 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 erstellt wird, 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 bei der Abfrage einer migrierten Benachrichtigungsrichtlinie erhalten bleibt, müssen Sie diese Labels vor der Migration explizit in einen Filter oder Aggregationsausdruck in Ihre Prometheus-Regeldatei aufnehmen.
Beispielsweise führt der Evaluator verwalteter Regeln für Managed Service for Prometheus den Ausdruck sum(up) < 10
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 in Ihrem Messwertbereich angewendet. Um dies zu vermeiden, sollten Sie Ihre Abfrage nach Labels aggregieren, damit Cloud Monitoring die Abfrage wie vorgesehen ausführt. Wenn Sie beispielsweise Ihre 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 Benachrichtigungsschwellenwert von <10
.
In der folgenden Tabelle sehen Sie die Reihenfolge der Auswertung von Benachrichtigungsausdrucksfiltern für Regeln und ClusterRules:
Ressourcentyp der Regel | Labels filtern |
---|---|
Regel |
|
ClusterRule |
|
Weitere Informationen zum Filterverhalten in Prometheus-Ausdrücken finden Sie unter Instant-Vektorauswahl.