Delta Live Tables 파이프라인 모니터링
이 문서에서는 데이터 계보, 업데이트 기록 및 데이터 품질 보고를 포함하여 Delta Live Tables 파이프라인에 대한 기본 제공 모니터링 및 관찰 기능을 사용하는 방법을 설명합니다.
파이프라인 세부 정보 UI를 통해 대부분의 모니터링 데이터를 수동으로 검토할 수 있습니다. 일부 작업은 이벤트 로그 메타데이터를 쿼리하여 더 쉽게 수행할 수 있습니다. Delta Live Tables 이벤트 로그란?을 참조하세요.
UI에서 사용할 수 있는 파이프라인 세부 정보는 무엇인가요?
파이프라인 그래프는 파이프라인에 대한 업데이트가 성공적으로 시작되는 즉시 표시됩니다. 화살표는 파이프라인의 데이터 세트 간의 종속성을 나타냅니다. 기본적으로 파이프라인 세부 정보 페이지에는 테이블에 대한 최신 업데이트가 표시되지만 드롭다운 메뉴에서 이전 업데이트를 선택할 수 있습니다.
표시되는 세부 정보에는 파이프라인 ID, 원본 라이브러리, 컴퓨팅 비용, 제품 버전 및 파이프라인에 대해 구성된 채널이 포함됩니다.
데이터 세트의 테이블 형식 보기를 보려면 목록 탭을 클릭합니다. 목록 보기를 사용하면 파이프라인의 모든 데이터 세트를 테이블의 행으로 표시할 수 있으며, 파이프라인 DAG가 너무 커서 그래프 보기에서 시각화할 수 없을 때 유용합니다. 데이터 세트 이름, 형식 및 상태와 같은 여러 필터를 사용하여 테이블에 표시되는 데이터 세트를 제어할 수 있습니다. DAG 시각화로 다시 전환하려면 그래프를 클릭합니다.
다음 계정으로 실행 사용자는 파이프라인 소유자이며 파이프라인 업데이트는 이 사용자의 권한으로 실행됩니다. run as
사용자를 변경하려면 권한을 클릭하고 파이프라인 소유자를 변경합니다.
데이터 세트 세부 정보를 보려면 어떻게 해야 합니까?
파이프라인 그래프 또는 데이터 세트 목록에서 데이터 세트를 클릭하면 데이터 세트에 대한 세부 정보가 표시됩니다. 세부 정보에는 데이터 세트 스키마, 데이터 품질 메트릭 및 데이터 세트를 정의하는 소스 코드에 대한 링크가 포함됩니다.
업데이트 기록 보기
파이프라인 업데이트의 기록 및 상태를 보려면 위쪽 표시줄에서 업데이트 기록 드롭다운 메뉴를 클릭합니다.
업데이트에 대한 그래프, 세부 정보 및 이벤트를 보려면 드롭다운 메뉴에서 업데이트를 선택합니다. 최신 업데이트로 돌아가려면 최신 업데이트 표시를 클릭합니다.
파이프라인 이벤트에 대한 알림 가져오기
파이프라인 업데이트 완료 또는 파이프라인 업데이트 실패와 같은 파이프라인 이벤트에 대한 실시간 알림을 받으려면 파이프라인을 만들거나 편집할 때 파이프라인 이벤트에 대한 전자 메일 알림 추가를 추가합니다.
Delta Live Tables 이벤트 로그란?
Delta Live Tables 이벤트 로그에는 감사 로그, 데이터 품질 검사, 파이프라인 진행률, 데이터 계보 등 파이프라인과 관련된 모든 정보가 포함됩니다. 이벤트 로그를 사용하여 데이터 파이프라인의 상태를 추적, 이해 및 모니터링할 수 있습니다.
Delta Live Tables 사용자 인터페이스나 Delta Live Tables API에서, 또는 델타 테이블을 직접 쿼리하여 이벤트 로그 항목을 볼 수 있습니다. 이 섹션에서는 이벤트 로그를 직접 쿼리하는 데 중점을 둡니다.
이벤트 후크를 사용하여 이벤트를 기록할 때 실행할 사용자 지정 작업(예: 경고 보내기)을 정의할 수도 있습니다.
이벤트 로그 스키마
다음 표에서는 이벤트 로그 스키마를 설명합니다. 이러한 필드 중 일부는 필드와 같은 details
일부 쿼리를 수행하기 위해 구문 분석이 필요한 JSON 데이터를 포함합니다. Azure Databricks는 :
JSON 필드를 구문 분석하는 연산자를 지원합니다. 참조 : (콜론 기호) 연산자입니다.
필드 | 설명 |
---|---|
id |
이벤트 로그 레코드에 대한 고유 식별자입니다. |
sequence |
이벤트를 식별하고 정렬하는 메타데이터가 포함된 JSON 문서입니다. |
origin |
이벤트 원본에 대한 메타데이터(예: 클라우드 공급자, 클라우드 공급자 지역user_id pipeline_id ) 또는 pipeline_type 파이프라인이 만들어진 DBSQL 위치를 표시하는 JSON 문서입니다WORKSPACE . |
timestamp |
이벤트가 기록된 시간입니다. |
message |
이벤트를 설명하는 사람이 읽을 수 있는 메시지입니다. |
level |
이벤트 유형(예: INFO , WARN , ERROR 또는 METRICS .)입니다. |
error |
오류가 발생한 경우 오류를 설명하는 세부 정보입니다. |
details |
이벤트의 구조화된 세부 정보를 포함하는 JSON 문서입니다. 이벤트를 분석하는 데 사용되는 기본 필드입니다. |
event_type |
이벤트 유형입니다. |
maturity_level |
이벤트 스키마의 안정성입니다. 가능한 값은 다음과 같습니다. * STABLE : 스키마가 안정적이며 변경되지 않습니다.* NULL : 스키마가 안정적이며 변경되지 않습니다. maturity_level 필드가 추가되기 전에 레코드를 만든 경우 값은 NULL 이 될 수 있습니다(릴리스 2022.37).* EVOLVING : 스키마가 안정적이지 않고 변경 될 수 있습니다.* DEPRECATED : 스키마는 더 이상 사용되지 않으며 Delta Live Tables 런타임은 언제든지 이 이벤트 생성을 중지할 수 있습니다. |
이벤트 로그 쿼리
이벤트 로그의 위치와 이벤트 로그를 쿼리하는 인터페이스는 파이프라인이 Hive 메타스토어 또는 Unity 카탈로그를 사용하도록 구성되었는지 여부에 따라 달라집니다.
Hive 메타스토어
파이프라인이 Hive 메타스토어에 테이블을 게시하는 경우 이벤트 로그가 위치 아래에 storage
저장됩니다/system/events
. 예를 들어 파이프라인 storage
설정을 /Users/username/data
로 구성한 경우 이벤트 로그가 DBFS의 /Users/username/data/system/events
경로에 저장됩니다.
storage
설정을 구성하지 않은 경우 기본 이벤트 로그 위치는 DBFS의 /pipelines/<pipeline-id>/system/events
에 있습니다. 예를 들어 파이프라인의 ID가 91de5e48-35ed-11ec-8d3d-0242ac130003
이면 스토리지 위치는 /pipelines/91de5e48-35ed-11ec-8d3d-0242ac130003/system/events
입니다.
보기를 만들어 이벤트 로그 쿼리를 간소화할 수 있습니다. 다음 예제에서는 라는 event_log_raw
임시 뷰를 만듭니다. 이 보기는 이 문서에 포함된 예제 이벤트 로그 쿼리에 사용됩니다.
CREATE OR REPLACE TEMP VIEW event_log_raw AS SELECT * FROM delta.`<event-log-path>`;
이벤트 로그 위치로 바꿉다 <event-log-path>
.
파이프라인 실행의 각 인스턴스를 업데이트라고 합니다. 최신 업데이트에 대한 정보를 추출하려는 경우가 많습니다. 다음 쿼리를 실행하여 최신 업데이트의 식별자를 찾아 임시 보기에 latest_update_id
저장합니다. 이 보기는 이 문서에 포함된 예제 이벤트 로그 쿼리에 사용됩니다.
CREATE OR REPLACE TEMP VIEW latest_update AS SELECT origin.update_id AS id FROM event_log_raw WHERE event_type = 'create_update' ORDER BY timestamp DESC LIMIT 1;
Azure Databricks Notebook 또는 SQL 편집기에서 이벤트 로그를 쿼리할 수 있습니다. Notebook 또는 SQL 편집기를 사용하여 예제 이벤트 로그 쿼리를 실행합니다.
Unity 카탈로그
파이프라인이 Unity 카탈로그에 테이블을 게시하는 경우 TVF(테이블 반환 함수)를 사용하여 event_log
파이프라인에 대한 이벤트 로그를 가져와야 합니다. 파이프라인 ID 또는 테이블 이름을 TVF에 전달하여 파이프라인에 대한 이벤트 로그를 검색합니다. 예를 들어 ID 04c78631-3dd7-4856-b2a6-7d84e9b2638b
를 사용하여 파이프라인에 대한 이벤트 로그 레코드를 검색하려면 다음을 수행합니다.
SELECT * FROM event_log("04c78631-3dd7-4856-b2a6-7d84e9b2638b")
테이블을 my_catalog.my_schema.table1
만들거나 소유한 파이프라인에 대한 이벤트 로그 레코드를 검색하려면 다음을 수행합니다.
SELECT * FROM event_log(TABLE(my_catalog.my_schema.table1))
TVF를 호출하려면 공유 클러스터 또는 SQL 웨어하우스를 사용해야 합니다. 예를 들어 공유 클러스터에 연결된 Notebook을 사용하거나 SQL 웨어하우스에 연결된 SQL 편집 기를 사용할 수 있습니다.
파이프라인에 대한 이벤트 쿼리를 간소화하기 위해 파이프라인 소유자는 TVF를 통해 event_log
보기를 만들 수 있습니다. 다음 예제에서는 파이프라인에 대한 이벤트 로그에 대한 뷰를 만듭니다. 이 보기는 이 문서에 포함된 예제 이벤트 로그 쿼리에 사용됩니다.
참고 항목
TVF는 event_log
파이프라인 소유자만 호출할 수 있으며 TVF를 통해 event_log
만든 보기는 파이프라인 소유자만 쿼리할 수 있습니다. 보기를 다른 사용자와 공유할 수 없습니다.
CREATE VIEW event_log_raw AS SELECT * FROM event_log("<pipeline-ID>");
Delta Live Tables 파이프라인의 고유 식별자로 바꿉 <pipeline-ID>
니다. Delta Live Tables UI의 파이프라인 세부 정보 패널에서 ID를 찾을 수 있습니다.
파이프라인 실행의 각 인스턴스를 업데이트라고 합니다. 최신 업데이트에 대한 정보를 추출하려는 경우가 많습니다. 다음 쿼리를 실행하여 최신 업데이트의 식별자를 찾아 임시 보기에 latest_update_id
저장합니다. 이 보기는 이 문서에 포함된 예제 이벤트 로그 쿼리에 사용됩니다.
CREATE OR REPLACE TEMP VIEW latest_update AS SELECT origin.update_id AS id FROM event_log_raw WHERE event_type = 'create_update' ORDER BY timestamp DESC LIMIT 1;
이벤트 로그에서 계보 정보 쿼리
계보에 대한 정보가 포함된 이벤트에는 이벤트 유형 flow_definition
이 있습니다. 개체는 details:flow_definition
그래프의 output_dataset
input_datasets
각 관계를 포함하고 정의합니다.
다음 쿼리를 사용하여 입력 및 출력 데이터 세트를 추출하여 계보 정보를 볼 수 있습니다.
SELECT
details:flow_definition.output_dataset as output_dataset,
details:flow_definition.input_datasets as input_dataset
FROM
event_log_raw,
latest_update
WHERE
event_type = 'flow_definition'
AND
origin.update_id = latest_update.id
output_dataset |
input_datasets |
|
---|---|---|
1 | customers |
null |
2 | sales_orders_raw |
null |
3 | sales_orders_cleaned |
["customers", "sales_orders_raw"] |
4 | sales_order_in_la |
["sales_orders_cleaned"] |
이벤트 로그에서 데이터 품질 쿼리
파이프라인의 데이터 세트에 대한 기대치를 정의하면 데이터 품질 메트릭이 개체에 details:flow_progress.data_quality.expectations
저장됩니다. 데이터 품질에 대한 정보가 포함된 이벤트에는 이벤트 유형 flow_progress
가 있습니다. 다음 예제에서는 마지막 파이프라인 업데이트에 대한 데이터 품질 메트릭을 쿼리합니다.
SELECT
row_expectations.dataset as dataset,
row_expectations.name as expectation,
SUM(row_expectations.passed_records) as passing_records,
SUM(row_expectations.failed_records) as failing_records
FROM
(
SELECT
explode(
from_json(
details :flow_progress :data_quality :expectations,
"array<struct<name: string, dataset: string, passed_records: int, failed_records: int>>"
)
) row_expectations
FROM
event_log_raw,
latest_update
WHERE
event_type = 'flow_progress'
AND origin.update_id = latest_update.id
)
GROUP BY
row_expectations.dataset,
row_expectations.name
dataset |
expectation |
passing_records |
failing_records |
|
---|---|---|---|---|
1 | sales_orders_cleaned |
valid_order_number |
4083 | 0 |
이벤트 로그를 쿼리하여 데이터 백로그 모니터링
Delta Live Tables는 개체의 백로그 details:flow_progress.metrics.backlog_bytes
에 있는 데이터의 양을 추적합니다. 백로그 메트릭을 포함하는 이벤트에는 이벤트 유형이 있습니다 flow_progress
. 다음 예는 마지막 파이프라인 업데이트에 대한 백로그 메트릭을 쿼리합니다.
SELECT
timestamp,
Double(details :flow_progress.metrics.backlog_bytes) as backlog
FROM
event_log_raw,
latest_update
WHERE
event_type ='flow_progress'
AND
origin.update_id = latest_update.id
참고 항목
백로그 메트릭은 파이프라인의 데이터 원본 형식 및 Databricks Runtime 버전에 따라 사용할 수 없습니다.
이벤트 로그에서 향상된 자동 크기 조정 이벤트 모니터링
파이프라인에서 Enhanced Autoscaling을 사용하도록 설정하면 이벤트 로그가 클러스터 크기 조정을 캡처합니다. 데이터 품질에 대한 정보가 포함된 이벤트에서 이벤트 유형은 autoscale
입니다. 클러스터 크기 조정 요청 정보는 details:autoscale
개체에 저장됩니다. 다음 예제에서는 마지막 파이프라인 업데이트에 대한 Enhanced Autoscaling 클러스터 크기 조정 요청을 쿼리합니다.
SELECT
timestamp,
Double(
case
when details :autoscale.status = 'RESIZING' then details :autoscale.requested_num_executors
else null
end
) as starting_num_executors,
Double(
case
when details :autoscale.status = 'SUCCEEDED' then details :autoscale.requested_num_executors
else null
end
) as succeeded_num_executors,
Double(
case
when details :autoscale.status = 'PARTIALLY_SUCCEEDED' then details :autoscale.requested_num_executors
else null
end
) as partially_succeeded_num_executors,
Double(
case
when details :autoscale.status = 'FAILED' then details :autoscale.requested_num_executors
else null
end
) as failed_num_executors
FROM
event_log_raw,
latest_update
WHERE
event_type = 'autoscale'
AND
origin.update_id = latest_update.id
컴퓨팅 리소스 사용률 모니터링
cluster_resources
이벤트는 클러스터의 작업 슬롯 수, 해당 작업 슬롯 사용량 및 예약 대기 중인 작업 수에 대한 메트릭을 제공합니다.
향상된 자동 크기 조정을 사용하도록 설정 cluster_resources
하면 이벤트에는 자동 크기 조정 알고리즘에 대한 메트릭(예latest_requested_num_executors
optimal_num_executors
: 및 )도 포함됩니다. 또한 이벤트는 알고리즘의 상태를 다음과 같은 다른 상태(예: , SCALE_UP_IN_PROGRESS_WAITING_FOR_EXECUTORS
및)로 CLUSTER_AT_DESIRED_SIZE
표시합니다BLOCKED_FROM_SCALING_DOWN_BY_CONFIGURATION
.
이 정보는 자동 크기 조정 이벤트와 함께 볼 수 있으므로 향상된 자동 크기 조정에 대한 전체적인 그림을 제공할 수 있습니다.
다음 예제에서는 마지막 파이프라인 업데이트에 대한 작업 큐 크기 기록을 쿼리합니다.
SELECT
timestamp,
Double(details :cluster_resources.avg_num_queued_tasks) as queue_size
FROM
event_log_raw,
latest_update
WHERE
event_type = 'cluster_resources'
AND
origin.update_id = latest_update.id
다음 예제에서는 마지막 파이프라인 업데이트에 대한 사용률 기록을 쿼리합니다.
SELECT
timestamp,
Double(details :cluster_resources.avg_task_slot_utilization) as utilization
FROM
event_log_raw,
latest_update
WHERE
event_type = 'cluster_resources'
AND
origin.update_id = latest_update.id
다음 예제에서는 최신 요청에서 알고리즘에서 요청한 실행기 수, 가장 최근 메트릭을 기반으로 알고리즘에서 권장하는 최적의 실행기 수 및 자동 크기 조정 알고리즘 상태를 포함하여 향상된 자동 크기 조정 파이프라인에만 사용할 수 있는 메트릭과 함께 실행기 수 기록을 쿼리합니다.
SELECT
timestamp,
Double(details :cluster_resources.num_executors) as current_executors,
Double(details :cluster_resources.latest_requested_num_executors) as latest_requested_num_executors,
Double(details :cluster_resources.optimal_num_executors) as optimal_num_executors,
details :cluster_resources.state as autoscaling_state
FROM
event_log_raw,
latest_update
WHERE
event_type = 'cluster_resources'
AND
origin.update_id = latest_update.id
Delta Live Tables 파이프라인 감사
Delta Live Tables 이벤트 로그 레코드 및 기타 Azure Databricks 감사 로그를 사용하여 Delta Live Tables에서 데이터가 업데이트되는 방식을 전체적으로 이해할 수 있습니다.
Delta Live Tables는 파이프라인 소유자의 자격 증명을 사용하여 업데이트를 실행합니다. 파이프라인 소유자를 업데이트하여 사용하는 자격 증명을 변경할 수 있습니다. Delta Live Tables는 파이프라인 만들기, 구성 편집 및 업데이트 트리거를 비롯하여 파이프라인에 대한 작업 사용자를 기록합니다.
Unity 카탈로그 감사 이벤트에 대한 참조는 Unity 카탈로그 이벤트를 참조하세요.
이벤트 로그에서 사용자 작업 쿼리
이벤트 로그를 사용하여 이벤트(예: 사용자 작업)를 감사할 수 있습니다. 사용자 작업에 대한 정보가 포함된 이벤트에는 이벤트 유형 user_action
이 있습니다.
작업에 대한 정보는 details
필드의 user_action
개체에 저장됩니다. 다음 쿼리를 사용하여 사용자 이벤트의 감사 로그를 생성합니다. 이 쿼리에 사용되는 보기를 만들 event_log_raw
려면 이벤트 로그 쿼리를 참조 하세요.
SELECT timestamp, details:user_action:action, details:user_action:user_name FROM event_log_raw WHERE event_type = 'user_action'
timestamp |
action |
user_name |
|
---|---|---|---|
1 | 2021-05-20T19:36:03.517+0000 | START |
user@company.com |
2 | 2021-05-20T19:35:59.913+0000 | CREATE |
user@company.com |
3 | 2021-05-27T00:35:51.971+0000 | START |
user@company.com |
런타임 정보
파이프라인 업데이트에 대한 런타임 정보(예: 업데이트의 Databricks Runtime 버전)를 볼 수 있습니다.
SELECT details:create_update:runtime_version:dbr_version FROM event_log_raw WHERE event_type = 'create_update'
dbr_version |
|
---|---|
1 | 11.0 |
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기