본문 바로가기

빅데이터/ELK

[ELK] Logstash

ELK란?

ElasticSearch, LogStash, Kibana 조합으로 로그 수집 - 로그 저장 및 검색 - 시각화로 쓰이게 된다. 

 

 

기본 아키텍처

Logstash

특징

Logstash는 실시간 파이프라인 기능을 갖는 데이터 수집 엔지이며, Input을 받아 Filter를통해 가공하고 Output이 ElasticSearch의 Input이 되거나 MQ의 producer가 되는 등 파이프라인의 첫번째 단계이다.
Logstash는 여러 시스템에서 데이터 수집 및 위해 다양한 입력 Plugin을 지원하기 때문에 유연성 갖고 있다.

 

다른 Tool과 차이

Streamsets, Nifi 등 ETL 툴과 다른점은 Logstash는 로그 수집하고 구문 분석해서 나중에 사용할 수 있도록하는 Log Management로 분류된다. 반면 다른 툴들은 Stream Processing 범주의 도구로 분류된다. 최근에는 EFK로 fluentd도 많이 사용되지만 성능, 다양한 plugin, cross platform 모두 비슷하다. 물론 Logstash가 JVM 위이기 때문에 메모리 측면에서 resource더 잡지만 큰 차이는 없다. 다만 fluentd는 도커 환경에서 최적화 되어있다고 한다.

 

설정파일

Input : 로그데이터가 쌓이는 파일
Filter : 로그데이터에서 필요한 칼럼, 형변환 등 Transformation과정
Output : ElasticSearch와 연동될 경우에는 hosts는 ElasticSearch서버, 해당 서버의 index 설정

input {  
  file {
    path => "/home/minoh1227/demo-spark-analytics/00.stage1/tracks_live.csv"
    start_position => "end"
  }
}

filter {
  csv {
    columns => ["event_id","customer_id","track_id","datetime","ismobile","listening_zip_code"]
    separator => ","
  }

  date {
    match => [ "datetime", "YYYY-MM-dd HH:mm:ss"]
    target => "datetime"
  }

  mutate {
    convert => { "ismobile" => "integer" }
  }
}

output {
  stdout {
    codec => rubydebug{ }
  }

  elasticsearch {
    hosts => "http://localhost:9200"
    index => "ba_realtime"
  }
}

메세지 유실 방지

기본적으로 Memory Queue이용하기 때문에 장애 시에 memory에 있는 데이터가 사라진다. 해당 문제를 방지하기 위해서 파일에 저장하는 Persistent Queue사용하면 된다.
input - PQ - filter - output
input - Head checkpoint - filter - output - Tail checkpoint
HC지점에 큐에 들어가고 TC지점에서 ack상태 되고 큐에서 빠져나간다. 만약 비정상 종료 했다면 ack아닌 것들은 filter만 다시 처리하게 된다.

 

튜닝포인트

input -> Queue -> Workers 부분의 Queue에서 batch size 및 pipeline.workers 개수를 늘려서 스레드 개수를 늘려주는 방안이 있다.

https://www.elastic.co/guide/en/logstash/current/logstash-settings-file.html

 

logstash.yml | Logstash Reference [8.3] | Elastic

You can set options in the Logstash settings file, logstash.yml, to control Logstash execution. For example, you can specify pipeline settings, the location of configuration files, logging options, and other settings. Most of the settings in the logstash.y

www.elastic.co

 

Filebeat 비교

1. Logstash는 다른 서버의 파일시스템에서 로그파일을 읽지 못하기 때문에 log file shipper인 filebeat를 원천 로그 데이터 생성하는 서버에 설치해서 logstash의 특정 포트로 데이터를 전송할 수 있도록 아키텍처를 그려야한다. Logstash는 로그 받아오는 서버의 hostname기준으로 분기처리해서 ES에 전송 등 처리 할 수 있다. 
2. Beats는 filter 기능이 많이 떨어진다.

'빅데이터 > ELK' 카테고리의 다른 글

[ELK] ES, Kibana  (0) 2022.08.12