서버리스 컴퓨팅 비용 모니터링
이 문서에서는 청구 가능한 사용량 시스템 테이블(공개 미리 보기)을 사용하여 서버리스 컴퓨팅 사용량을 모니터링하는 방법을 설명합니다.
서버리스 컴퓨팅 비용과 관련된 사용자 및 워크로드 특성이 포함된 청구 가능한 사용량 시스템 테이블(system.billing.usage
)을 쿼리하여 Notebook 및 작업에 대한 서버리스 컴퓨팅 사용량을 모니터링할 수 있습니다. 해당하는 필드는 다음과 같습니다.
identity_metadata
열에는 워크로드를 실행하는 데 자격 증명을 사용한 사용자 또는 서비스 주체를 표시하는run_as
필드가 포함됩니다.usage_metadata
열에는 워크로드job_run_id
,job_name
,notebook_id
및notebook_path
을(를) 설명하는 필드가 포함되어 있습니다.
서버리스 사용량 레코드에 대한 고려 사항
서버리스 사용량을 분석할 때는 다음을 고려합니다.
- 특정 시간에 지정된 서버리스 컴퓨팅 워크로드와 관련된 여러 레코드가 표시될 수 있습니다. 예를 들어
job_id
,job_run_id
또는 job_name'이 동일하지만 각각 다른 DBU 사용량 값을 가진 여러 레코드가 표시될 수 있습니다. DBU의 합계는 특정 작업 실행에 대한 시간당 총 DBU 사용량을 나타냅니다.
참고 항목
null 워크로드 특성에 대한 업데이트는 향후 제공될 기능을 참조하세요.
예산을 사용하여 지출 모니터링
계정 관리자는 예산을 설정하여 비용을 그룹화하고 경고를 설정할 수 있습니다. 예산을 사용하여 계정 지출 모니터링을 참조하세요.
사용량 대시보드 가져오기
계정 관리자는 비용 관리 대시보드를 계정의 Unity 카탈로그 사용 작업 영역으로 가져올 수 있습니다. 사용량 대시보드 가져오기를 참조하세요.
UI에서 작업 또는 Notebook 찾기
청구 레코드를 기반으로 UI에서 작업 또는 Notebook을 찾으려면 사용량 레코드에서 usage_metadata.job_id
값 또는 usage_metadata.notebook_id
값을 복사합니다. 해당 ID는 변경할 수 없으며 작업 이름 또는 Notebook 경로가 변경되더라도 사용할 수 있습니다.
job_id
을(를) 기반으로 UI에서 작업을 찾으려면 다음을 수행합니다.
- 사용량 레코드에서
job_id
을(를) 복사합니다. 이 예제에서는 ID를700809544510906
(으)로 가정합니다. - 작업과 동일한 Azure Databricks 작업 영역에서 워크플로 UI로 이동합니다.
- 내가 소유한 작업만 필터가 선택 해제되었는지 확인합니다.
- ID(700809544510906)를 필터 작업 검색 창에 붙여넣습니다.
notebook_id
을(를) 기반으로 UI에서 Notebook을 찾으려면 다음 지침을 따릅니다.
- 사용량 레코드에서
notebook_id
을(를) 복사합니다. 이 예제에서는 ID를700809544510906
(으)로 가정합니다. - Notebook과 동일한 Azure Databricks 작업 영역에서 작업 영역 UI로 이동합니다.
- 목록에서 Notebook을 클릭합니다.
- Notebook을 연 후 브라우저 주소 표시줄에서 URL을 검사합니다.
https://<account-console-url>/?o=<workspace ID>#notebook/<notebook ID>/command/<command ID>
형식입니다. - 브라우저 주소 표시줄에서 Notebook ID를 첫 번째 단계에서 복사한 ID로 바꾼 다음, Notebook ID 다음에 오는 모든 항목을 삭제합니다.
https://<account-console-url>/?o=<workspace ID>#notebook/700809544510906
형식입니다. - Notebook을 연 후 공유 버튼을 클릭하면 Notebook 소유자를 확인할 수 있습니다.
경고를 사용하여 서버리스 지출 추적
경고는 서버리스 지출에 대한 정보를 파악할 수 있는 강력한 방법입니다. 경고를 사용하면 쿼리 결과에서 특정 조건이 충족될 경우 알림을 받을 수 있습니다. 경고를 만드는 방법을 알아보려면 경고 만들기를 참조하세요.
다음 쿼리에 경고를 추가하여 예산을 모니터링할 수 있습니다. 각 쿼리에서 {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}
샘플 쿼리
다음 쿼리를 사용하여 계정의 서버리스 사용량에 대한 인사이트를 얻습니다.
- 비용이 많이 드는 서버리스 컴퓨팅 Notebook 식별
- 비용이 많이 드는 서버리스 컴퓨팅 작업 식별
- 특정 사용자가 사용한 DPU에 대한 보고서
- 맞춤 태그를 공유하는 워크로드에서 사용한 서버리스 컴퓨팅 DPU에 대한 보고서
비용이 많이 드는 서버리스 컴퓨팅 Notebook 식별
이 쿼리는 Notebook 목록과 각 Notebook에서 사용한 DBU를 DBU 사용량에 따라 내림차순으로 반환합니다.
SELECT
usage_metadata.notebook_id,
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
ORDER BY
total_dbu DESC
비용이 많이 드는 서버리스 컴퓨팅 작업 식별
이 쿼리는 작업 목록과 각 작업에서 사용한 DBU를 DBU 사용량에 따라 내림차순으로 반환합니다.
SELECT
usage_metadata.job_id,
SUM(usage_quantity) as total_dbu
FROM
system.billing.usage
WHERE
usage_metadata.job_id is not null
and billing_origin_product = 'JOBS'
and product_features.is_serverless
and usage_unit = 'DBU'
and usage_date >= DATEADD(day, -30, current_date)
GROUP BY
1
ORDER BY
total_dbu DESC
특정 사용자가 사용한 DPU에 대한 보고서
이 쿼리는 특정 사용자 또는 서비스 주체가 실행하는 서버리스 컴퓨팅을 사용한 Notebook 및 작업 목록과 각 워크로드에서 사용한 DPU를 반환합니다.
SELECT
usage_metadata.job_id,
usage_metadata.notebook_id,
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
ORDER BY
total_dbu DESC
맞춤 태그를 공유하는 워크로드에서 사용한 서버리스 컴퓨팅 DPU에 대한 보고서
이 쿼리는 동일한 맞춤 태그를 공유하는 서버리스 컴퓨팅을 사용한 작업 목록과 각 워크로드에서 사용한 DPU를 반환합니다.
SELECT
usage_metadata.job_id,
usage_metadata.notebook_id,
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
ORDER BY
total_dbu DESC