서버리스 로그를 Unity Catalog 볼륨으로 전달하세요

서버리스 로그 전달은 서버리스 작업에서 Unity 카탈로그 볼륨으로 애플리케이션 로그를 기록합니다. 워크스페이스 관리자는 워크스페이스의 대상을 설정하여 팀이 로그를 보존하고 관찰 가능성 도구로 처리할 수 있도록 합니다. 로그는 작업 완료 후 비동기적으로 전달됩니다. 전송은 몇 분 정도 걸릴 수 있으며 처리 및 업로드 시간에 따라 달라질 수 있습니다.

Important

이 기능은 베타 버전으로 제공됩니다. 사용하려면 작업 공간 관리자가 Previews 페이지에서 Unity 카탈로그 볼륨에 대한 Serverless 로그 전달을 켜야 합니다. Azure Databricks 미리 보기 관리를 참조하세요.

Requirements

  • 서버 없는 컴퓨트와 Unity 카탈로그가 활성화된 작업 공간입니다.
  • 서버리스 환경 버전 5 이상.
  • 로그 전달을 구성하려면 작업 공간 관리자 역할이 필요합니다. 사용자에게 작업공간 관리자 역할 할당하기를 참조하세요.
  • 작업 공간에 대해 Unity 카탈로그 볼륨에 대한 서버리스 로그 전달 미리 보기가 활성화되었습니다. 이미 활성화되어 있을 수도 있습니다. 비활성화되어 있다면, 작업 공간 관리자가 Previews 페이지에서 활성화할 수 있습니다. 미리보기를 활성화하면 구성을 사용할 수 있게 됩니다; 전달이 시작되지는 않습니다.
  • 대상 볼륨. 전달을 구성하는 관리자에게는 카탈로그에 대한 USE SCHEMA, 스키마에 대한 WRITE VOLUME, 그리고 볼륨에 대한 READ VOLUME 및 USE CATALOG이 필요합니다. Unity 카탈로그 볼륨에 대한 권한을 참조하세요.

Note

제한된 접근 권한이 있는 신뢰할 수 있는 볼륨에만 전달을 설정하세요. 전달된 로그에는 사용자 이메일, 저장 경로, 스택 추적, 내부 식별자, 임시 서명 URL 등 민감한 정보가 포함될 수 있습니다. 로그에 민감한 정보가 없다고 보장할 수 없습니다.

목적지에 접근할 수 있는 사용자는 다른 사용자의 작업 로그를 포함한 전송된 로그를 읽을 수 있습니다. 볼륨에 대한 접근을 적절히 제한하세요.

로그 전달 활성화

작업 공간 관리자는 작업 공간에 로그 전달을 활성화해야 합니다.

  1. 사용자 메뉴에서 설정을 열어보세요.
  2. Workspace 관리자 항목에서 Compute를 클릭하세요.
  3. 로그 전달 섹션에서 서버리스 로그 전달을 켜세요.
  4. 로그 전달 구성 메뉴에서 볼륨 경로(예: /Volumes/observability/production/serverless_logs)를 입력하거나 폴더 아이콘을 클릭하여 볼륨을 탐색하세요.
  5. 저장을 클릭합니다. 목적지를 저장하면 전송이 가능해집니다.

이 설정은 작업 공간 수준에서 적용됩니다. 각 작업을 따로 설정할 필요는 없습니다.

전달된 로그 읽기

애플리케이션 출력에는 사용자 코드(사용자 정의 함수(UDF) 포함)의 표준 출력과 표준 오류가 포함됩니다. 카탈로그 탐색기를 사용해 목적지 볼륨을 탐색하고 전달된 파일을 검사하세요. Unity 카탈로그 볼륨의 파일 작업을 참조하세요.

로그 전달은 클러스터 메트릭이나 쿼리 프로필을 제공하지 않습니다. 작업 실행 페이지를 사용해 애플리케이션 로그와 함께 실행 상태와 성능을 조사하세요. Lakeflow 작업 모니터링을 참조하세요.

SQL로 전달된 로그 조회

read_files를 사용하여 전달된 텍스트 파일을 쿼리하세요 이 예시에서 볼륨 경로를 대상 경로로 대체하세요. 로그를 읽으려면 카탈로그에 대한 USE SCHEMA, 스키마에 대한 READ VOLUME, 볼륨에 대한 USE CATALOG가 필요합니다.

파일 경로에서 작업 및 실행 식별자를 추출하고 각 로그 출력 줄을 유지하는 임시 뷰를 만듭니다:

CREATE OR REPLACE TEMPORARY VIEW serverless_job_logs AS
SELECT
  regexp_extract(_metadata.file_path, '/job_id=([^/]+)/', 1) AS job_id,
  regexp_extract(_metadata.file_path, '/job_run_id=([^/]+)/', 1) AS job_run_id,
  regexp_extract(_metadata.file_path, '/task_run_id=([^/]+)/', 1) AS task_run_id,
  _metadata.file_name AS file_name,
  value AS log_line
FROM read_files(
  '/Volumes/observability/production/serverless_logs/',
  format => 'text'
);

작업 실행 간에 오류가 포함된 라인을 찾으세요:

SELECT job_id, job_run_id, task_run_id, file_name, log_line
FROM serverless_job_logs
WHERE log_line LIKE '%ERROR%';

오류 라인이 가장 많은 작업을 식별하세요:

SELECT
  job_id,
  count(*) AS error_lines,
  count(DISTINCT job_run_id) AS affected_runs
FROM serverless_job_logs
WHERE log_line LIKE '%ERROR%'
GROUP BY job_id
ORDER BY error_lines DESC;

이 쿼리들은 리터럴 텍스트 ERROR를 검색합니다. 필터를 애플리케이션의 로그 형식에 맞게 조정하세요. 테이블 값 함수 read_files을 참조하세요.

목적지를 변경하거나 배송을 사용 중지하세요

목적지를 변경하려면 설정 > 컴퓨팅 > 로그 전달을 열고 볼륨 이름 옆의 연필 아이콘을 클릭한 후 새 경로를 입력하거나 찾아본 후 저장을 클릭하세요. 목적지를 저장하면 전송이 가능하며, 전송이 비활성화된 경우에도 가능합니다.

전달을 비활성화하려면 설정 > 컴퓨트 > 로그 전달을 열고 서버리스 로그 전달을 끄세요. 이 설정은 대상 위치를 유지하므로 다른 볼륨을 선택하지 않고도 전달을 다시 활성화할 수 있습니다. 전송을 비활성화해도 이미 해당 볼륨에 기록된 파일들은 삭제되지 않습니다. 해당 파일들의 접근과 보존은 별도로 관리하세요.

누락된 로그 문제 해결

작업 완료 후 로그가 나타나지 않는 경우:

  1. 설정 > 컴퓨팅 로그 전달에서 >이 활성화되어 있는지 확인해 보세요. 미리보기를 활성화하는 것만으로는 전송이 시작되지 않습니다.
  2. 설정된 볼륨이 존재하는지, 그리고 전달을 설정한 관리자가 필요한 권한을 유지하는지 확인하세요.
  3. 작업이 서버리스 컴퓨트를 사용하고 애플리케이션 출력을 생성하는지 확인하세요. 작업 완료 후 비동기식 전달까지 몇 분 정도 기다리세요. 처리 및 업로드 시간이 배송을 지연시킬 수 있습니다.

고전적인 컴퓨트 로그 전달에 대해서는 Compute log delivery를 참조하세요.