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 파일 경로"
로 파일을 실행시킵니다.