DLT 파이프라인 모니터링
이 문서에서는 DLT 파이프라인에 대한 기본 제공 모니터링 및 관찰 기능 사용에 대해 설명합니다. 이러한 기능은 다음과 같은 작업을 지원합니다.
- 파이프라인 업데이트의 진행률 및 상태를 관찰합니다. UI에서 제공하는 파이프라인 세부 정보는 무엇입니까?.
- 파이프라인 업데이트의 성공 또는 실패와 같은 파이프라인 이벤트에 대한 경고입니다. 파이프라인 이벤트전자 메일 알림 추가를 참조하세요.
- Apache Kafka 및 자동 로더(공개 미리 보기)와 같은 스트리밍 원본에 대한 메트릭 보기 스트리밍 메트릭보기를 참조하세요.
- 데이터 계보, 데이터 품질 메트릭 및 리소스 사용량과 같은 파이프라인 업데이트에 대한 자세한 정보를 추출합니다. DLT 이벤트 로그란 무엇입니까?.
- 특정 이벤트가 발생할 때 수행할 사용자 지정 작업 정의 이벤트 후크 사용하여 DLT 파이프라인의 사용자 지정 모니터링 정의참조하세요.
쿼리 성능을 검사하고 진단하려면 DLT 파이프라인에 대한Access 쿼리 기록을 참조하세요. 이 기능은 공개 미리 보기로 제공됩니다.
파이프라인 이벤트에 대한 전자 메일 알림 추가
다음이 발생할 때 알림을 받도록 하나 이상의 전자 메일 주소를 구성할 수 있습니다.
- 파이프라인 업데이트가 성공적으로 완료되었습니다.
- 다시 시도하거나 다시 시도할 수 없는 오류로 파이프라인 업데이트가 실패합니다. 모든 파이프라인 오류에 대한 알림을 받으려면 이 옵션을 선택합니다.
- 다시 시도할 수 없는(심각한) 오류로 파이프라인 업데이트가 실패합니다. 다시 시도할 수 없는 오류가 발생한 경우에만 알림을 받으려면 이 옵션을 선택합니다.
- 단일 데이터 흐름이 실패합니다.
파이프라인을 만들거나 편집할 때 이메일 알림을 구성하려면 다음을 수행합니다.
- 알림추가를 클릭합니다.
- 알림을 받을 전자 메일 주소를 하나 이상 입력합니다.
- 구성된 전자 메일 주소로 보낼 각 알림 유형에 대한 확인란을 클릭합니다.
- 알림추가를 클릭합니다.
UI에서 사용할 수 있는 파이프라인 세부 정보는 무엇인가요?
파이프라인에 대한 업데이트가 성공적으로 시작되자마자 파이프라인 그래프가 나타납니다. 화살표는 파이프라인의 데이터 세트 간의 종속성을 나타냅니다. 기본적으로 파이프라인 세부 정보 페이지에는 테이블에 대한 최신 업데이트가 표시되지만 드롭다운 메뉴에서 이전 업데이트를 선택할 수 있습니다.
세부 정보에는 파이프라인 ID, 소스 코드, 컴퓨팅 비용, 제품 버전 및 파이프라인에 대해 구성된 채널이 포함됩니다.
데이터 세트의 테이블 형식 보기를 보려면 목록 탭을 클릭합니다. 목록 보기를 사용하면 파이프라인의 모든 데이터 세트를 테이블의 행으로 표시할 수 있으며 파이프라인 DAG가 너무 커서 그래프 보기에서 시각화할 수 없을 때 유용합니다. 데이터 세트 이름, 형식 및 상태와 같은 여러 필터를 사용하여 테이블에 표시되는 데이터 세트를 제어할 수 있습니다. DAG 시각화로 다시 전환하려면 그래프클릭합니다.
실행 사용자는 파이프라인 소유자이며 파이프라인 업데이트는 이 사용자의 권한으로 실행됩니다.
run as
사용자를 변경하려면 사용 권한 클릭하고 파이프라인 소유자를 변경합니다.
데이터 세트 세부 정보를 보려면 어떻게 해야 합니까?
파이프라인 그래프 또는 데이터 세트 목록에서 데이터 세트를 클릭하면 데이터 세트에 대한 세부 정보가 표시됩니다. 세부 정보에는 데이터 세트 스키마, 데이터 품질 메트릭 및 데이터 세트를 정의하는 소스 코드에 대한 링크가 포함됩니다.
업데이트 기록 보기
파이프라인 업데이트의 기록 및 상태를 보려면 위쪽 표시줄에서 업데이트 기록 드롭다운 메뉴를 클릭합니다.
드롭다운 메뉴에서 업데이트를 선택하여 업데이트에 대한 그래프, 세부 정보 및 이벤트를 봅니다. 최신 업데이트로 돌아가려면 최신 업데이트표시를 클릭합니다.
스트리밍 메트릭 보기
중요하다
DLT에 대한 스트리밍 가시성은 공개 프리뷰입니다.
DLT 파이프라인의 각 스트리밍 흐름에 대해 Apache Kafka, Amazon Kinesis, Auto Loader 및 Delta 테이블과 같은 Spark 구조적 스트리밍에서 지원하는 데이터 원본에서 스트리밍 메트릭을 볼 수 있습니다. 메트릭은 DLT UI의 오른쪽 창에 차트로 표시되며 백로그 초, 백로그 바이트, 백로그 레코드 및 백로그 파일을 포함합니다. 차트는 분별로 집계된 최대값을 표시하고 도구 설명은 차트를 마우스로 가리킬 때 최대값을 표시합니다. 데이터는 현재 시간에서 지난 48시간으로 제한됩니다.
사용 가능한 스트리밍 메트릭이 있는 파이프라인의 테이블은 UI 그래프 보기에서 파이프라인 DAG를 볼 때 아이콘을 표시합니다. 스트리밍 메트릭을 보려면
클릭하여 오른쪽 창의 흐름 탭에 스트리밍 메트릭 차트를 표시합니다.
목록 클릭한 다음 스트리밍 메트릭클릭하여 스트리밍 메트릭이 있는 테이블만 보기 위해 필터를 적용할 수도 있습니다.
각 스트리밍 원본은 특정 메트릭만 지원합니다. 스트리밍 원본에서 지원되지 않는 메트릭은 UI에서 볼 수 없습니다. 다음 표에서는 지원되는 스트리밍 원본에 사용할 수 있는 메트릭을 보여 줍니다.
근원 | 백로그 바이트 | 미처리 작업 기록 | 처리 지연 시간(초) | 미처리 파일 |
---|---|---|---|---|
Kafka | ✓ | ✓ | ||
키네시스 | ✓ | ✓ | ||
델타 | ✓ | ✓ | ||
자동 로더 | ✓ | ✓ | ||
Google Pub/Sub (메시징 서비스) | ✓ | ✓ |
DLT 이벤트 로그란?
DLT 이벤트 로그에는 감사 로그, 데이터 품질 검사, 파이프라인 진행률 및 데이터 계보를 포함하여 파이프라인과 관련된 모든 정보가 포함됩니다. 이벤트 로그를 사용하여 데이터 파이프라인의 상태를 추적, 이해 및 모니터링할 수 있습니다.
DLT 사용자 인터페이스, DLT API또는 이벤트 로그를 직접 쿼리하여 이벤트 로그 항목을 볼 수 있습니다. 이 섹션에서는 이벤트 로그를 직접 쿼리하는 데 중점을 둡니다.
이벤트가 기록될 때 실행할 사용자 지정 작업을 정의할 수도 있으며, 예를 들어 경고를 보낼 수 있습니다. 이러한 작업은 이벤트 후크을 통해 실행할 수 있습니다.
중요하다
이벤트 로그 또는 이벤트 로그가 게시된 부모 카탈로그 또는 스키마를 삭제하지 마세요. 이벤트 로그를 삭제하면 향후 실행 중에 파이프라인이 업데이트에 실패할 수 있습니다.
이벤트 로그 스키마
다음 표에서는 이벤트 로그 스키마에 대해 설명합니다. 이러한 필드 중 일부는 details
필드와 같은 일부 쿼리를 수행하기 위해 구문 분석이 필요한 JSON 데이터를 포함합니다. Azure Databricks는 JSON 필드를 구문 분석하는 :
연산자를 지원합니다.
:
(콜론 기호) 연산자참조하세요.
필드 | 묘사 |
---|---|
id |
이벤트 로그 레코드의 고유 식별자입니다. |
sequence |
이벤트를 식별하고 정렬하는 메타데이터가 포함된 JSON 문서입니다. |
origin |
이벤트 원본에 대한 메타데이터를 포함하는 JSON 문서(예: 클라우드 공급자, 클라우드 공급자 지역, user_id , pipeline_id 또는 파이프라인이 만들어진 위치를 표시하는 pipeline_type DBSQL 또는 WORKSPACE . |
timestamp |
이벤트가 기록된 시간입니다. |
message |
이벤트를 설명하는 사람이 읽을 수 있는 메시지입니다. |
level |
이벤트 유형(예: INFO , WARN , ERROR 또는 METRICS )입니다. |
maturity_level |
이벤트 스키마의 안정성입니다. 가능한 값은 다음과 같습니다. |
error |
오류가 발생한 경우 오류를 설명하는 세부 정보입니다. |
details |
이벤트의 구조화된 세부 정보를 포함하는 JSON 문서입니다. 이벤트를 분석하는 데 사용되는 기본 필드입니다. |
event_type |
이벤트 유형입니다. |
이벤트 로그 조회
메모
이 섹션에서는 Unity 카탈로그 및 기본 게시 모드로 구성된 파이프라인에 대한 이벤트 로그 작업을 위한 기본 동작 및 구문에 대해 설명합니다.
- Unity 카탈로그 파이프라인의 레거시 게시 모드에 대한 동작에 대해서는 Unity 카탈로그 레거시 게시 모드 파이프라인에 대한 이벤트 로그 작업을 참조하세요.
- Hive 메타스토어 파이프라인의 동작 및 구문에 대해서는 Hive 메타스토어 파이프라인에 대한 이벤트 로그 작업을 참조하세요.
기본적으로 DLT는 파이프라인에 대해 구성된 기본 카탈로그 및 스키마의 숨겨진 델타 테이블에 이벤트 로그를 씁니다. 숨겨도 충분히 권한이 있는 모든 사용자가 테이블을 쿼리할 수 있습니다. 기본적으로 파이프라인의 소유자만 이벤트 로그 테이블을 쿼리할 수 있습니다.
기본적으로 숨겨진 이벤트 로그의 이름은 event_log_{pipeline_id}
형식으로 지정됩니다. 여기서 파이프라인 ID는 밑줄로 바뀐 파선이 있는 시스템 할당 UUID입니다.
JSON 구성과 상호 작용하여 이벤트 로그를 게시할 수 있습니다. 이벤트 로그를 게시할 때 이벤트 로그의 이름을 지정하고 다음 예제와 같이 필요에 따라 카탈로그와 스키마를 지정할 수 있습니다.
{
"id": "ec2a0ff4-d2a5-4c8c-bf1d-d9f12f10e749",
"name": "billing_pipeline",
"event_log": {
"catalog": "catalog_name",
"schema": "schema_name",
"name": "event_log_table_name"
}
}
이벤트 로그 위치는 파이프라인의 모든 자동 로더 쿼리에 대한 스키마 위치로도 사용됩니다. 일부 컴퓨팅 설정으로 이벤트 로그 테이블이 직접 공유되는 경우 사용자가 스키마 메타데이터에 대한 액세스 권한을 얻을 수 있으므로 Databricks는 권한을 수정하기 전에 이벤트 로그 테이블에 대한 뷰를 만드는 것이 좋습니다. 다음 예제 구문은 이벤트 로그 테이블에 대한 뷰를 만들고 이 문서에 포함된 예제 이벤트 로그 쿼리에 사용됩니다.
CREATE VIEW event_log_raw
AS SELECT * FROM catalog_name.schema_name.event_log_table_name;
파이프라인 실행의 각 인스턴스를 업데이트라고 합니다. 최신 업데이트에 대한 정보를 추출하려는 경우가 많습니다. 다음 쿼리를 실행하여 최신 업데이트의 식별자를 찾아 latest_update
임시 보기에 저장합니다. 이 보기는 이 문서에 포함된 예제 이벤트 로그 쿼리에 사용됩니다.
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;
Unity 카탈로그에서 뷰는 스트리밍 쿼리를 지원합니다. 다음 예제에서는 구조적 스트리밍을 사용하여 이벤트 로그 테이블 위에 정의된 뷰를 쿼리합니다.
df = spark.readStream.table("event_log_raw")
파이프라인 소유자는 파이프라인 구성의 Publish event log to metastore
섹션에서 옵션을 전환하여 이벤트 로그를 공용 델타 테이블로 게시할 수 있습니다. 필요에 따라 이벤트 로그에 대한 새 테이블 이름, 카탈로그 및 스키마를 지정할 수 있습니다.
이벤트 로그에서 계보 정보 쿼리
계보에 대한 정보가 포함된 이벤트에는 이벤트 유형이 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 |
---|---|
customers |
null |
sales_orders_raw |
null |
sales_orders_cleaned |
["customers", "sales_orders_raw"] |
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 |
---|---|---|---|
sales_orders_cleaned |
valid_order_number |
4083 | 0 |
이벤트 로그에서 자동 로더 이벤트 쿼리
DLT는 자동 로더가 파일을 처리할 때 이벤트를 생성합니다. 자동 로더 이벤트의 경우, event_type
는 operation_progress
이며 details:operation_progress:type
는 AUTO_LOADER_LISTING
또는 AUTO_LOADER_BACKFILL
입니다.
details:operation_progress
개체에는 status
, duration_ms
, auto_loader_details:source_path
및 auto_loader_details:num_files_listed
필드도 포함됩니다.
다음 예제에서는 최신 업데이트에 대한 자동 로더 이벤트를 쿼리합니다.
SELECT
timestamp,
details:operation_progress.status,
details:operation_progress.type,
details:operation_progress:auto_loader_details
FROM
event_log_raw,
latest_update
WHERE
event_type like 'operation_progress'
AND
origin.update_id = latest.update_id
AND
details:operation_progress.type in ('AUTO_LOADER_LISTING', 'AUTO_LOADER_BACKFILL')
이벤트 로그를 쿼리하여 데이터 백로그 모니터링
DLT는 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 런타임 버전에 따라 사용할 수 없습니다.
서버리스를 사용하지 않는 파이프라인에 대한 이벤트 로그에서 확장된 자동 크기 조정 이벤트 모니터링
서버리스 컴퓨팅을 사용하지 않는 DLT 파이프라인의 경우 파이프라인에서 향상된 자동 크기 조정을 사용하도록 설정하면 이벤트 로그 캡처 클러스터 크기가 조정됩니다. 향상된 자동 크기 조정에 대한 정보가 포함된 이벤트에는 이벤트 유형이 autoscale
. 클러스터 크기 조정 요청 정보는 details:autoscale
개체에 저장됩니다. 다음 예제에서는 마지막 파이프라인 업데이트에 대한 향상된 자동 크기 조정 클러스터 크기 조정 요청을 쿼리합니다.
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
포함하여 자동 크기 조정 알고리즘에 대한 메트릭도 포함됩니다. 또한 이벤트는 알고리즘의 상태를 CLUSTER_AT_DESIRED_SIZE
, SCALE_UP_IN_PROGRESS_WAITING_FOR_EXECUTORS
및 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
DLT 파이프라인 감사
DLT 이벤트 로그 레코드 및 기타 Azure Databricks 감사 로그를 사용하여 DLT에서 데이터가 업데이트되는 방법에 대한 전체 그림을 가져올 수 있습니다.
DLT는 파이프라인 소유자의 자격 증명을 사용하여 업데이트를 실행합니다. 파이프라인 소유자를 업데이트하여 사용하는 자격 증명을 변경할 수 있습니다. DLT는 파이프라인 만들기, 구성 편집 및 업데이트 트리거를 포함하여 파이프라인에 대한 작업에 대한 사용자를 기록합니다.
Unity 카탈로그 감사 이벤트에 대한 참조는 Unity 카탈로그 이벤트 참조하세요.
이벤트 로그에서 사용자 작업 쿼리
이벤트 로그를 사용하여 이벤트(예: 사용자 작업)를 감사할 수 있습니다. 사용자 작업에 대한 정보가 포함된 이벤트에는 이벤트 유형이 user_action
.
작업에 대한 정보는 user_action
필드의 details
개체에 저장됩니다. 다음 쿼리를 사용하여 사용자 이벤트의 감사 로그를 생성합니다. 이 쿼리에 사용되는 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 |
---|---|---|
2021년 05월 20일 19시 36분 03초 +0000 | START |
user@company.com |
2021-05-20T19:35:59.913+0000 | CREATE |
user@company.com |
2021-05-27T00:35:51.971+0000 | START |
user@company.com |
런타임 정보
파이프라인 업데이트에 대한 런타임 정보(예: 업데이트의 Databricks 런타임 버전)를 볼 수 있습니다.
SELECT details:create_update:runtime_version:dbr_version FROM event_log_raw WHERE event_type = 'create_update'
dbr_version |
---|
11.0 |