ELK스택의 대표 수집 도구 Logstash(2012 출시)와 OpenSearch의 수집 도구 Data Prepper(2021 출시)의 비교

 

비교 항목

  • High-level diagram
  • Overview
  • Components
  • Usage 

 

High-level diagram

Logstash

 

Data Prepper

 

 

Overview

Logstash

Logstash는 다양한 소스에서 데이터를 수집하고 변환 후 원하는 '저장소'로 보내는 무료 개방형 서버 측 데이터 처리 파이프라인

  • 수많은 파이프라인 패턴을 구축할 수 있도록 해주는 수많은 전투 테스트를 거친 수집 프레임워크. 한 파이프라인의 출력을 다른 파이프라인으로 연결할 수 있는 옵션과 함께 많은 입력, 필터, 출력을 허용
  • HTTP/TCP/CSV에서 GCS/AWS S3/Elasticsearch에 이르기까지 다양한 데이터 소스에서 읽고 쓸 수 있는 방대한 입력 및 출력 플러그인 카탈로그 존재
  • 내구성 측면에서 Logstash는 전송할 수 없는 요청을 일시적으로 버퍼링하는 영구 큐(Persistent Queue)와 수집에 실패한 문서를 처리하기 위한 데드 레터 큐(Dead Letter Queue) 제공

 

Data Prepper

Data Prepper는 다운스트림 분석 및 시각화를 위해 데이터를 필터링, 보강, 변환, 정규화 및 집계할 수 있는 서버 측 데이터 수집기

  • OpenSearch의 공식 수집 도구로써 소스, 버퍼, 프로세서, 싱크와 같은 유사한 개념을 사용하여 하나의 소스에서 읽고 여러 데이터 싱크 가능하게 함
  •  소스/프로세서/버퍼 카탈로그는 Logstash에 비해 제한적이지만 Logstash configuration 파일의 실행을 지원하며(실행 가능한 구성 제한적) 로그 및 트레이스를 위한 OpenTelemetry와의 통합 지원
  • OpenTelemetry 수집기를 활용하는 OpenSearch 분산 추적(distributed tracing)지원 제공 (Logstash는 미지원)

 

 

Components

Logstash

Input plugins (총 56개)

다양한 소스로부터 문서를 수집할 수 있게 해주는 데이터 input entrypoint

azure_event_hubs google_cloud_storage kinesis snmptrap
beats google_pubsub log4j sqlite
cloudwatch graphite lumberjack sqs
couchdb_changes heartbeat meetup stdin
dead_letter_queue http pipe stomp
elastic_agent http_poller puppet_facter syslog
elastic_serverless_forwarder imap rabbitmq tcp
elasticsearch irc redis twitter
exec java_generator relp udp
file java_stdin rss unix
ganglia jdbc s3 varnishlog
gelf jms s3-sns-sqs websocket
generator jmx salesforce wmi
github kafka snmp xmpp

 

 

Filter plugins (총 47개)

선택 사항이며, 필드 제거와 같은 간단한 작업부터 사용자 정의 루비 코드 허용에 이르기까지 Logstash가 데이터 처리를 할 수 있게 해줌

age drop json syslog_pri
aggregate elapsed json_encode
threats_classifier
alter elasticsearch kv throttle
bytes environment memcached tld
cidr extractnumbers metricize translate
cipher fingerprint metrics truncate
clone geoip mutate urldecode
csv grok prune useragent
date http range uuid
de_dot i18n ruby
wurfl_device_detection
dissect java_uuid sleep xml
dns jdbc_static split  

 

 

Output plugins (57개)

파이프라인의 끝. 하나 또는 여러 개 정의 필요

boundary google_bigquery metriccatcher sns
circonus google_cloud_storage mongodb solr_http
cloudwatch google_pubsub nagios sqs
csv graphite nagios_nsca statsd
datadog graphtastic opentsdb stdout
datadog_metrics http pagerduty stomp
dynatrace influxdb pipe syslog
elastic_app_search irc rabbitmq tcp
elastic_workplace_search java_stdout redis timber
elasticsearch juggernaut redmine udp
email kafka riak webhdfs
exec librato riemann websocket
file loggly s3 xmpp
ganglia lumberjack sink zabbix
gelf      

 

 

Persistent Queue (PQ)

Logstash가 데이터 손실을 방지하고 이벤트를 디스크에 저장하여 재시작 후 복구 가능하며 출력에서 처리할 수 없는 메시지 버스트 흡수 가능.

이벤트가 메모리에서 처리되기 때문에 기본적으로 비활성화 되어있는 기능으로, 활성화 시 수집 속도 느려짐

 

 

Dead Letter Queue (DLQ)

