Контроль затрат,Контроль затрат

На этой странице описывается, как устанавливать ежедневные лимиты и отслеживать текущее время EECU, чтобы контролировать вычислительные затраты в Earth Engine.

Ограничить ежедневное время EECU

Чтобы контролировать расходы на Earth Engine, вы можете установить ограничение на количество EECU-времени, которое ваш проект может потреблять в день, обновив следующую облачную квоту:

  • Earth Engine compute time (EECU-time) per day in seconds : квота на уровне проекта, которая ограничивает совокупное EECU-время всех пользователей в проекте.

Дополнительную информацию о квотах Earth Engine, которые вы можете установить, см. в разделе Квоты Earth Engine .

Установите дневной лимит

Вы можете просматривать и редактировать квоты на странице Quotas & System Limits консоли Google Cloud. При изменении квоты изменение вступает в силу в течение нескольких минут. Чтобы установить или обновить дневной лимит, выполните следующие действия:

  1. Убедитесь, что у вас есть разрешения на изменение квоты проекта для выбранного вами проекта.
  2. Перейдите на страницу «Квоты» консоли Google Cloud.
  3. Используйте фильтр Metric в поле поиска Filter для фильтрации earthengine.googleapis.com/daily_eecu_usage_time . Если вы не видите квоту Earth Engine compute time (EECU-time) per day in seconds , убедитесь, что вы включили API Earth Engine для выбранного проекта.
  4. Нажмите «Изменить квоту» в меню с тремя точками.
  5. Если установлен флажок «Неограниченно» , снимите его.
  6. Введите желаемый лимит в EECU-секундах в поле Новое значение . Нажмите Отправить запрос .

Дополнительную информацию о просмотре и управлении квотами см. в разделе Просмотр и управление квотами .

Возвращенные сообщения об ошибках

После установки дневного лимита при его превышении Earth Engine выдает следующее сообщение об ошибке:

Ваше использование превысило пользовательскую квоту для «earthengine.googleapis.com/daily_eecu_usage_time», которую может настроить ваш администратор в консоли Google Cloud: https://console.cloud.google.com/quotas/?project=_.

После превышения квоты запросы Earth Engine не будут обрабатываться до тех пор, пока квота не будет сброшена на следующий день или пока администратор не увеличит лимит.

Детальный мониторинг и оповещение

Если вам необходимо контролировать и отслеживать расходы на более высоком уровне, чем дневной лимит , следующие рецепты требуют дополнительной настройки, но позволяют включать оповещения и отмену на уровне workload_tag ​​и пакетной задачи.

Эти рецепты используют текущий мониторинг EECU-time, который отображается для запущенных запросов. См. руководство по использованию мониторинга для получения дополнительной информации об отчетах текущего EECU-time в Cloud Monitoring.

Настроить оповещения

Вы можете настроить оповещения в Cloud Monitoring, чтобы предупреждать вас, когда метрика достигает определенного порога. Система оповещений Cloud Monitoring очень гибкая. Мы собрали здесь несколько наших любимых рецептов, но не стесняйтесь готовить с помощью пользовательских конфигураций, которые соответствуют вашим потребностям.

Рецепт: уведомление в чате об использовании workload_tag

В этом примере показано, как подключить уведомление чата (например, сообщение Google Chat или сообщение Slack), если использование вычислений Earth Engine для заданного workload_tag ​​превышает пороговое значение. Это может быть полезно в случае, если у вас есть набор задач экспорта, которые создают данные для вашего производственного сервиса, и вы хотите получать уведомления, если они в совокупности потребляют больше определенного количества времени EECU.

  1. Посетите страницу «Оповещения» в разделе «Мониторинг облака» консоли облака.
  2. Выберите «Создать политику», чтобы настроить новую политику оповещений.
  3. Выберите метрику:
    • Текущие EECU-секунды представляют собой количество ожидающих (еще не успешных) вычислений в секундах.
    • Чтобы увидеть метрику, вам может потребоваться снять флажок «Активный».
  4. Добавить фильтр:
    • Используйте workload_tag == your_workload_tag_value для фильтрации по определенному тегу рабочей нагрузки.
    • Используйте compute_type = batch или compute_type = online для фильтрации по определенному типу вычислений.
  5. Выберите подходящее значение "Скользящее окно". Если вы не уверены, используйте 5 min .
  6. Выберите «Сумма» в меню «Функция скользящего окна». Конфигурация метрики для оповещения
  7. Выберите триггер оповещения и дайте ему имя.
  8. Выберите каналы уведомлений.
    • Для этого рецепта мы выберем «Управление каналами уведомлений» в модальном окне, затем «Добавить новый», чтобы вставить идентификатор пространства вашего Google Chat. Этот идентификатор можно найти в URL-адресе страницы Gmail или Chat при просмотре чата.
    • Если вы используете Google Chat, вам также нужно будет ввести @Google Cloud Monitoring и выбрать приложение, чтобы добавить приложение Alerting в свое пространство (если это разрешено вашей организацией).
  9. Выберите соответствующую политику и метки серьезности.
  10. Напишите краткий фрагмент документации.
  11. Опубликуйте свою новую политику оповещения!

После настройки вы будете получать оповещения в чате каждый раз, когда пороговое значение для вашего проекта будет превышено.

Рецепт: Получайте оповещения по электронной почте об общем текущем времени EECU

Следуйте рецепту уведомлений чата, но внесите два изменения:

  1. Пропустите шаг добавления фильтра workload_tag , чтобы увидеть все значения.
  2. При выборе канала уведомлений вместо настройки канала чата добавьте свой адрес электронной почты.

Задержка и время оповещения

Обратите внимание, что отчеты мониторинга распространяются с небольшой задержкой, поэтому не стоит ожидать мгновенных уведомлений.

Отменить ресурсоемкие задачи

При наличии ограничения можно использовать API Earth Engine для периодической проверки списка ожидающих выполнения задач и запроса на отмену любой запущенной задачи, которая превышает ограничение EECU-секунд.

Рецепт: Запустите фрагмент кода в блокноте или локальной оболочке Python

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