nginx-optimized-pipeline: workers:4# CPU 코어 수에 맞게 조정 delay:100# 밀리초 단위 buffer: bounded_blocking: buffer_size:2048# 메모리에 따라 조정 batch_size:512# 처리량에 따라 조정 source: http: path:"/log/ingest" ssl:false request_timeout:10000# 10초 thread_count:8 processor: -grok: match: log: [ "%{COMMONAPACHELOG_DATATYPED}" ] break_on_match:true named_captures_only:true sink: -opensearch: hosts: ["https://localhost:9200"] username:"admin" password:"admin" insecure:true index:"nginx-logs-%{yyyy.MM.dd}" bulk_size:100 flush_timeout:5000
# Data Prepper 상태 확인 curl http://localhost:4900/list
# OpenSearch에서 데이터 확인 curl -X GET "localhost:9200/nginx-access-logs-*/_search?pretty"
이 설정을 통해 OpenSearch 3.1.0 이상에서 Data Prepper를 이용한 종합적인 서버 모니터링과 nginx 로그 수집 시스템을 구축할 수 있습니다. 각 파이프라인은 독립적으로 동작하며, 필요에 따라 추가적인 처리나 라우팅을 구성할 수 있습니다.
10. ARM64 아키텍처 지원
Data Prepper는 ARM64 아키텍처를 지원하지 않습니다. 그러나, 컨테이너 이미지를 빌드하여 ARM64 환경에서 실행할 수 있습니다. Dockerfile을 사용하여 이미지를 빌드하고, 필요한 의존성을 설치한 후, Data Prepper를 실행하는 스크립트를 추가해야 합니다.
소스 받기
1 2
git clone https://github.com/opensearch-project/data-prepper.git cd data-prepper
Dockerfile 생성
Dockerfile 을 아래처럼 생성합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
# 1. 빌드 스테이지 (ARM64용 OpenJDK 이미지 사용). 자신의 서버에 설치된 jre 버전을 이용해야 합니다. FROM --platform=linux/arm64 eclipse-temurin:11-jdk AS builder WORKDIR /app # 소스 복사 COPY . . # Gradle Wrapper로 빌드 (네트워크 환경에 따라 --no-daemon 옵션 추가 가능) RUN ./gradlew build -x test # RUN ./gradlew build -x test -x javadoc -Dfile.encoding=UTF-8
# 2. 런타임 스테이지 (ARM64용 OpenJDK 이미지 사용) FROM --platform=linux/arm64 eclipse-temurin:11-jre WORKDIR /app # 빌드 결과물 복사 (경로는 실제 빌드 결과물 위치에 따라 다를 수 있음) COPY --from=builder /app/data-prepper-dist/build/distributions/*.tar.gz ./ # 압축 해제 RUN tar -xzf *.tar.gz && rm *.tar.gz # 환경변수 및 실행 명령 (실제 실행 파일명에 맞게 수정) ENV JAVA_OPTS="" CMD ["sh", "-c", "./data-prepper-*/bin/data-prepper"]
소스 코드를 빌드하는데 ASCII 문자열 문제로 빌드가 안될 때가 있다. 그럴 때 아래 줄로 대체
RUN ./gradlew build -x test -x javadoc -Dfile.encoding=UTF-8
이미지 빌드
도커 이미지 생성에 시간이 꽤 걸립니다.
1 2 3 4 5 6
# x86 버전 docker build -t data-prepper-arm64 . # arm64 버전 # docker build --platform linux/arm64 -t data-prepper:arm64 . # 실행 # docker run --rm -it data-prepper:arm64