코드 400 또는 404로 수집에 실패한 문서에 특정 파이프라인(입력-필터-출력)을 설정하여 문제를 해결한 다음 다시 수집 시도 가능.

데이터 손실 없이 문서의 오류를 수정할 수 있기 때문에 매우 편리하지만 기본적으로 비활성화 되어있으며 Elasticsearch output에서만 지원

 

 

 

Data Prepper

Source (5개)

http_source
otel_metrics_source
otel_trace_source source
s3 source
otel_logs_source

Logstash에 비해 사용 가능한 소스가 훨씬 적으며, Logstash의 Kafka, JDBC, Syslog 및 FIlebeat 입력 소스 사용 불가.

Fluentd와 같은 대체 로그 수집기로 s3, http_source 소스와 함께 사용 가능 

 

 

Buffer

이벤트를 누적하며 사용자 지정 버퍼를 만들기로 결정한 경우 메모리 또는 디스크 사용 가능하지만 현재 in-memory bounded blocking buffer만 사용 가능. s3 버킷을 통해 로그를 소비 시 Data Prepper 내부에서 버퍼링 안할 수 있음

 

 

Processor

Logstash 필터와 동일한 목적을 수행하며 이벤트 데이터를 필터링, 변환, 보강하는 기능 제공

 

 

사용 가능 filter/processor 비교

일반적으로 Logstash의 기능이 더 강하지만, Data Prepper에는 OpenTelemetry 및 이상 징후 탐색 프로세서(anomaly detection processors) 사용 가능. 이벤트가 사용해야 하는 싱크를 결정하는 조건을 정의하는 데 사용할 수 있는 "routes" 프로세서도 존재.

 

 

SInk (4개)

Data Prepper가 데이터를 쓰는 위치를 정의

file sink
OpenSearch sink
pipeline sink
stdout sink

 

 

Dead Letter Queue (DLQ)

실패한 문서를 특수 형식의 JSON 배열로 s3 버킷에 저장 가능

dlq-v${version}-${pipelineName}-${pluginId}-${timestampIso8601}-${uniqueId}

현재 s3 소스에서만 사용 가능

 

 

Usage

아래 로그 파일을 읽을 때 Logstash와 Data Prepper usage 비교

[2023-05-15 08:22:35][INFO][192.168.1.10] – User ‘gustavo llermaly’ successfully logged in.
[2023-05-15 08:23:05][INFO][192.168.1.10] – User ‘gustavo llermaly’ visited ‘/my-account’.
[2023-05-15 08:24:30][ERROR][192.168.1.10] – System crashed while user ‘gustavo llermaly’ was active.

 

 

Logstash

일반적으로 호스트에 FileBeat 설치해 로그 파일을 읽은 다음 Logstash로 전송 (file input 플러그인 사용해 직접 읽기 가능)

 

 

Data Prepper

Logstash Flow와 유사하지만 데이터 수집기로 Filebeat를 사용하는 대신, HTTP 소스를 사용해 로그를 Data Prepper로 전송하는 FluentBit 사용

 

 

 

Conclusion

  • Logstash가 더 많은 플러그인과 다중 필터 입출력을 수행할 수 있는 기능으로 더 많은 유연성 제공
  • Logstash는 더 강력한 dead letter queue와 persistent queue 시스템 갖춤
  • Data Prepper는 로그와 트레이싱을 위한 도구를 제공에 초점을 맞춤
  • Data Prepper는 이상 징후 탐색 프로세서(anomaly detection processor)와 OpenTelemetry 통합을 위한 APM 지원
  • Data Prepper는 부분적으로 Logstash 파일 사용 지원
  • OpenSearch 사용 시 Data Prepper는 Apache 2.0 오픈 소스 라이선스에 따라 계속 개발되고 있어 OpenSearch와의 호환 보장되지만 Logstash의 경우 7.16.2 이상의 버전 사용 불가 

이미 Logstash 사용중인 사용자들은 전환 전 Data Prepper에 더 많은 Logstash기능이 나타날 때 까지 기다리는게 좋으나, 새로 시작하는 사용자는 Data Prepper가 OpenSearch와 장기적으로 호환이 가능하니 고려 필요

 

 

 

출처: https://opster.com/guides/elasticsearch/data-architecture/data-prepper-vs-logstash/

'OpenSearch' 카테고리의 다른 글

K8S OpenSearch 클러스터 구축  (0) 2023.11.03

OpenSearch란? 

2021년 1월 21일, Elastic에서 Elasticsearch와 Kibana의 Apache 2.0 라이선스 소스 코드를 Elastic License 및 SSPL 1.0에 따라 이중 라이선스로 전환(7.11 릴리즈부터 적용)

