Kontrola kosztów

Na tej stronie opisujemy, jak ustawiać limity dzienne i monitorować czas EECU w trakcie korzystania z Earth Engine, aby kontrolować koszty obliczeniowe.

Limit dziennego czasu EECU

Aby kontrolować koszty Earth Engine, możesz ustawić limit czasu EECU, który Twój projekt może wykorzystać w ciągu dnia. W tym celu zaktualizuj ten limit Cloud:

  • Earth Engine compute time (EECU-time) per day in seconds(Czas obliczeniowy Earth Engine (czas EECU) na dzień w sekundach): limit na poziomie projektu, który ogranicza łączny czas EECU wszystkich użytkowników w projekcie.

Więcej informacji o limitach Earth Engine, które możesz ustawić, znajdziesz w artykule Earth Engine quotas.

Ustawianie limitu dziennego

Limity możesz wyświetlać i edytować w konsoli Google Cloud na stronie Limity przydziału i limity systemu. Gdy dostosujesz limit, zmiana zacznie obowiązywać w ciągu kilku minut. Aby ustawić lub zaktualizować limit dzienny:

  1. Sprawdź, czy masz uprawnienia do zmiany limitu projektu w wybranym projekcie.
  2. Otwórz stronę Limity w konsoli Google Cloud.
  3. Użyj filtra Dane w polu wyszukiwania Filtr , aby odfiltrować earthengine.googleapis.com/daily_eecu_usage_time. Jeśli nie widzisz limitu Earth Engine compute time (EECU-time) per day in seconds (Czas obliczeniowy Earth Engine (czas EECU) na dzień w sekundach), sprawdź, czy masz włączony interfejs Earth Engine API w wybranym projekcie.
  4. W menu z 3 kropkami kliknij Edytuj limit.
  5. Jeśli jest zaznaczone pole wyboru Bez ograniczeń, odznacz je.
  6. W polu Nowa wartość wpisz limit w sekundach EECU. Kliknij Prześlij wniosek.

Więcej informacji o wyświetlaniu limitów i zarządzaniu nimi znajdziesz w artykule Wyświetlanie limitów i zarządzanie nimi.

Zwracane komunikaty o błędach

Gdy ustawisz limit dzienny i go przekroczysz, Earth Engine zwróci ten komunikat o błędzie:

Twoje wykorzystanie przekroczyło limit niestandardowy dla „earthengine.googleapis.com/daily_eecu_usage_time”, który administrator może dostosować w konsoli Google Cloud: https://console.cloud.google.com/quotas/?project=_.

Po przekroczeniu limitu żądania Earth Engine będą kończyć się niepowodzeniem, dopóki limit nie zostanie zresetowany następnego dnia lub nie zostanie zwiększony przez administratora.

Szczegółowe monitorowanie i alerty

Jeśli chcesz kontrolować i monitorować koszty z większą dokładnością niż w przypadku limitu dziennego, te instrukcje wymagają więcej konfiguracji, ale umożliwiają wysyłanie alertów i anulowanie na poziomie workload_tag i zadania zbiorczego.

Te instrukcje korzystają z monitorowania czasu EECU w trakcie korzystania z usługi, które jest dostępne w przypadku uruchomionych żądań. Więcej informacji o raportowaniu czasu EECU w trakcie korzystania z usługi w Cloud Monitoring znajdziesz w przewodniku Monitorowanie wykorzystania.

Konfigurowanie alertów

W Cloud Monitoring możesz skonfigurować alerty, które będą Cię ostrzegać, gdy wartość wskaźnika osiągnie określony próg. System alertów Cloud Monitoring jest bardzo elastyczny. Zebraliśmy tu kilka naszych ulubionych instrukcji, ale możesz też korzystać z konfiguracji niestandardowych, które odpowiadają Twoim potrzebom.

Instrukcja: powiadomienie na czacie o wykorzystaniu workload_tag

Ten przykład pokazuje, jak skonfigurować powiadomienie na czacie (np. wiadomość w Google Chat lub Slacku), jeśli wykorzystanie mocy obliczeniowej Earth Engine w przypadku danego workload_tag przekroczy próg. Może to być przydatne, jeśli masz zestaw zadań eksportu, które tworzą dane dla Twojej usługi produkcyjnej, i chcesz otrzymywać powiadomienia, gdy łącznie zużyją one więcej niż określoną ilość czasu EECU.

  1. Otwórz stronę Alerty page w sekcji Cloud Monitoring w konsoli Cloud.
  2. Aby skonfigurować nową zasadę tworzenia alertów, kliknij „Utwórz zasadę”.
  3. Wybierz wskaźnik:
    • In-progress EECU-seconds (Sekundy EECU w trakcie korzystania z usługi) to liczba sekund obliczeniowych w trakcie korzystania z usługi (jeszcze nieudanych).
    • Aby zobaczyć wskaźnik, może być konieczne odznaczenie filtra „Aktywne”.
  4. Dodaj filtr:
    • Aby odfiltrować konkretny tag obciążenia, użyj workload_tag == your_workload_tag_value.
    • Aby odfiltrować konkretny typ obliczeń, użyj compute_type = batch lub compute_type = online.
  5. Wybierz odpowiednią wartość „Okres kroczący”. Jeśli nie masz pewności, użyj 5 min.
  6. W menu „Funkcja okresu kroczącego” wybierz „Suma”. Konfigurowanie rodzaju danych na potrzeby alertu
  7. Wybierz wyzwalacz alertu i nadaj mu nazwę.
  8. Wybierz kanały powiadomień.
    • W przypadku tej instrukcji w oknie modalnym kliknij „Zarządzaj kanałami powiadomień”, a następnie „Dodaj nowy”, aby wkleić identyfikator pokoju w Google Chat. Ten identyfikator znajdziesz w adresie URL strony Gmaila lub czatu podczas wyświetlania czatu.
    • Jeśli używasz Google Chat, musisz też wpisać @Google Cloud Monitoring i wybrać aplikację, aby dodać aplikację Alerty do pokoju (jeśli Twoja organizacja na to zezwala).
  9. Wybierz odpowiednie etykiety zasad i ważności.
  10. Napisz krótki fragment dokumentacji.
  11. Opublikuj nową zasadę tworzenia alertów.

Po skonfigurowaniu będziesz otrzymywać alerty w pokoju czatu, gdy tylko próg zostanie przekroczony w Twoim projekcie.

Instrukcja: otrzymywanie alertów e-mail o łącznym czasie EECU w trakcie korzystania z usługi

Postępuj zgodnie z instrukcjami dotyczącymi powiadomień czatu, ale wprowadź 2 zmiany:

  1. Pomiń krok dodawania filtra workload_tag, aby móc zobaczyć wszystkie wartości.
  2. Podczas wybierania kanału powiadomień zamiast konfigurować kanał czatu, dodaj swój adres e-mail.

Opóźnienie i czas alertu

Pamiętaj, że raporty Monitoring są przesyłane z niewielkim opóźnieniem, więc nie należy oczekiwać natychmiastowych powiadomień.

Anulowanie zadań wymagających dużej ilości zasobów

Mając limit, możesz użyć interfejsu Earth Engine API, aby okresowo sprawdzać listę zadań oczekujących i prosić o anulowanie każdego uruchomionego zadania, które przekracza limit sekund EECU.

Instrukcja: uruchamianie fragmentu kodu w notatniku lub lokalnej powłoce Pythona

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