Поделиться через


Мониторинг стоимости бессерверных вычислений

В этой статье объясняется, как использовать таблицу системы использования с выставлением счетов для отслеживания затрат на использование бессерверных вычислений.

Вы можете отслеживать использование бессерверных вычислений для записных книжек и заданий, запрашивая оплачиваемую системную таблицу использования (system.billing.usage), которая включает атрибуты пользователей и рабочей нагрузки, связанные с бессерверными затратами на вычисления. К применимым полям относятся следующие:

  • Столбец identity_metadata содержит run_as поле, в котором показан пользователь или субъект-служба, учетные данные которого использовались для выполнения рабочей нагрузки.

  • Столбец usage_metadata содержит поля, описывающие рабочую нагрузку: job_run_id, , job_namenotebook_idи notebook_path.

  • Столбец custom_tags, включающий любые теги, унаследованные от политик бюджета. См. атрибутирование бессерверного использования с бюджетными политиками.

Рекомендации по бессерверным записям об использовании

При анализе бессерверного использования рассмотрите следующее:

  • В течение определенного часа может отображаться несколько записей, связанных с данной бессерверной вычислительной рабочей нагрузкой. Например, вы можете увидеть несколько записей с одинаковыми job_idjob_run_idили job_name', но с различными значениями потребления DBU для каждого. Сумма этих баз данных в совокупности представляет почасовое потребление DBU для заданного выполнения задания.

Примечание.

Чтобы узнать об обновлении о присвоении параметров на пустую рабочую нагрузку, см . статью "Что происходит?".

Использование бюджетов для мониторинга расходов

Администраторы учетных записей могут настроить бюджеты для группирования затрат и настройки оповещений. См. статью "Использование бюджетов для мониторинга расходов на учетную запись".

Импорт панели мониторинга использования

Администраторы учетных записей могут импортировать панели мониторинга управления затратами в любую рабочую область с поддержкой каталога Unity в своей учетной записи. См. статью "Импорт панели мониторинга использования".

Поиск задания или записной книжки в пользовательском интерфейсе

Чтобы найти задание или записную книжку в пользовательском интерфейсе на основе записи выставления счетов, скопируйте или usage_metadata.job_id значение usage_metadata.notebook_id из записи об использовании. Эти идентификаторы неизменяемы и могут использоваться, даже если имя задания или путь к записной книжке изменяется.

Поиск задания в пользовательском интерфейсе на основе его job_id:

  1. job_id Скопируйте данные из записи об использовании. В этом примере предположим, что идентификатор имеет значение 700809544510906.
  2. Перейдите к пользовательскому интерфейсу рабочих процессов в той же рабочей области Azure Databricks, что и задание.
  3. Убедитесь, что фильтр " Только задания", принадлежащие мне , сняты.
  4. Вставьте идентификатор (700809544510906) в строку поиска заданий фильтра.

Чтобы найти записную книжку в пользовательском интерфейсе, notebook_idвыполните следующие инструкции:

  1. notebook_id Скопируйте данные из записи об использовании. В этом примере предположим, что идентификатор имеет значение 700809544510906.
  2. Перейдите к пользовательскому интерфейсу рабочих областей в той же рабочей области Azure Databricks, что и записная книжка.
  3. Щелкните любую записную книжку в списке.
  4. После открытия записной книжки просмотрите URL-адрес в адресной строке браузера. Оно должно выглядеть так: https://<account-console-url>/?o=<workspace ID>#notebook/<notebook ID>/command/<command ID>.
  5. В адресной строке браузера замените идентификатор записной книжки идентификатором, скопированным на первом шаге, а затем удалите все после идентификатора записной книжки. Оно должно выглядеть так: https://<account-console-url>/?o=<workspace ID>#notebook/700809544510906.
  6. После открытия записной книжки нажмите кнопку "Общий доступ ", чтобы просмотреть владельца записной книжки.

Использование оповещений для отслеживания бессерверных расходов

Оповещения — это эффективный способ оставаться в курсе бессерверных расходов. С помощью оповещений вы можете получать уведомления при выполнении определенных условий в результатах запроса. Сведения о создании оповещений см. в статье "Создание оповещения".

Вы можете добавить оповещения в следующие запросы для мониторинга бюджетов. В каждом запросе замените {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