ELK 를 사용할때,

엘라스틱서치나, 키바나의 경우 공통적인 부분이 많아 처리하는 부분이 쉽지만, logstash 의 경우는 본인이 엘라스틱서치에 전달할 데이터포맷이, 솔류션마다 다르기 때문에 해당 작업을 함에 있어, 어려움이 많아 해당 내용을 정리합니다.

input {
  file {
    path => "C:/Users/bymin/Desktop/file/RTBViewLog.20190702"
    mode => "read"
    start_position => "beginning"
  }
}

filter {
 grok  {
   match => {
     "message" => "%{DATA:timestamp}\,%{USER:tagid}\, %{WORD:s}\, %{USER:userid}\, %{USER:auid}\, %{NUMBER:bidfloor:float}\, %{NUMBER:bid:float}\, %{NUMBER:wind:float}\, "
    }
  }
   date {
        match => [ "timestamp", "YYYYMMdd-HHmmss" ]
        target => "@timestamp"
        add_field => { "debug" => "timestampMatched"}
   }
}

output {
  elasticsearch {
    hosts => ["127.0.0.1:9200"]
    index => "_20190702_1"
  }
}

path : 파일이 있는 경로를 지정합니다. \ 로 작성시에 해당 파일을 못읽을 수도 있어 안정하게 / 로 변경해주시기 바랍니다.
mode => read : 해당 파일을 전부 읽어드리겠다는 모드 설정입니다.
해당 값을 안할 경우, log 에서 한줄씩 읽어서 엘라스틱서치에 보내게 됩니다. read 설정시 디폴트가 해당 파일을 삭제합니다.

grok : grok 플러그인을 통해, 해당 패턴을 json 형태로 변환해줍니다.
grok 에 관해서는 해당 url에서 패턴을 찾을 수 있습니다. (https://grokdebug.herokuapp.com/)

날짜는 파일에 있는 timestamp 로 index를 잡아야하므로, timestamp 패턴을 date 에 적용 후, 해당 값을 실제 timestamp 에 target 시킵니다.

logstash -f "config 파일 경로"

로 파일을 실행시킵니다.