다음을 통해 공유


Delta Live Tables 파이프라인 모니터링

이 문서에서는 Delta Live Tables 파이프라인에 대한 기본 제공 모니터링 및 관찰 기능 사용에 대해 설명합니다. 이러한 기능은 다음과 같은 작업을 지원합니다.

  • 파이프라인 업데이트의 진행률 및 상태를 관찰합니다. UI에서 사용할 수 있는 파이프라인 세부 정보를 참조 하세요.
  • 파이프라인 업데이트의 성공 또는 실패와 같은 파이프라인 이벤트에 대한 경고입니다. 파이프라인 이벤트에 대한 이메일 알림 추가를 참조하세요.
  • 데이터 계보, 데이터 품질 메트릭 및 리소스 사용량과 같은 파이프라인 업데이트에 대한 자세한 정보를 추출합니다. Delta Live Tables 이벤트 로그란?을 참조하세요.
  • 특정 이벤트가 발생할 때 수행할 사용자 지정 작업 정의 이벤트 후크를 사용하여 Delta Live Tables 파이프라인의 사용자 지정 모니터링 정의를 참조 하세요.

쿼리 성능을 검사하고 진단하려면 Delta Live Tables 파이프라인에 대한 액세스 쿼리 기록을 참조 하세요. 이 기능은 공개 미리 보기 상태입니다.

파이프라인 이벤트에 대한 이메일 알림 추가

다음이 발생할 때 알림을 받도록 하나 이상의 전자 메일 주소를 구성할 수 있습니다.

  • 파이프라인 업데이트가 성공적으로 완료되었습니다.
  • 다시 시도하거나 다시 시도할 수 없는 오류로 파이프라인 업데이트가 실패합니다. 모든 파이프라인 오류에 대한 알림을 받으려면 이 옵션을 선택합니다.
  • 다시 시도할 수 없는(심각한) 오류로 파이프라인 업데이트가 실패합니다. 다시 시도할 수 없는 오류가 발생한 경우에만 알림을 받으려면 이 옵션을 선택합니다.
  • 단일 데이터 흐름이 실패합니다.

파이프라인을 만들거나 편집할 때 메일 알림을 구성하려면 다음을 수행합니다.

  1. 알림 추가를 클릭합니다.
  2. 알림을 받을 전자 메일 주소를 하나 이상 입력합니다.
  3. 구성된 전자 메일 주소로 보낼 각 알림 유형에 대한 확인란을 클릭합니다.
  4. 알림 추가를 클릭합니다.

UI에서 사용할 수 있는 파이프라인 세부 정보는 무엇인가요?

파이프라인 그래프는 파이프라인에 대한 업데이트가 성공적으로 시작되는 즉시 표시됩니다. 화살표는 파이프라인의 데이터 세트 간의 종속성을 나타냅니다. 기본적으로 파이프라인 세부 정보 페이지는 테이블에 대한 최신 업데이트를 표시하지만, 드롭다운 메뉴에서 이전 업데이트를 선택할 수도 있습니다.

세부 정보에는 파이프라인 ID, 소스 코드, 컴퓨팅 비용, 제품 버전 및 파이프라인에 대해 구성된 채널이 포함됩니다.

데이터 세트를 테이블 형식으로 보려면 보려면 목록 탭을 클릭하세요. 목록 보기에서는 파이프라인의 모든 데이터 세트를 테이블의 행으로 표시하며, 파이프라인 DAG가 너무 커서 그래프 보기에서 시각화하기 어려울 때 유용합니다. 데이터 세트 이름, 유형 및 상태와 같은 여러 필터를 사용하여 테이블에 표시되는 데이터 세트를 제어할 수 있습니다. 다시 DAG 시각화로 전환하려면 그래프를 클릭하세요.

다음 계정으로 실행 사용자는 파이프라인 소유자이며 파이프라인 업데이트는 이 사용자의 권한으로 실행됩니다. run as 사용자를 변경하려면 권한을 클릭하고 파이프라인 소유자를 변경합니다.

데이터 세트 세부 정보를 어떻게 확인할 수 있나요?

