현대 Cloud 환경에서는 Application, Server, Container에서 발생하는 수많은 Log 데이터를 효율적으로 수집하고 분석하는 것이 중요합니다.
특히 Kubernetes와 Microservices Architecture에서는 수십 개 이상의 Service가 동시에 동작하기 때문에 각 Server에 직접 접속하여 Log를 확인하는 방식은 한계가 있습니다.
기존 방식:
Application 실행
↓
Log File 생성
↓
Server 접속
↓
직접 Log 확인
하지만 대규모 환경에서는 다음 문제가 발생합니다.
- Log 위치 분산
- 데이터 형식 불일치
- 장애 원인 분석 어려움
- 실시간 검색 어려움
이를 해결하기 위해 Log Collection Pipeline이 필요합니다.
Logstash는 다양한 Source에서 Log 데이터를 수집하고 변환하여 원하는 목적지로 전달하는 Data Processing Pipeline Tool입니다.
예:
Application Log
↓
Logstash Input
↓
Filter 처리
↓
Elasticsearch 저장
↓
Kibana 분석
Logstash는 ELK Stack에서 Log 데이터 처리 역할을 담당하는 핵심 Component입니다.
| 구성 요소 | 역할 |
|---|---|
| Input | Log 데이터 수집 |
| Filter | 데이터 변환 |
| Output | 데이터 전달 |
| Pipeline | 처리 흐름 관리 |
| Plugin | 기능 확장 |
Logstash 구조를 이해하면 Enterprise Log Management와 Observability Architecture를 설계할 수 있습니다.
Logstash란?
Logstash는 Elastic에서 개발한 Open Source Data Processing Pipeline Tool입니다.
다양한 데이터를 수집하고 변환하여 저장 시스템으로 전달합니다.
주요 기능:
- Log 수집
- 데이터 Parsing
- 데이터 Filtering
- 데이터 변환
- 외부 시스템 전달
ELK Stack의 데이터 처리 계층입니다.
Logstash Architecture
기본 구조:
Data Source↓Input Plugin↓Filter Plugin↓Output Plugin↓Destination
데이터 흐름을 Pipeline 형태로 관리합니다.
Logstash Pipeline이란?
Pipeline은 Input, Filter, Output으로 구성된 데이터 처리 과정입니다.
구조:
Input↓Filter↓Output
각 단계를 조합하여 원하는 데이터 흐름을 구성합니다.
Logstash Input Plugin
Input은 데이터를 가져오는 역할을 합니다.
대표 Input:
| Input | 용도 |
|---|---|
| File | Log File 수집 |
| Beats | Agent 데이터 수집 |
| Kafka | Message 수집 |
| HTTP | API 데이터 수집 |
| Syslog | System Log 수집 |
다양한 환경에서 데이터를 가져올 수 있습니다.
Logstash Filter Plugin
Filter는 수집된 데이터를 분석하고 변환합니다.
대표 Filter:
| Filter | 역할 |
|---|---|
| Grok | Log Parsing |
| Mutate | Field 수정 |
| Date | 시간 변환 |
| GeoIP | 위치 정보 추가 |
비정형 Log를 검색 가능한 데이터로 변환합니다.
Grok Pattern이란?
Grok은 Text 형태의 Log를 구조화된 Field로 변환하는 기능입니다.
예:
기존 Log:
ERROR 2026-08-14 User login failed
변환:
{ "level":"ERROR", "message":"User login failed"}
Log 분석을 쉽게 만듭니다.
Logstash Output Plugin
Output은 처리된 데이터를 전달하는 단계입니다.
대표 Output:
| Output | 용도 |
|---|---|
| Elasticsearch | Log 저장 |
| Kafka | Message 전달 |
| File | 파일 저장 |
| HTTP | API 전달 |
ELK 환경에서는 Elasticsearch와 가장 많이 연결됩니다.
Logstash와 ELK Stack
전체 구조:
Application↓Logstash↓Elasticsearch↓Kibana↓Dashboard
Log 수집부터 분석까지 자동화합니다.
Logstash와 Kubernetes
Kubernetes Logging Architecture:
Pod↓Container Log↓Filebeat↓Logstash↓Elasticsearch↓Kibana
Cluster 전체 Log를 중앙 관리합니다.
Logstash와 Beats
대규모 환경에서는 Beats와 함께 사용합니다.
구조:
Server↓Filebeat↓Logstash↓Elasticsearch
Filebeat는 가볍게 데이터를 전달하고 Logstash는 변환 작업을 담당합니다.
Logstash와 Microservices
Microservices 환경:
Service A LogService B LogService C Log ↓ Logstash ↓ Elasticsearch
여러 Service Log를 통합 관리합니다.
Logstash Configuration
기본 Pipeline 예:
input { file { path => "/var/log/app.log" }}filter { grok { match => { "message" => "%{GREEDYDATA}" } }}output { elasticsearch { hosts => ["localhost:9200"] }}
Pipeline을 Code 형태로 관리합니다.
Logstash Best Practice
권장:
- Pipeline 분리
- 불필요한 Filter 제거
- Buffer 설정
- Log Retention 관리
- Sensitive Data 제거
안정적인 Log Processing 환경을 구축합니다.
Logstash 장애 분석
서비스 상태 확인:
systemctl status logstash
Configuration 검사:
logstash --config.test_and_exit
Log 확인:
journalctl -u logstash
확인:
- Input 연결 상태
- Filter 오류
- Output 연결
- Elasticsearch 상태
Logstash 장점
| 장점 | 설명 |
|---|---|
| 수집 | 다양한 데이터 지원 |
| 변환 | Log Parsing 가능 |
| 확장 | Plugin 지원 |
| 통합 | ELK 연결 |
Logstash는 Enterprise Log Pipeline Architecture의 핵심 Component입니다.
자주 묻는 질문
Logstash와 Filebeat 차이는 무엇인가요?
Filebeat는 가벼운 Log 전달 Agent이고 Logstash는 데이터를 변환하고 처리하는 Pipeline Engine입니다.
Logstash는 반드시 Elasticsearch와 사용해야 하나요?
아닙니다.
Kafka, Database, File 등 다양한 Output을 지원합니다.
Kubernetes에서도 사용하나요?
사용합니다.
Container Log를 중앙 수집하고 분석하기 위해 많이 활용됩니다.
마무리
Logstash는 다양한 Source에서 Log 데이터를 수집하고 변환하여 Elasticsearch 같은 저장 시스템으로 전달하는 Data Processing Pipeline Tool입니다.
| 구성 요소 | 역할 |
|---|---|
| Input | 데이터 수집 |
| Filter | 데이터 변환 |
| Output | 전달 |
| Pipeline | 처리 흐름 |
| Plugin | 기능 확장 |
Logstash 구조를 이해하면 ELK Stack, Kubernetes Logging, Enterprise Observability Architecture를 구축할 수 있습니다.