Logstash란?

📌 Logstash는 다양한 소스에서 데이터를 수집하고 변환하여 여러 대상으로 전송하는 데이터 처리 도구입니다.
Elastic Stack의 주요 구성 요소 중 하나로, Elasticsearch, Kafka, Redis, AWS S3 등 다양한 시스템과 연동할 수 있습니다.

  • 개발자: 조던 시셀(Jordan Sissel)에 의해 개발.
  • 초기 목적: 독립적인 데이터 수집 및 처리 도구로 개발되었으나, Elasticsearch와의 긴밀한 연동이 필요해지면서 Elastic에 정식 합류.
  • 현재: Elastic Stack의 일부로 Elasticsearch와 함께 데이터 수집, 가공, 저장 기능을 수행.

Logstash의 역사

  • 2010년: 조던 시셀(Jordan Sissel)이 Logstash 프로젝트 시작.
  • 2013년: Logstash가 Elasticsearch와 연동되면서 급속히 성장.
  • 2015년: Elastic에 공식 합류, Elastic Stack의 핵심 구성 요소로 자리 잡음.
  • 현재: 데이터 수집 및 처리 분야에서 가장 널리 사용되는 오픈소스 솔루션 중 하나.

Logstash의 특징

(1) 오픈소스 기반

  • Apache 2.0 라이선스로 배포되어 누구나 자유롭게 사용 가능.
  • Elastic Stack의 일부로 지속적인 업데이트 및 지원 제공.

(2) 다양한 데이터 소스 지원

  • 파일 로그(Filebeat), 데이터베이스, 메시징 시스템(Kafka, RabbitMQ), AWS S3 등 다양한 입력 소스 지원.
  • 실시간 데이터 및 배치 데이터 수집 모두 가능.

(3) 강력한 데이터 변환 기능

  • 데이터를 필터링, 변환, 정규화하여 분석 및 저장 최적화.
  • Grok, Date, Mutate 등의 다양한 플러그인을 활용하여 복잡한 데이터 가공 가능.

(4) 유연한 데이터 출력

  • Elasticsearch뿐만 아니라, Redis, Kafka, AWS S3, 파일 시스템, 이메일, HTTP 등으로 데이터 전송 가능.
  • 여러 개의 출력 경로를 동시에 사용할 수 있음.

(5) 확장 가능한 플러그인 구조

  • 200개 이상의 입력(Input), 필터(Filter), 출력(Output) 플러그인 지원.
  • 필요에 따라 새로운 플러그인 개발 및 추가 가능.

Logstash의 데이터 처리 방식

Logstash는 데이터를 3단계(입력 → 필터 → 출력) 로 처리합니다.

입력(Inputs)  ➡️  필터(Filters)  ➡️  출력(Outputs)

(1) 입력(Inputs)

  • 다양한 데이터 소스로부터 데이터를 수집.
  • 대표적인 입력 플러그인:
    • Filebeat (파일 로그)
    • JDBC (데이터베이스)
    • Kafka / RabbitMQ (메시지 큐)
    • HTTP / TCP / UDP (네트워크 입력)
    • AWS S3 (클라우드 저장소)

입력 예제 (파일 로그 수집)

input {
  file {
    path => "/var/log/syslog"
    start_position => "beginning"
  }
}
  • /var/log/syslog 로그 파일을 읽어오기.

(2) 필터(Filters)

  • 데이터를 변환하고 가공하는 과정.
  • 불필요한 데이터를 제거하거나, 필요한 필드를 추가 및 변환 가능.
  • 대표적인 필터 플러그인:
    • Grok (정규식 기반 패턴 매칭)
    • Date (날짜 변환)
    • Mutate (데이터 변환 및 필드 추가)
    • GeoIP (IP 주소 기반 위치 데이터 추가)

필터 예제 (Grok을 사용한 로그 분석)

filter {
  grok {
    match => { "message" => "%{IP:client_ip} %{USER:username} %{GREEDYDATA:request}" }
  }
}
  • 로그에서 IP 주소(client_ip), 사용자(username), 요청 정보(request) 를 추출.

