티스토리 뷰

www.youtube.com/watch?v=-T8ihKGTCCU

 

전에 유투브로 로그스태시로 데이터 넣는 영상을 올린적이 있습니다. 이번에는 윈도우 환경에서 하다보니 조금 달라서 이 포스트를 정리 해봅니다. 

결론부터 말씀을 드리면

logstash.bat -f ../upload_setting.conf

이 명령어를 쓰면 커스터마이징 한 config파일로 로그 스태시를 띄울 수 있습니다.

Logstash설치

www.elastic.co/downloads/logstash

[

Download Logstash Free | Get Started Now | Elastic | Elastic

Want to upgrade? We'll give you a hand. Migration Guide »

www.elastic.co

](https://www.elastic.co/downloads/logstash)

설치는 간단 합니다. 위 링크의 로그스테시 다운로드 페이지에서 바이너리를 받아서 압축을 푸시면 됩니다.

제 디렉토리 구성은 c:/tools/ 아래에 사용하는 앱들의 바이너리를 넣어놓았습니다.

리눅스 path문제

그런데 문제가 하나 있습니다. 서버는 리눅스인 경우가 많아서 path가 아래와 같이 리눅스 path로 되어 있는 문서들이 많습니다.

input {
      file {
        path => "/files/json/*.json"
                codec => json
                start_position => "beginning"
        sincedb_path => "/dev/null"
    }
}

제가 테스트할 config 파일은 upload_setting.conf 입니다.

logstash디렉토리에 넣었습니다.

내용은 아래와 같이 바꿨습니다. 주의할점은 path뿐만 아니고 sincedb_path도 실재 존재하는 위치로 바꾸어주어야 합니다. sincedb_path는 내가 읽을 파일을 어디까지 읽었는지에 대해 기록을 남기는 위치입니다.

upload_setting.conf

input {
      file {
        path => "C:/datas_for_elastic_search/*.json"
                codec => json
                start_position => "beginning"
        sincedb_path => "C:/dev/null"
    }
}

filter {
  grok { 
     match => { "path" => "%{GREEDYDATA:filepath}/%{GREEDYDATA:filename}\.json" }
  }
  mutate {
    remove_field => ["host", "@version", "message", "filepath", "path"]
  }
}

output {
    stdout {
        codec => rubydebug
    }  
    elasticsearch {
      hosts => "127.0.0.1:9200"
      index => "%{filename}"
      codec => json
#      user => "elastic"
#      password => "<change_me>"
    }

}

나중에 운영에 올릴때는 user, password를 세팅 해주시면 됩니다.

c:\datas_for_elastic_search 이 디렉토리에 .json파일이 있으면 읽는 스크립트를 테스트 해볼 예정입니다.

실행하기

bin에서 logstash.bat -f ../upload_setting.conf 명령어로 실행을 했습니다.

Successfully가 나오면 잘 실행 된것입니다.

Index생성하기

저는 키바나를 띄워서 dev 콘솔에서 인덱스를 생성 했습니다.

테이블 생성이 잘 되었습니다.

json파일 읽어서 들어가는지 확인하기

위 upload_setting.conf의 output블록에 보시면 index=> "%{filename}" 이렇게 되어있습니다.

output {
    stdout {
        codec => rubydebug
    }  
    elasticsearch {
      hosts => "127.0.0.1:9200"
      index => "%{filename}"
      codec => json
#      user => "elastic"
#      password => "<change_me>"
    }

}

이 뜻은 파일명의 인덱스에 넣겠다는 뜻입니다.

그래서 위에서 생성한 'bdp_test_01'이라는 인덱스에 documents를 넣기 위해 .json파일을 생성 해보겠습니다.

내용은 아래와 같이 한줄만 넣어보았습니다.

{"name":"kyeongrok", "age":34}

그리고 저장을 하면

위와 같이 파일을 읽는 것 처럼 보입니다.

이렇게 한줄씩 추가 하면

로그에도 반응이 옵니다.

키바나에서 조회를 해보겠습니다.

결과

키바나에서도 조회가 잘 되는 것을 볼 수 있습니다.

넣을때 필드명 변경해서 넣기

filter {
  mutate {
    rename => { "시도" => "sido" }
  }
}

설정파일에 mutate부분을 설정 해주면 됩니다.

end.

728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함