파이프라인 그래프 또는 데이터 세트 목록에서 데이터 세트를 클릭하면 해당 데이터 세트에 대한 세부 정보가 표시됩니다. 세부 정보에는 데이터 세트 스키마, 데이터 품질 메트릭 및 데이터 세트를 정의하는 소스 코드에 대한 링크가 포함됩니다.

업데이트 기록 보기

파이프라인 업데이트의 기록 및 상태를 보려면 상단의 업데이트 기록 드롭다운 메뉴를 클릭하세요.

드롭다운 메뉴에서 업데이트를 선택하여 업데이트에 대한 그래프, 세부 정보 및 이벤트를 봅니다. 최신 업데이트로 돌아가려면 최신 업데이트 표시를 클릭합니다.

Delta Live Tables 이벤트 로그란?

Delta Live Tables 이벤트 로그에는 감사 로그, 데이터 품질 검사, 파이프라인 진행률, 데이터 계보 등 파이프라인과 관련된 모든 정보가 포함됩니다. 이벤트 로그를 사용하여 데이터 파이프라인의 상태를 추적, 이해 및 모니터링할 수 있습니다.

Delta Live Tables 사용자 인터페이스나 Delta Live Tables API에서, 또는 델타 테이블을 직접 쿼리하여 이벤트 로그 항목을 볼 수 있습니다. 이 섹션은 이벤트 로그를 직접 쿼리하는 방법에 중점을 둡니다.

또한, 이벤트 후크를 사용해 이벤트가 기록될 때 경고를 보내는 등 사용자 지정 작업을 정의할 수 있습니다.

이벤트 로그 스키마

다음 표에서는 이벤트 로그 스키마를 설명합니다. 일부 필드는 JSON 데이터를 포함하고 있으며, 쿼리를 수행하려면 구문 분석이 필요합니다. (예: details 필드) Azure Databricks는 JSON 필드를 구문 분석하기 위해 : 연산자를 지원합니다. (콜론 기호) 연산자를 참조하세요.

필드 설명
id 이벤트 로그 레코드에 대한 고유 식별자입니다.
sequence 이벤트를 식별하고 정렬하는 메타데이터가 포함된 JSON 문서입니다.
origin 이벤트 원본에 대한 메타데이터를 포함한 JSON 문서입니다. 예를 들어, 클라우드 공급자, 클라우드 공급자 지역, user_id, pipeline_id, pipeline_type으로 파이프라인이 만들어진 위치(DBSQL 또는 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 카탈로그에 테이블을 게시하는 경우, 파이프라인에 대한 이벤트 로그를 가져오기 위해 event_log 테이블 반환 함수(TVF)를 사용해야 합니다. 파이프라인 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 편집기를 사용할 수 있습니다.

파이프라인의 이벤트 쿼리를 간소화하기 위해 파이프라인 소유자는 event_log TVF를 통해 보기를 만들 수 있습니다. 다음 예제에서는 파이프라인의 이벤트 로그에 대한 보기를 만듭니다. 이 보기는 이 문서에서 다룬 예제 이벤트 로그 쿼리에 사용됩니다.

참고 항목

event_log TVF는 파이프라인 소유자만 호출할 수 있으며, event_log TVF를 통해 만든 보기는 파이프라인 소유자만 쿼리할 수 있습니다. 해당 보기는 다른 사용자와 공유할 수 없습니다.

CREATE VIEW event_log_raw AS SELECT * FROM event_log("<pipeline-ID>");

<pipeline-ID>를 Delta Live Tables 파이프라인의 고유 식별자로 바꾸세요. 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
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

이벤트 로그를 쿼리하여 데이터 백로그 모니터링

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 버전에 따라 사용할 수 없습니다.

서버리스를 사용하도록 설정하지 않은 파이프라인에 대한 이벤트 로그의 향상된 자동 크기 조정 이벤트 모니터링

서버리스 컴퓨팅을 사용하지 않는 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_executorsoptimal_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

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
2021-05-20T19:36:03.517+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 Runtime 버전)를 볼 수 있습니다.

SELECT details:create_update:runtime_version:dbr_version FROM event_log_raw WHERE event_type = 'create_update'
dbr_version
11.0