Kostenkontrolle

Benachrichtigungen konfigurieren

Sie können Benachrichtigungen in Cloud Monitoring konfigurieren, um benachrichtigt zu werden, wenn ein Messwert einen bestimmten Grenzwert erreicht. So können Sie die Ressourcennutzung und die Kosten in Earth Engine im Blick behalten.

Das Cloud Monitoring-Benachrichtigungssystem ist sehr flexibel. Wir haben hier einige unserer Lieblingsrezepte zusammengestellt. Sie können aber auch mit benutzerdefinierten Konfigurationen experimentieren, die Ihren Anforderungen entsprechen.

Rezept: Chatbenachrichtigung für die Nutzung von workload_tag

In diesem Beispiel wird gezeigt, wie Sie eine Chatbenachrichtigung (z.B. eine Google Chat- oder Slack-Nachricht) einrichten, wenn die Rechennutzung von Earth Engine für eine bestimmte workload_tag einen Grenzwert überschreitet. Dies kann nützlich sein, wenn Sie mehrere Exportaufgaben haben, mit denen Daten für Ihren Produktionsdienst erstellt werden, und benachrichtigt werden möchten, wenn sie insgesamt mehr als eine bestimmte EECU-Zeit verbrauchen.

  1. Rufen Sie in der Cloud Console im Bereich „Cloud-Monitoring“ die Seite Benachrichtigungen auf.
  2. Wählen Sie „Richtlinie erstellen“ aus, um eine neue Benachrichtigungsrichtlinie zu konfigurieren.
  3. Wählen Sie den Messwert aus:
    • In-progress EECU-seconds steht für die Anzahl der ausstehenden (noch nicht erfolgreichen) Rechensekunden.
    • Möglicherweise müssen Sie die Auswahl des Filters „Aktiv“ aufheben, um den Messwert zu sehen.
  4. Fügen Sie einen Filter hinzu:
    • Verwenden Sie workload_tag == your_workload_tag_value, um nach einem bestimmten Arbeitslast-Tag zu filtern.
    • Mit compute_type = batch oder compute_type = online können Sie nach einer bestimmten Art von Berechnung filtern.
  5. Wählen Sie einen geeigneten Wert für „Rolling window“ (Gleitender Zeitraum) aus. Wenn Sie sich nicht sicher sind, verwenden Sie 5 min.
  6. Wählen Sie im Menü „Funktion des rollierenden Fensters“ die Option „Summe“ aus. Messwert für eine Benachrichtigung konfigurieren
  7. Wählen Sie den Auslöser für die Benachrichtigung aus und geben Sie einen Namen dafür ein.
  8. Wählen Sie die Benachrichtigungskanäle aus.
    • Für dieses Rezept wählen wir im modalen Fenster „Benachrichtigungskanäle verwalten“ und dann „Neu hinzufügen“ aus, um die Gruppenbereichs-ID unseres Google Chats einzufügen. Sie finden diese ID in der URL der Gmail- oder Chat-Seite, wenn Sie den Chat aufrufen.
    • Wenn Sie Google Chat verwenden, müssen Sie außerdem @Google Cloud Monitoring eingeben und die App auswählen, um die Benachrichtigungs-App Ihrem Gruppenbereich hinzuzufügen (sofern dies von Ihrer Organisation zulässig ist).
  9. Wählen Sie die entsprechenden Richtlinien- und Schweregradlabels aus.
  10. Verfassen Sie ein kurzes Snippet zur Dokumentation.
  11. Veröffentlichen Sie Ihre neue Benachrichtigungsrichtlinie.

Danach erhalten Sie in Ihrem Chatbereich Benachrichtigungen, sobald der Grenzwert für Ihr Projekt überschritten wird.

Rezept: E-Mail-Benachrichtigungen für die Gesamtzeit der laufenden EECU-Aktivitäten erhalten

Folgen Sie dem Rezept für Chatbenachrichtigungen, nehmen Sie aber zwei Änderungen vor:

  1. Überspringen Sie den Schritt zum Hinzufügen eines workload_tag-Filters, damit alle Werte angezeigt werden.
  2. Fügen Sie bei der Auswahl eines Benachrichtigungskanals anstelle eines Chatkanals Ihre E-Mail-Adresse hinzu.

Latenz und Timing von Benachrichtigungen

Die Übermittlung von Monitoring-Berichten dauert etwas. Sie erhalten also nicht sofort eine Benachrichtigung.

Ressourcenintensive Aufgaben abbrechen

Wenn Sie ein Limit festlegen, können Sie mit der Earth Engine API die Liste der ausstehenden Aufgaben regelmäßig prüfen und die Abbruchanfrage für alle laufenden Aufgaben stellen, die das EECU-Sekundenlimit überschreiten.

Rezept: Code-Snippet in einem Notebook oder einer lokalen Python-Shell ausführen

eecu_seconds_limit = 50 * 60 * 60  # 50 hours
print("Watching for operations to cancel...")
while(True):
  for op in ee.data.listOperations():
    if op['metadata']['state'] == 'RUNNING':
      if op['metadata'].get('batchEecuUsageSeconds', 0) > eecu_seconds_limit:
        print(f"Cancelling operation {op['name']}")
        ee.data.cancelOperation(op['name'])
  time.sleep(10)  # 10 seconds