미리 보기에 참여하세요!
Databricks(Zerobus) 목적지는 미리 보기로 제공되고 있습니다. 액세스 권한을 요청하려면 계정 관리자에게 문의하세요.
개요
Observability Pipelines의 Databricks(Zerobus) 목적지를 사용하여 로그를 Databricks Unity Catalog 표로 전송하세요. 목적지는 로그를 Zerobus Ingest API로 스트리밍하고 OAuth 서비스 주체를 사용하여 Databricks에 인증합니다.
전제 조건
Databricks(Zerobus) 목적지를 구성하기 전에 다음을 수행해야 합니다.
스키마 및 표 설정
이 섹션의 SQL 예에서는 다음과 같은 자리 표시자를 사용합니다.
| 자리 표시자 | 설명 | 예 |
|---|
<USER> | 스키마와 표를 생성하는 사용자입니다. | databricks-user@example.com |
<CATALOG_NAME> | Unity Catalog 이름입니다. | main |
<SCHEMA_NAME> | 스키마 이름입니다. | obs_pipelines |
<TABLE_NAME> | 표 이름입니다. | apache_common_logs |
<YOUR_MANAGED_LOCATION> | (선택 사항) 관리되는 위치 URI입니다. | s3://your-bucket/managed |
참고: GRANT 명령은 Databricks 작업 공간 관리자가 실행해야 합니다.
Databricks 작업 공간에서:
Databricks 작업 공간 관리자가 아닌 경우, 관리자에게 다음 명령을 실행하여 스키마 생성 권한을 부여해 달라고 요청하세요.
GRANT CREATE SCHEMA ON CATALOG <CATALOG_NAME> TO <USER>;
스키마를 생성합니다.
CREATE SCHEMA IF NOT EXISTS <CATALOG_NAME>.<SCHEMA_NAME>
MANAGED LOCATION '<YOUR_MANAGED_LOCATION>';
- Note:
MANAGED LOCATION is optional. See Databricks’ Create Schemas documentation for more information.
관리자가 아닌 경우, 관리자에게 다음 명령을 실행하여 스키마에서 표를 생성할 권한을 부여해 달라고 요청하세요.
GRANT CREATE TABLE ON SCHEMA <CATALOG_NAME>.<SCHEMA_NAME> TO <USER>;
Observability Pipelines가 로그 데이터를 기록하는 표를 생성하려면 다음 명령을 실행하세요.
CREATE TABLE <CATALOG_NAME>.<SCHEMA_NAME>.<TABLE_NAME> (
host STRING,
message STRING,
service STRING,
source_type STRING,
timestamp TIMESTAMP
);
정규화된 전체 표 이름은 catalog.schema.table이며, 예를 들어 main.obs_pipelines.apache_common_logs입니다. Observability Pipelines Databricks 목적지를 설정할 때 표 이름에 입력하는 값입니다.
서비스 주체 설정
Databricks Zerobus Ingest API는 OAuth 인증을 사용합니다. 서비스 주체를 생성하면 OAuth 클라이언트 시크릿이 생성되고 OAuth 클라이언트 ID는 서비스 주체의 UUID입니다.
서비스 주체를 생성하려면 다음 단계를 따르세요.
- Databricks 작업 공간에서 User Settings > Identity and access > Service principals로 이동하세요.
- Add service principal을 클릭하세요.
- 서비스 주체가 생성된 후, 이를 위한 OAuth 시크릿을 생성하세요.
- 서비스 주체의 Application ID(클라이언트 ID)와 OAuth 클라이언트 시크릿을 기록해 두세요. Observability Pipelines Databricks 목적지를 구성할 때 이 2가지 정보가 모두 필요합니다.
- Databricks에서 이 SQL을 실행하여 서비스 주체에 카탈로그, 스키마 및 표에 대한 접근 권한을 부여하세요.
<SERVICE_PRINCIPAL_UUID>를 이전 단계에서 확인한 서비스 주체의 애플리케이션 ID로 바꿉니다.GRANT USE CATALOG ON CATALOG <CATALOG_NAME> TO <SERVICE_PRINCIPAL_UUID>;
GRANT USE SCHEMA ON SCHEMA <CATALOG_NAME>.<SCHEMA_NAME> TO <SERVICE_PRINCIPAL_UUID>;
GRANT SELECT, MODIFY ON TABLE <CATALOG_NAME>.<SCHEMA_NAME>.<TABLE_NAME> TO <SERVICE_PRINCIPAL_UUID>;
자세한 내용은 Databricks의 계정에 서비스 주체 추가 및 객체에 대한 권한 부여 문서를 참조하세요.
설정
파이프라인을 설정할 때 Databricks(Zerobus) 목적지를 구성하세요. 파이프라인은 UI에서 설정할 수 있으며, API 또는 Terraform을 사용하여 설정할 수 있습니다. 이 섹션에서는 UI를 기준으로 단계를 설명합니다.
참고: 표 스키마에 없는 로그 필드는 삭제됩니다. 예를 들어 로그에 id, name, host 필드가 있고 표 스키마에 name 및 host 열만 포함되어 있다면 id 필드는 삭제되어 표에 기록되지 않습니다.
파이프라인 UI에서 Databricks(Zerobus) 목적지를 선택한 후:
시크릿 관리: OAuth 클라이언트 시크릿의 식별자만 입력하세요. 실제 값은 입력하지 마세요.
If you enter secret identifiers and then choose to use environment variables, the environment variable is the identifier entered and prepended with DD_OP_. For example, if you entered PASSWORD_1 for a password identifier, the environment variable for that password is DD_OP_PASSWORD_1.
- Databricks 작업 공간의 수집 엔드포인트(예:
https://<workspace_id>.zerobus.<region>.cloud.databricks.com)를 입력하세요. Worker는 이 엔드포인트로 로그를 전송합니다. - 표 이름을
catalog.schema.table 형식으로 입력합니다(예: main.obs_pipelines.apache_common_logs). - Databricks 작업 공간의 Unity Catalog 엔드포인트(예:
https://<workspace>.cloud.databricks.com)를 입력하세요. Worker는 이 엔드포인트를 사용하여 표의 스키마를 읽습니다. - 인증 - 클라이언트 ID 필드에 서비스 주체의 애플리케이션 ID(예:
abcdefgh-1234-5678-abcd-ef0123456789)를 입력하세요. - 인증 - 클라이언트 시크릿**** 필드에 OAuth 클라이언트 시크릿의 식별자를 입력하세요. 비워두면 기본값이 사용됩니다.
선택적 설정
버퍼링
Toggle the switch to enable Buffering Options. Enable a configurable buffer on your destination to ensure intermittent latency or an outage at the destination doesn’t create immediate backpressure, and allow events to continue to be ingested from your source. Disk buffers can also increase pipeline durability by writing data to disk, ensuring buffered data persists through a Worker restart. See Destination buffers for more information.
- If left unconfigured, your destination uses a memory buffer with a capacity of 500 events.
- To configure a buffer on your destination:
- Select the buffer type you want to set (Memory or Disk).
- Enter the buffer size and select the unit.
- Maximum memory buffer size is 128 GB.
- Maximum disk buffer size is 500 GB.
- In the Behavior on full buffer dropdown menu, select whether you want to block events or drop new events when the buffer is full.
로그에 문자열 형식의 타임스탬프가 있고 Databricks 표에 TIMESTAMP 유형으로 선언된 타임스탬프 열이 있는 경우, 로그를 Databricks(Zerobus) 목적지로 전송하기 전에 문자열을 타임스탬프 형식으로 변환해야 합니다. Databricks(Zerobus)는 타임스탬프 형식을 TIMESTAMP 유형으로만 변환할 수 있습니다.
문자열 타임스탬프를 변환하지 않으면 Worker가 다음과 유사한 오류를 발생시킵니다.
Protobuf encoding failed: Error converting timestamp field: Can't convert '2012-04-23T10[41]15Z' to i64: invalid digit found in string
문자열 형식의 타임스탬프를 타임스탬프 형식으로 변환하려면 다음 단계를 따르세요.
- 파이프라인에 사용자 정의 프로세서를 추가합니다.
- 다음과 같은 사용자 정의 스크립트가 포함된 함수를 추가합니다.
.timestamp = parse_timestamp!(.timestamp, format: "%+")
See parse_timestamp for more information.
시크릿 기본값
These are the defaults used for secret identifiers and environment variables.
- Databricks OAuth 클라이언트 시크릿 식별자:
- Observability Pipelines Worker가 Databricks에 인증하는 데 사용하는 서비스 주체의 OAuth 클라이언트 시크릿을 참조합니다.
- 기본 식별자는
DESTINATION_DATABRICKS_ZEROBUS_OAUTH_CLIENT_SECRET입니다.
- Databricks OAuth client secret:
- The OAuth client secret for the service principal the Observability Pipelines Worker uses to authenticate to Databricks.
- The default environment variable is
DD_OP_DESTINATION_DATABRICKS_ZEROBUS_OAUTH_CLIENT_SECRET.
목적지가 작동하는 방식
이벤트 배치
이벤트 배치는 다음 중 하나의 파라미터를 충족하면 플러시됩니다. 자세한 내용은 이벤트 배치를 참조하세요.
| 최대 이벤트 | 최대 크기(MB) | 타임아웃(초) |
|---|
| 없음 | 10 | 1 |