На этой странице описывается, как устанавливать ежедневные лимиты и отслеживать текущее время 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. При изменении квоты изменение вступает в силу в течение нескольких минут. Чтобы установить или обновить дневной лимит, выполните следующие действия:
- Убедитесь, что у вас есть разрешения на изменение квоты проекта для выбранного вами проекта.
- Перейдите на страницу «Квоты» консоли Google Cloud.
- Используйте фильтр Metric в поле поиска Filter для фильтрации
earthengine.googleapis.com/daily_eecu_usage_time
. Если вы не видите квотуEarth Engine compute time (EECU-time) per day in seconds
, убедитесь, что вы включили API Earth Engine для выбранного проекта. - Нажмите «Изменить квоту» в меню с тремя точками.
- Если установлен флажок «Неограниченно» , снимите его.
- Введите желаемый лимит в 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.
- Посетите страницу «Оповещения» в разделе «Мониторинг облака» консоли облака.
- Выберите «Создать политику», чтобы настроить новую политику оповещений.
- Выберите метрику:
- Текущие EECU-секунды представляют собой количество ожидающих (еще не успешных) вычислений в секундах.
- Чтобы увидеть метрику, вам может потребоваться снять флажок «Активный».
- Добавить фильтр:
- Используйте
workload_tag == your_workload_tag_value
для фильтрации по определенному тегу рабочей нагрузки. - Используйте
compute_type = batch
илиcompute_type = online
для фильтрации по определенному типу вычислений.
- Используйте
- Выберите подходящее значение "Скользящее окно". Если вы не уверены, используйте
5 min
. - Выберите «Сумма» в меню «Функция скользящего окна».
- Выберите триггер оповещения и дайте ему имя.
- Выберите каналы уведомлений.
- Для этого рецепта мы выберем «Управление каналами уведомлений» в модальном окне, затем «Добавить новый», чтобы вставить идентификатор пространства вашего Google Chat. Этот идентификатор можно найти в URL-адресе страницы Gmail или Chat при просмотре чата.
- Если вы используете Google Chat, вам также нужно будет ввести
@Google Cloud Monitoring
и выбрать приложение, чтобы добавить приложение Alerting в свое пространство (если это разрешено вашей организацией).
- Выберите соответствующую политику и метки серьезности.
- Напишите краткий фрагмент документации.
- Опубликуйте свою новую политику оповещения!
После настройки вы будете получать оповещения в чате каждый раз, когда пороговое значение для вашего проекта будет превышено.
Рецепт: Получайте оповещения по электронной почте об общем текущем времени EECU
Следуйте рецепту уведомлений чата, но внесите два изменения:
- Пропустите шаг добавления фильтра
workload_tag
, чтобы увидеть все значения. - При выборе канала уведомлений вместо настройки канала чата добавьте свой адрес электронной почты.
Задержка и время оповещения
Обратите внимание, что отчеты мониторинга распространяются с небольшой задержкой, поэтому не стоит ожидать мгновенных уведомлений.
Отменить ресурсоемкие задачи
При наличии ограничения можно использовать 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