Мониторинг стоимости бессерверных вычислений
В этой статье объясняется, как использовать таблицу системы использования с выставлением счетов для отслеживания затрат на использование бессерверных вычислений.
Вы можете отслеживать использование бессерверных вычислений для записных книжек и заданий, запрашивая оплачиваемую системную таблицу использования (system.billing.usage
), которая включает атрибуты пользователей и рабочей нагрузки, связанные с бессерверными затратами на вычисления. К применимым полям относятся следующие:
Столбец
identity_metadata
содержитrun_as
поле, в котором показан пользователь или субъект-служба, учетные данные которого использовались для выполнения рабочей нагрузки.Столбец
usage_metadata
содержит поля, описывающие рабочую нагрузку:job_run_id
, ,job_name
notebook_id
иnotebook_path
.Столбец
custom_tags
, включающий любые теги, унаследованные от политик бюджета. См. атрибутирование бессерверного использования с бюджетными политиками.
Рекомендации по бессерверным записям об использовании
При анализе бессерверного использования рассмотрите следующее:
- В течение определенного часа может отображаться несколько записей, связанных с данной бессерверной вычислительной рабочей нагрузкой. Например, вы можете увидеть несколько записей с одинаковыми
job_id
job_run_id
или job_name', но с различными значениями потребления DBU для каждого. Сумма этих баз данных в совокупности представляет почасовое потребление DBU для заданного выполнения задания.
Примечание.
Чтобы узнать об обновлении о присвоении параметров на пустую рабочую нагрузку, см . статью "Что происходит?".
Использование бюджетов для мониторинга расходов
Администраторы учетных записей могут настроить бюджеты для группирования затрат и настройки оповещений. См. статью "Использование бюджетов для мониторинга расходов на учетную запись".
Импорт панели мониторинга использования
Администраторы учетных записей могут импортировать панели мониторинга управления затратами в любую рабочую область с поддержкой каталога Unity в своей учетной записи. См. статью "Импорт панели мониторинга использования".
Поиск задания или записной книжки в пользовательском интерфейсе
Чтобы найти задание или записную книжку в пользовательском интерфейсе на основе записи выставления счетов, скопируйте или usage_metadata.job_id
значение usage_metadata.notebook_id
из записи об использовании. Эти идентификаторы неизменяемы и могут использоваться, даже если имя задания или путь к записной книжке изменяется.
Поиск задания в пользовательском интерфейсе на основе его job_id
:
-
job_id
Скопируйте данные из записи об использовании. В этом примере предположим, что идентификатор имеет значение700809544510906
. - Перейдите к пользовательскому интерфейсу рабочих процессов в той же рабочей области Azure Databricks, что и задание.
- Убедитесь, что фильтр " Только задания", принадлежащие мне , сняты.
- Вставьте идентификатор (700809544510906) в строку поиска заданий фильтра.
Чтобы найти записную книжку в пользовательском интерфейсе, notebook_id
выполните следующие инструкции:
-
notebook_id
Скопируйте данные из записи об использовании. В этом примере предположим, что идентификатор имеет значение700809544510906
. - Перейдите к пользовательскому интерфейсу рабочих областей в той же рабочей области Azure Databricks, что и записная книжка.
- Щелкните любую записную книжку в списке.
- После открытия записной книжки просмотрите URL-адрес в адресной строке браузера. Оно должно выглядеть так:
https://<account-console-url>/?o=<workspace ID>#notebook/<notebook ID>/command/<command ID>
. - В адресной строке браузера замените идентификатор записной книжки идентификатором, скопированным на первом шаге, а затем удалите все после идентификатора записной книжки. Оно должно выглядеть так:
https://<account-console-url>/?o=<workspace ID>#notebook/700809544510906
. - После открытия записной книжки нажмите кнопку "Общий доступ ", чтобы просмотреть владельца записной книжки.
Использование оповещений для отслеживания бессерверных расходов
Оповещения — это эффективный способ оставаться в курсе бессерверных расходов. С помощью оповещений вы можете получать уведомления при выполнении определенных условий в результатах запроса. Сведения о создании оповещений см. в статье "Создание оповещения".
Вы можете добавить оповещения в следующие запросы для мониторинга бюджетов. В каждом запросе замените {budget}
выбранный бюджет.
Оповещение о превышении порогового значения для любой рабочей области за последние 30 дней
Вы можете настроить оповещение, чтобы активировать каждый раз, когда этот запрос возвращает строку. Замените {budget}
выбранным бюджетом.
SELECT
t1.workspace_id,
SUM(t1.usage_quantity * list_prices.pricing.default) as list_cost
FROM system.billing.usage t1
INNER JOIN system.billing.list_prices on
t1.cloud = list_prices.cloud and
t1.sku_name = list_prices.sku_name and
t1.usage_start_time >= list_prices.price_start_time and
(t1.usage_end_time <= list_prices.price_end_time or list_prices.price_end_time is null)
WHERE
t1.sku_name LIKE '%SERVERLESS%'
AND billing_origin_product IN ("JOBS", "INTERACTIVE")
AND t1.usage_date >= CURRENT_DATE() - INTERVAL 30 DAYS
GROUP BY
t1.workspace_id
HAVING
list_cost > {budget}
Оповещение, когда пользователь превышает пороговое значение за последние 30 дней
Вы можете настроить оповещение, чтобы активировать каждый раз, когда этот запрос возвращает строку. Замените {budget}
выбранным бюджетом.
SELECT
t1.identity_metadata.run_as,
SUM(t1.usage_quantity * list_prices.pricing.default) as list_cost
FROM system.billing.usage t1
INNER JOIN system.billing.list_prices on
t1.cloud = list_prices.cloud and
t1.sku_name = list_prices.sku_name and
t1.usage_start_time >= list_prices.price_start_time and
(t1.usage_end_time <= list_prices.price_end_time or list_prices.price_end_time is null)
WHERE
t1.sku_name LIKE '%SERVERLESS%'
AND billing_origin_product IN ("JOBS", "INTERACTIVE")
AND t1.usage_date >= CURRENT_DATE() - INTERVAL 30 DAYS
GROUP BY
t1.identity_metadata.run_as
HAVING
list_cost > {budget}
Оповещение о превышении порогового значения задания за последние 30 дней
Вы можете настроить оповещение, чтобы активировать каждый раз, когда этот запрос возвращает строку. Замените {budget}
выбранным бюджетом.
SELECT
t1.workspace_id,
t1.usage_metadata.job_id,
SUM(t1.usage_quantity * list_prices.pricing.default) as list_cost
FROM system.billing.usage t1
INNER JOIN system.billing.list_prices on
t1.cloud = list_prices.cloud and
t1.sku_name = list_prices.sku_name and
t1.usage_start_time >= list_prices.price_start_time and
(t1.usage_end_time <= list_prices.price_end_time or list_prices.price_end_time is null)
WHERE
t1.sku_name LIKE '%SERVERLESS%'
AND billing_origin_product IN ("JOBS")
AND t1.usage_date >= CURRENT_DATE() - INTERVAL 30 DAYS
GROUP BY
t1.workspace_id, t1.usage_metadata.job_id
HAVING
list_cost > {budget}
Примеры запросов
Используйте следующие запросы, чтобы получить аналитические сведения об бессерверном использовании в вашей учетной записи:
- Определение дорогостоящих бессерверных вычислительных записных книжек
- Определение дорогостоящих бессерверных вычислительных заданий
- Отчет об учетных данных, потребляемых определенным пользователем
- Отчет о бессерверных вычислительных базах данных, потребляемых рабочими нагрузками, которые совместно используют пользовательский тег
Определение дорогостоящих бессерверных вычислительных записных книжек
Этот запрос возвращает список записных книжек и количество используемых баз данных каждой записной книжки в порядке убывания по потреблению DBU:
SELECT
usage_metadata.notebook_id,
usage_metadata. notebook_path,
SUM(usage_quantity) as total_dbu
FROM
system.billing.usage
WHERE
usage_metadata.notebook_id is not null
and billing_origin_product = 'INTERACTIVE'
and product_features.is_serverless
and usage_unit = 'DBU'
and usage_date >= DATEADD(day, -30, current_date)
GROUP BY
1,2
ORDER BY
total_dbu DESC
Определение дорогостоящих бессерверных вычислительных заданий
Этот запрос возвращает список заданий и количество используемых заданий в порядке убывания по потреблению DBU:
SELECT
usage_metadata.job_id,
usage_metadata.job_name,
SUM(usage_quantity) as total_dbu
FROM
system.billing.usage
WHERE
usage_metadata.job_id is not null
and usage_unit = 'DBU'
and usage_date >= DATEADD(day, -30, current_date)
and sku_name like '%JOBS_SERVERLESS_COMPUTE%'
GROUP BY
1,2
ORDER BY
total_dbu DESC
Отчет об учетных данных, потребляемых определенным пользователем
Этот запрос возвращает список записных книжек и заданий, использующих бессерверные вычислительные ресурсы, выполняемые определенным пользователем или субъектом-службой, и количество баз данных, потребляемых каждой рабочей нагрузкой:
SELECT
usage_metadata.job_id,
usage_metadata.job_name,
usage_metadata.notebook_id,
usage_metadata. notebook_path,
SUM(usage_quantity) as total_dbu
FROM
system.billing.usage
WHERE
identity_metadata.run_as = '<emailaddress@domain.com>'
and billing_origin_product in ('JOBS','INTERACTIVE')
and product_features.is_serverless
and usage_unit = 'DBU'
and usage_date >= DATEADD(day, -30, current_date)
GROUP BY
1,2,3,4
ORDER BY
total_dbu DESC
Отчет о бессерверных вычислительных базах данных, потребляемых рабочими нагрузками, которые совместно используют пользовательский тег
Этот запрос возвращает список заданий, использующих бессерверные вычисления, которые используют один и тот же пользовательский тег, и количество баз данных, потребляемых каждой рабочей нагрузкой:
SELECT
usage_metadata.job_id,
usage_metadata.job_name,
usage_metadata.notebook_id,
usage_metadata. notebook_path,
SUM(usage_quantity) as total_dbu
FROM
system.billing.usage
WHERE
custom_tags.<key> = '<value>'
and billing_origin_product in ('JOBS','INTERACTIVE')
and product_features.is_serverless
and usage_unit = 'DBU'
and usage_date >= DATEADD(day, -30, current_date)
GROUP BY
1,2,3,4
ORDER BY
total_dbu DESC