해당 라이선스는 오픈 소스가 아니며 사용자에게 동일한 자유를 제공하지 않음

 

https://www.elastic.co/kr/pricing/faq/licensing 

 

기존의 오픈소스 코드를 기본으로 Open Distro for Elasticsearch 플러그인을 개발하여 고급 보안, 이벤트 모니터링 및 알람 등의 기능을 지원하던 AWS는 Elasticsearch 및 Kibana의 마지막 OpenSource 버전(7.10)을 포크하여 OpenSearch라는 이름으로 Apache 2.0 라이선스로 Github에 오픈.

 

 

OpenSearch는 Apache 2.0 라이선스 하에 제공되는 분산형 커뮤니티 기반 100% 오픈 소스 검색 및 분석 제품군으로, 실시간 애플리케이션 모니터링, 로그 분석 및 웹 사이트 검색과 같이 다양한 사례에 사용.

 OpenSearch는 데이터 탐색을 쉽게 해주는 통합 시각화 도구 OpenSearch 대시보드와 함께 대량 데이터 볼륨에 빠르게 액세스하고 응답하며 뛰어난 확장성을 지닌 시스템을 제공.

Apache Lucene 검색 라이브러리로 구동되며 k-nearest neighbors(KNN) 검색, SQL, Anomaly Detection, Machine Learning Commons, Trace Analytics, 전체 텍스트 검색 등 다수의 검색 및 분석 기능을 지원하며, 원하는 방식으로 사용, 수정, 확장, 수익화, 재판매가 가능한 100% 오픈 소스 제품

 

 

K8S OpenSearch 클러스터 구축 

Helm은 Kubernetes 클러스터에서 애플리케이션을 손쉽게 배포하기 위해 사용되는 패키징툴이며, OpenSearch 또한 OpenSearch Project Helm-Charts를 이용하여 쉬운 설치와 관리 가능

https://github.com/opensearch-project/helm-charts

 

 

1. Helm repository 추가 및 업데이트

helm repo add opensearch https://opensearch-project.github.io/helm-charts/
helm repo update

 

 

2. nodetype 별 yaml 파일 작성

helm install 시 반영할 nodetype(master, coordinator, data)별로 custom yaml 파일을 작성하여 Release 구분

https://opensearch.org/blog/setup-multinode-cluster-kubernetes/ 

 

master.yaml

clusterName: "opensearch-cluster"

 nodeGroup: "master"

 masterService: "opensearch-cluster-master"

 roles:
   master: "true"
   ingest: "false"
   data: "false"
   remote_cluster_client: "false"

 replicas: 1

 

 

data.yaml

clusterName: "opensearch-cluster"

 nodeGroup: "data"

 masterService: "opensearch-cluster-master"

 roles:
   master: "false"
   ingest: "true"
   data: "true"
   remote_cluster_client: "false"

 replicas: 1

 

 

client.yaml (coordinator)

 clusterName: "opensearch-cluster"

 nodeGroup: "client"

 masterService: "opensearch-cluster-master"

 roles:
   master: "false"
   ingest: "false"
   data: "false"
   remote_cluster_client: "false"

 replicas: 1

 

 

3. yaml 파일 이용해 helm 배포

helm install opensearch-master opensearch/opensearch -f  usr/data/master.yaml
helm install opensearch-data opensearch/opensearch -f  usr/data/data.yaml
helm install opensearch-client opensearch/opensearch -f  usr/data/client.yaml

 

 

※ 구축 시 발생 가능 이슈

 

- vm.max_map_count 관련 에러

ERROR: [1] bootstrap checks failed [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

 

  • yaml파일에 아래 옵션 적용 후 install
sysctl:
  enabled: true

sysctlVmMaxMapCount: 262144

 

 

- 클러스터 생성 후 바로 접속 시 unauthorized 메세지 발생하며 접속 불가할 경우

  • master 노드 접속해 /usr/share/opensearch/plugins/opensearch-security/tools 경로 아래의 securityadmin.sh 실행해 security index 생성 후 접속 가능
cd /usr/share/opensearch/plugins/opensearch-security/tools
./securityadmin.sh -cd ../securityconfig/  -icl -nhnv \
   -cacert ../../../config/root-ca.pem \
   -cert ../../../config/kirk.pem \
   -key ../../../config/kirk-key.pem

 

 

 

4. opensearch dashboard 배포 및 클러스터 UI 접속

helm install dashboards opensearch/opensearch-dashboards

 

  •  

 

 

 

 

 

 

'OpenSearch' 카테고리의 다른 글

Data Prepper vs Logstash  (1) 2023.11.18

+ Recent posts