(3) 출력(Outputs)

  • 변환된 데이터를 다양한 대상에 저장.
  • 대표적인 출력 플러그인:
    • Elasticsearch (데이터 저장 및 검색)
    • Kafka / Redis (메시지 큐 시스템)
    • AWS S3 / Google Cloud Storage (클라우드 저장소)
    • 파일 시스템 (로컬 파일 저장)
    • E-mail / Slack (알림 발송)

출력 예제 (Elasticsearch와 파일에 동시에 저장)

output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "logs-%{+YYYY.MM.dd}"
  }
  file {
    path => "/var/log/logstash_output.log"
  }
}
  • 데이터를 Elasticsearch의 logs-YYYY.MM.dd 인덱스로 저장.
  • 동시에 /var/log/logstash_output.log 파일에도 저장.

Logstash의 활용 분야

활용 분야 설명
로그 수집 및 분석 서버, 애플리케이션, 네트워크 로그를 실시간으로 수집 및 분석
보안 및 SIEM(Security Information and Event Management) 보안 이벤트 로그 수집 및 위협 탐지
실시간 데이터 스트리밍 Kafka, Redis, AWS S3 등과 연동하여 데이터 스트리밍
IoT 및 센서 데이터 처리 수백만 개의 IoT 장치로부터 실시간 데이터 수집 및 분석
애플리케이션 모니터링(APM) 애플리케이션 성능 로그 수집 및 분석
비즈니스 인텔리전스(BI) 실시간 데이터 수집 후 Elasticsearch 및 Kibana를 활용한 분석

Logstash의 장점과 단점

장점

  1. 강력한 데이터 처리 기능
    • 필터(Filters) 기능을 사용하여 로그를 변환 및 정규화 가능.
  2. 다양한 입력 및 출력 지원
    • Kafka, Redis, AWS S3, Elasticsearch 등 100개 이상의 다양한 데이터 소스와 연동 가능.
  3. 확장성 및 실시간 데이터 처리
    • 대량의 로그 데이터를 빠르게 처리하고 분석할 수 있음.
  4. Elasticsearch와 긴밀한 통합
    • Elastic Stack의 일부로, Elasticsearch와 최적의 호환성 제공.

단점

  1. 메모리 사용량이 높음
    • JVM 기반(Java Runtime Environment)으로 실행되므로 메모리 최적화 필요.
  2. 설정이 복잡할 수 있음
    • 다양한 플러그인을 활용해야 하기 때문에 초기 설정 및 튜닝이 어려울 수 있음.
  3. 고부하 환경에서 성능 튜닝 필요
    • 대량의 데이터를 처리할 때 CPU 및 메모리 사용량이 증가할 수 있음.

Logstash와 Beats의 차이점

  Logstash Beats
주요 역할 데이터 수집, 변환, 필터링 경량 데이터 수집
구현 방식 플러그인 기반 데이터 처리 개별 모듈(Filebeat, Metricbeat 등)
사용 예시 복잡한 데이터 변환 및 필터링이 필요한 경우 단순한 로그 및 메트릭 수집
리소스 소비 상대적으로 무거움(JVM 기반) 가벼움(Go 언어 기반)

8. 결론

Logstash는 강력한 데이터 수집 및 처리 기능을 제공하는 오픈소스 솔루션으로, 다양한 시스템과 연동이 가능하고 실시간 데이터 분석에 최적화되어 있습니다.
Elasticsearch와 함께 사용하면 로그 분석, 보안 모니터링, 실시간 데이터 스트리밍 등 다양한 분야에서 활용할 수 있으며, Kibana와 결합하면 데이터 시각화까지 손쉽게 가능합니다. 🚀

'Elastic Search > Elastic Stack' 카테고리의 다른 글

[Elasticsearch] Beats  (1) 2025.02.01
[Elasticsearch] Kibana  (0) 2025.02.01
[Elasticsearch] Elasticsearch  (0) 2025.02.01
[Elasticsearch] 엘라스틱 서치란?  (0) 2025.02.01
[Elasticsearch] 엘라스틱 서치의 특징  (0) 2025.01.31

+ Recent posts