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_idpipeline_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_datasetinput_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_executorsoptimal_num_executors: 및 )도 포함됩니다. 또한 이벤트는 알고리즘의 상태 ,, 등과 같은 CLUSTER_AT_DESIRED_SIZESCALE_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

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