Configuring OpenSearch Data Prepper
출처: 문서
본문
OpenSearch Data Prepper 구성
Data Prepper 설치 위치에 있는 data-prepper-config.yaml 파일을 편집하면 OpenSearch Data Prepper 구성을 커스터마이즈할 수 있어요. 다음 구성 옵션들은 파이프라인 구성 옵션과는 별개예요.
Data Prepper 구성
다음 옵션들을 사용하면 Data Prepper 구성을 커스터마이즈할 수 있어요.
| 옵션 | 필수 여부 | 타입 | 설명 |
|---|---|---|---|
ssl |
아니요 | Boolean | 서버 API에 TLS를 사용할지 여부를 나타내요. 기본값은 true예요. |
keyStoreFilePath |
아니요 | String | .jks 또는 .p12 키스토어 파일의 경로예요. ssl이 true이면 필수예요. |
keyStorePassword |
아니요 | String | 키스토어의 비밀번호예요. 선택 사항이며 기본값은 빈 문자열이에요. |
privateKeyPassword |
아니요 | String | 키스토어 내 개인 키의 비밀번호예요. 선택 사항이며 기본값은 빈 문자열이에요. |
serverPort |
아니요 | Integer | 서버 API에 사용할 포트 번호예요. 기본값은 4900이에요. |
metricRegistries |
아니요 | List | 생성된 메트릭을 게시하기 위한 메트릭 레지스트리예요. 현재는 Prometheus와 Amazon CloudWatch를 지원해요. 기본값은 Prometheus예요. |
metricTags |
아니요 | Map | 메트릭 레지스트리의 공통 메트릭 태그를 정의하는, 최대 3개의 키-값 쌍으로 이루어진 맵이에요. serviceName 키는 예약되어 있어요(기본값은 DataPrepper). 환경 변수 DATAPREPPER_SERVICE_NAME을 설정하면 이 값을 재정의할 수 있어요. metricTags에 serviceName이 포함되면 그 값이 우선해요. |
authentication |
아니요 | Object | 서버 API의 인증 구성이에요. 유효한 값은 http_basic이며, username과 password가 필요해요. 정의하지 않으면 서버는 인증을 수행하지 않아요. |
processorShutdownTimeout |
아니요 | Duration | 프로세서가 처리 중인 데이터를 마저 처리하고 안전하게 종료할 수 있도록 허용되는 시간이에요. 기본값은 30s예요. |
sinkShutdownTimeout |
아니요 | Duration | 싱크가 처리 중인 데이터를 비우고 안전하게 종료할 수 있도록 허용되는 시간이에요. 기본값은 30s예요. |
peer_forwarder |
아니요 | Object | Peer Forwarder 구성이에요. 자세한 내용은 Peer Forwarder 옵션을 참조하세요. |
circuit_breakers |
아니요 | circuit_breakers | 유입되는 데이터를 제어하기 위해 하나 이상의 서킷 브레이커를 구성해요. |
extensions |
아니요 | Object | 파이프라인이 공유하는 익스텐션 플러그인 구성이에요. 자세한 내용은 익스텐션 플러그인을 참조하세요. |
Peer Forwarder 옵션
다음 섹션에서는 피어 포워딩에 사용할 수 있는 다양한 구성 옵션을 자세히 설명해요.
피어 포워딩 일반 옵션
다음 표는 피어 포워딩의 일반 구성을 정리한 거예요.
| 옵션 | 필수 여부 | 타입 | 설명 |
|---|---|---|---|
port |
아니요 | Integer | 피어 포워딩 서버 포트예요(0–65535). 기본값은 4994예요. |
request_timeout |
아니요 | Integer | Peer Forwarder HTTP 서버의 요청 타임아웃(밀리초)이에요. 기본값은 10000이에요. |
server_thread_count |
아니요 | Integer | Peer Forwarder 서버에서 사용하는 스레드 수예요. 기본값은 200이에요. |
client_thread_count |
아니요 | Integer | Peer Forwarder 클라이언트에서 사용하는 스레드 수예요. 기본값은 200이에요. |
max_connection_count |
아니요 | Integer | Peer Forwarder 서버가 허용하는 최대 열린 연결 수예요. 기본값은 500이에요. |
max_pending_requests |
아니요 | Integer | ScheduledThreadPool 작업 큐에 담을 수 있는 최대 작업 수예요. 기본값은 1024예요. |
discovery_mode |
아니요 | String | 피어 디스커버리 모드예요. 유효한 값은 local_node(로컬에서 처리), static(고정된 피어 목록), dns(DNS A 레코드), aws_cloud_map(AWS 서비스 레지스트리)이에요. 기본값은 local_node예요. |
static_endpoints |
조건부 | List | 모든 Data Prepper 인스턴스의 엔드포인트예요. discovery_mode가 static으로 설정되면 필수예요. |
domain_name |
조건부 | String | DNS 기반 디스커버리에 사용되는 도메인 이름이에요(여러 A 레코드 지원). discovery_mode가 dns로 설정되면 필수예요. |
aws_cloud_map_namespace_name |
조건부 | String | AWS Cloud Map 네임스페이스예요. discovery_mode가 aws_cloud_map으로 설정되면 필수예요. |
aws_cloud_map_service_name |
조건부 | String | AWS Cloud Map 서비스 이름이에요. discovery_mode가 aws_cloud_map으로 설정되면 필수예요. |
aws_cloud_map_query_parameters |
아니요 | Map | AWS Cloud Map 인스턴스 속성에 적용되는 키-값 필터예요. |
buffer_size |
아니요 | Integer | 버퍼가 담을 수 있는 미확인 레코드의 최대 개수예요. 체크포인트에 아직 저장되지 않은, 기록된 레코드와 처리 중인 레코드도 여기에 포함돼요. 기본값은 512예요. |
batch_size |
아니요 | Integer | 한 번의 읽기 작업에서 반환할 수 있는 최대 레코드 수예요. 기본값은 48이에요. |
aws_region |
조건부 | String | AWS Certificate Manager(ACM), Amazon Simple Storage Service(Amazon S3) 또는 AWS Cloud Map에서 사용하는 AWS 리전이에요. 다음 경우에 필수예요: - use_acm_certificate_for_ssl: true인 경우. - ssl_certificate_file 또는 ssl_key_file이 S3 경로인 경우. - discovery_mode가 aws_cloud_map으로 설정된 경우. |
drain_timeout |
아니요 | Duration | 종료 전에 Peer Forwarder가 처리를 완료할 수 있도록 허용되는 시간이에요. 기본값은 10s예요. |
Peer Forwarder의 TLS/SSL 옵션
다음 옵션들을 사용하면 인증서 소스(파일, S3, ACM)와 검증 동작을 포함해서 Peer Forwarder의 TLS/SSL을 활성화하고 구성할 수 있어요.
| 옵션 | 필수 여부 | 타입 | 설명 |
|---|---|---|---|
ssl |
아니요 | Boolean | TLS/SSL을 활성화해요. 기본값은 true예요. |
ssl_certificate_file |
조건부 | String | SSL 인증서 체인 파일 경로 또는 S3 경로(s3://<bucket>/<path>)예요. ssl: true이고 use_acm_certificate_for_ssl: false이면 필수예요. 기본값은 config/default_certificate.pem이에요. Data Prepper 리포의 구성 예제를 참조하세요. |
ssl_key_file |
조건부 | String | SSL 개인 키 파일 경로 또는 S3 경로예요. ssl이 true로 설정되고 use_acm_certificate_for_ssl이 false로 설정되면 필수예요. 기본값은 config/default_private_key.pem이에요. |
ssl_insecure_disable_verification |
아니요 | Boolean | 서버 TLS 인증서 체인에 대한 검증을 비활성화해요. 기본값은 false예요. |
ssl_fingerprint_verification_only |
아니요 | Boolean | true이면 인증서 지문(fingerprint)만 검증해요(체인 검증은 비활성화돼요). 기본값은 false예요. |
use_acm_certificate_for_ssl |
아니요 | Boolean | true이면 ACM에서 가져온 인증서와 개인 키를 사용해 TLS/SSL을 활성화해요. 기본값은 false예요. |
acm_certificate_arn |
조건부 | String | ACM 인증서의 Amazon Resource Name(ARN)이에요. use_acm_certificate_for_ssl이 true로 설정되면 필수예요. |
acm_private_key_password |
아니요 | String | ACM 개인 키를 복호화하는 데 사용하는 비밀번호예요. 지정하지 않으면 Data Prepper가 무작위 비밀번호를 생성해요. |
acm_certificate_timeout_millis |
아니요 | Integer | ACM 인증서를 가져오는 타임아웃(밀리초)이에요. 기본값은 120000이에요. |
aws_region |
조건부 | String | ACM, S3 또는 AWS Cloud Map에서 사용하는 AWS 리전이에요. use_acm_certificate_for_ssl이 true로 설정되었거나, ssl_certificate_file 또는 ssl_key_file이 S3 경로이거나, discovery_mode가 aws_cloud_map으로 설정된 경우 필수예요. |
Peer Forwarder의 인증 옵션
다음 옵션을 사용하면 피어 간 요청에 대해 Peer Forwarder가 인증하는 방식을 지정할 수 있어요.
| 옵션 | 필수 여부 | 타입 | 설명 |
|---|---|---|---|
authentication |
아니요 | Map | 인증 방식이에요. 유효한 값은 mutual_tls(mTLS) 또는 unauthenticated(인증 없음)예요. 기본값은 unauthenticated예요. |
서킷 브레이커
Data Prepper에는 Java 힙 메모리 고갈을 방지하는 데 도움이 되는 서킷 브레이커가 포함되어 있어요. 버퍼 너머로 데이터를 메모리에 유지하는 상태 저장(stateful) 프로세서를 사용하는 파이프라인에서 특히 유용해요.
서킷 브레이커가 작동하면 브레이커가 리셋될 때까지 Data Prepper는 버퍼로 라우팅되는 유입 데이터를 거부해요.
다음 표는 사용 가능한 서킷 브레이커 구성 블록을 정리한 거예요.
| 옵션 | 필수 여부 | 타입 | 설명 |
|---|---|---|---|
heap |
아니요 | heap | 힙 서킷 브레이커를 활성화해요. 기본적으로는 비활성화되어 있어요. |
힙 서킷 브레이커
heap 서킷 브레이커는 JVM 힙이 지정된 사용량 임계값에 도달하면 유입 데이터를 거부하도록 Data Prepper를 구성해요. heap 파라미터는 다음 값들을 지원해요.
| 옵션 | 필수 여부 | 타입 | 설명 |
|---|---|---|---|
usage |
예 | Bytes | 서킷 브레이커를 작동시킬 JVM 힙 사용량이에요(예: 6.5gb). 현재 사용량이 이 값을 초과하면 브레이커가 작동해요. |
check_interval |
아니요 | Duration | 서킷 브레이커를 활성화할지 판단하기 위해 힙 크기를 확인하는 주기예요. 기본값은 500ms예요. |
reset |
아니요 | Duration | 새로운 힙 크기 확인이 브레이커 비활성화를 시도하기 전까지 서킷 브레이커가 활성 상태로 유지되는 최소 시간이에요. 기본값은 1s예요. |
익스텐션 플러그인
Data Prepper는 사용자가 구성할 수 있는 익스텐션 플러그인을 지원해요. 익스텐션 플러그인은 파이프라인 플러그인(소스, 버퍼, 프로세서, 싱크) 전반에서 공유되는 재사용 가능한 구성을 제공해요.
AWS 익스텐션 플러그인
aws 익스텐션은 secrets 구성을 제공해요. 이 구성은 AWS Secrets Manager와 통합되어 파이프라인의 민감한 구성 값을 안전하게 관리할 수 있게 해 줘요. 다음 예제는 기본적인 구성을 보여 줘요:
extensions:
aws:
secrets:
<YOUR_SECRET_CONFIG_ID_1>:
secret_id: <YOUR_SECRET_ID_1>
region: <YOUR_REGION_1>
sts_role_arn: <YOUR_STS_ROLE_ARN_1>
refresh_interval: <YOUR_REFRESH_INTERVAL>
disable_refresh: false
<YOUR_SECRET_CONFIG_ID_2>:
# ...
{% include copy.html %}
Secrets
secrets 구성은 다음 파라미터들을 지원해요.
| 옵션 | 필수 여부 | 타입 | 설명 |
|---|---|---|---|
secret_id |
예 | String | AWS 시크릿 이름 또는 ARN이에요. |
region |
아니요 | String | 시크릿이 속한 AWS 리전이에요. 기본값은 us-east-1이에요. |
sts_role_arn |
아니요 | String | Secrets Manager 요청에 대해 수임할 AWS Security Token Service(AWS STS) 역할이에요. 기본값은 null(자격 증명에 대한 표준 SDK 동작)이에요. |
refresh_interval |
아니요 | Duration | 시크릿 값을 새로 고치는 폴링 주기예요. 기본값은 PT1H예요. 자세한 내용은 시크릿 자동 새로 고침을 참조하세요. |
disable_refresh |
아니요 | Boolean | 최신 시크릿 값에 대한 주기적 폴링을 비활성화해요. 기본값은 false예요. true이면 refresh_interval이 무시돼요. |
시크릿 참조
pipelines.yaml에서 플러그인 설정에 시크릿 값을 참조하려면 다음 형식을 사용하세요:
- 일반 텍스트:
{% raw %}${{aws_secrets:<YOUR_SECRET_CONFIG_ID>}}{% endraw %} - JSON 키:
{% raw %}${{aws_secrets:<YOUR_SECRET_CONFIG_ID>:<YOUR_KEY>}}{% endraw %}
시크릿 치환에는 다음 설정 타입들을 사용할 수 있어요: string, number, long, short, integer, double, float, Boolean, character.
다음은 두 개의 시크릿 구성 ID(host-secret-config와 credential-secret-config)가 포함된 data-prepper-config.yaml 예제예요:
extensions:
aws:
secrets:
host-secret-config:
secret_id: <YOUR_SECRET_ID_1>
region: <YOUR_REGION_1>
sts_role_arn: <YOUR_STS_ROLE_ARN_1>
refresh_interval: <YOUR_REFRESH_INTERVAL_1>
credential-secret-config:
secret_id: <YOUR_SECRET_ID_2>
region: <YOUR_REGION_2>
sts_role_arn: <YOUR_STS_ROLE_ARN_2>
refresh_interval: <YOUR_REFRESH_INTERVAL_2>
{% include copy.html %}
그런 다음 pipelines.yaml에서 이 시크릿들을 다음과 같이 참조할 수 있어요:
sink:
- opensearch:
hosts: [{% raw %}"${{aws_secrets:host-secret-config}}"{% endraw %}]
username: {% raw %}"${{aws_secrets:credential-secret-config:username}}"{% endraw %}
password: {% raw %}"${{aws_secrets:credential-secret-config:password}}"{% endraw %}
index: "test-migration"
{% include copy.html %}
시크릿 자동 새로 고침
각 시크릿 구성마다 Data Prepper는 AWS Secrets Manager의 시크릿 로테이션을 지원하기 위해 일정한 주기로 최신 값을 폴링해요. 새로 고친 값은 연결/인증을 새로 고칠 수 있는 플러그인(예: 싱크)에서 사용돼요. 시크릿 구성이 여러 개인 경우, 초기 폴링 때 모든 구성에 걸쳐 최대 60s의 지터가 적용돼요.