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

- Twitter

- 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 등