본문 바로가기
WIKI 기술 지식 베이스

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의 지터가 적용돼요.

더 알아보기 (Learn more)