이 문서에서는 청구 가능한 사용량 시스템 테이블을 사용하여 서버리스 컴퓨팅 사용량을 모니터링하는 방법을 설명합니다.
서버리스 컴퓨팅 비용과 관련된 사용자 및 워크로드 특성을 포함하는 청구 가능한 사용량 시스템 테이블(system.billing.usage)을 쿼리하여 Notebook 및 작업에 대한 서버리스 컴퓨팅의 사용을 모니터링할 수 있습니다. 해당하는 필드는 다음과 같습니다.
-
identity_metadata열에는 워크로드를 실행하는 데 자격 증명이 사용된 사용자 또는 서비스 주체를 보여주는run_as필드가 포함됩니다. -
usage_metadata열에는job_run_id,job_name,notebook_id및notebook_path워크로드를 설명하는 필드가 있습니다.
-
custom_tags서버리스 사용 정책에서 상속된 태그를 포함하는 열입니다. 서버리스 사용 정책을 사용하여 특성 사용량을 참조하세요.
비고
분산 아키텍처로 인해 지정된 기간에 지정된 서버리스 컴퓨팅 워크로드와 연결된 여러 레코드가 표시될 수 있습니다. 예를 들어 동일한 job_idjob_run_id레코드 또는 job_name 각각에 대해 서로 다른 DBU 사용 값을 가진 여러 레코드가 표시될 수 있습니다. 이러한 DBU의 합계는 해당 기간에 지정된 작업 실행에 대한 시간별 DBU 사용량을 나타냅니다.
서버리스로 간주되어 청구되는 추가 기능
백그라운드에서 서버리스 컴퓨팅을 활용하는 여러 Azure Databricks 기능이 있습니다. 하지만 Notebook, 워크플로, Lakeflow Spark 선언적 파이프라인에 대해서는 서버리스 컴퓨팅을 위해 계정을 활성화할 필요가 없습니다.
다음 기능은 서버리스 작업 SKU에 따라 청구됩니다.
-
데이터 품질 모니터링: 청구 테이블에 값
billing_origin_product과 함께LAKEHOUSE_MONITORING로 기록됩니다. -
예측 최적화: 청구 테이블에
billing_origin_product로PREDICTIVE_OPTIMIZATION값을 기록했습니다. -
Databricks SQL의 구체화된 뷰: SQL 웨어하우스에서 구체화된 뷰를 만들면 새로 고침을 처리하기 위해 서버리스 파이프라인이 만들어집니다.
billing_origin_product = 'SQL'및usage_metadata.dlt_pipeline_id IS NOT NULL에 있는 레코드를 쿼리하여 구체화된 뷰의 청구 레코드를 볼 수 있습니다. -
전용 컴퓨팅에 대한 세분화된 액세스 제어:
billing_origin_product는FINE_GRAINED_ACCESS_CONTROL값을 사용하여 식별할 수 있습니다.
-
클린룸: 사용량과 관련된 특정 클린룸이 아래에 기록됩니다
usage_metadata.central_clean_room_id.
예산을 사용하여 지출 모니터링
계정 관리자는 비용을 그룹화하고 경고를 설정하도록 예산을 설정할 수 있습니다. 예산 만들기 및 모니터링을 참조하세요.
사용량 대시보드 가져오기
계정 관리자는 계정의 Unity 카탈로그 사용 작업 영역으로 비용 관리 대시보드를 가져올 수 있습니다. 사용량 대시보드 가져오기를 참조하세요.
UI에서 작업 또는 Notebook 찾기
청구서 기록을 기반으로 UI에서 작업이나 노트북을 찾으려면 사용 기록에서 usage_metadata.job_id 값이나 usage_metadata.notebook_id 값을 복사합니다. 해당 ID는 변경할 수 없으며 작업 이름 또는 Notebook 경로가 변경되더라도 사용할 수 있습니다.
job_id을(를) 기반으로 UI에서 작업을 찾으려면 다음을 수행합니다.
- 사용량 레코드에서
job_id을(를) 복사합니다. 이 예제에서는 ID를700809544510906(으)로 가정합니다. - 작업 및 파이프라인 UI로 이동합니다. 작업과 동일한 Azure Databricks 작업 영역에 있습니다.
- 내게 액세스 가능 필터를 선택합니다.
- ID(700809544510906)를 필터 작업 검색 창에 붙여넣습니다.
notebook_id을(를) 기반으로 UI에서 노트북을 찾으려면 다음 지침을 따르세요.
- 사용량 레코드에서
notebook_id을(를) 복사합니다. 이 예제에서는 ID를700809544510906(으)로 가정합니다. - Notebook과 동일한 Azure Databricks 작업 영역에서 Workspaces UI로 이동합니다.
- 목록에서 아무 전자 필기장이나 클릭하세요.
- Notebook을 연 후 브라우저 주소 표시줄에서 URL을 검사합니다.
https://<databricks-account-url>/?o=<workspace-ID>#notebook/<notebook ID>/command/<command ID>형식입니다. - 브라우저 주소 표시줄에서 Notebook ID를 첫 번째 단계에서 복사한 ID로 바꾼 다음, Notebook ID 다음에 오는 모든 항목을 삭제합니다.
https://<databricks-account-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에 대한 보고서
- 사용자 지정 태그를 공유하는 워크로드에서 사용하는 서버리스 컴퓨팅 DPU에 대한 보고서
총 지출에 따라 서버리스 전자 필기장 정렬
이 쿼리는 Notebook 목록과 각 Notebook에서 사용한 DBU 수를 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 수를 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
특정 사용자가 사용한 DBU에 대한 보고서
이 쿼리는 특정 사용자 또는 서비스 주체가 실행하는 서버리스 컴퓨팅을 사용하는 Notebook 및 작업 목록과 각 워크로드에서 사용하는 DPU 수를 반환합니다.
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
맞춤 태그를 공유하는 워크로드에서 소모한 서버리스 컴퓨팅 DBU에 대한 보고서
이 쿼리는 동일한 사용자 지정 태그를 공유하는 서버리스 컴퓨팅을 사용하는 작업 목록과 각 워크로드에서 사용하는 DPU 수를 반환합니다.
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