1. Logstash 등장배경
* 로그의 문제점 => 구조화 되어있지 않음
1) 문제점 1 : 일관성 없는 포맷
- 모든 애플리케이션/디바이스 각자 로그를 만듦
- 날짜 포맷 종류이 많음
- 로그는 일관성 없는 포맷 때문에 검색하기가 힘듦
2) 문제점2 : 날짜 포맷이 너무 많음
예) 14290788
Oct 11 20:21:47
[29/Apr/2011:07:05:26 +0000]
3) 문제점3 : 중심화되어있지 않은 로그들
- 로그는 모든 서버/디바이스 별로 있음
- IoT
- 많은 서버가 다른 로그를 가지고 있음
- ssh+ grep은 확장성이 없음
4) 문제점 4 : 전문가의 지식이 필요함
2. Logstash Pipeline
- Logstash 인스턴스별로 다중 inputs 할 수 있음. (Multiple inputs per Logstash instance)
- 한 이벤트 별로 한개의 input 할 수 있음(Only one input per event)
- 한 이벤트당 filter들 적용가능 (Multiple possible per event)
- 한 이벤트당 여러개의 output 가능(Multiple possible outputs per event)
- filter는 발생한 순서대로 적용 (Filters are applied in the order in which they occur)
- Pipeline는 back pressure를 받으면 기다린다.
예) output이 응답하지 않을때
예) 필터가 실행될때 오랜 시간이 걸릴때
3. Logstash Inputs
- Network(TCP/UDP) : 가장 일반적임
- syslog/rsyslog
- Kafka, RabbitMQ, Redis
- stdin
- Email(IMAP)
- Lumberjack
- Amazon S3, gelf, collectd, gangla, sqs 등등
4. Logstash Filters
- grok : 패턴 매칭을 사용해서 추출
- date : 필드로 부터 timestamp 파싱함
- mutate : 이벤트에서 필드를 rename, remove, replace, modify
- csv : CSV 데이터 형태로 파싱함
- geoip : IP 주소로 지리를 판단
- kv : 이벤트 데이터에서 key-value 쌍을 파싱함
- ruby : 파이프라인에서의 모호한 Ruby code 실행될때 등등
5. Logstash Outputs
1) 저장(Storage) : Elasticsearch, MongoDB, S3, File 등
2) 알림(Notification) : PagerDuty, Nagios, Zabbix, Email 등등
3) Realy : TCP, Kafka, Redis, RabbitMQ, Syslog 등
4) Metrics : Graphite, Ganglia StatsD 등