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의 장점과 단점
✅ 장점
- 강력한 데이터 처리 기능
- 필터(Filters) 기능을 사용하여 로그를 변환 및 정규화 가능.
- 다양한 입력 및 출력 지원
- Kafka, Redis, AWS S3, Elasticsearch 등 100개 이상의 다양한 데이터 소스와 연동 가능.
- 확장성 및 실시간 데이터 처리
- 대량의 로그 데이터를 빠르게 처리하고 분석할 수 있음.
- Elasticsearch와 긴밀한 통합
- Elastic Stack의 일부로, Elasticsearch와 최적의 호환성 제공.
❌ 단점
- 메모리 사용량이 높음
- JVM 기반(Java Runtime Environment)으로 실행되므로 메모리 최적화 필요.
- 설정이 복잡할 수 있음
- 다양한 플러그인을 활용해야 하기 때문에 초기 설정 및 튜닝이 어려울 수 있음.
- 고부하 환경에서 성능 튜닝 필요
- 대량의 데이터를 처리할 때 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 |