-
[ELK Stack] [초보자] Logstash 시작하기ELK Stack 2020. 10. 18. 16:09반응형
Elasticsearch 한국 official site의 logstash 동영상을 보고 공부하였고 그 내용을 정리하였습니다.
저는 windows 10에 logstash를 설치하였습니다.
www.elastic.co/kr/webinars/getting-started-logstash
1. logstash 실행하기
logstash의 실행파일은 bin폴더의 logstash.bat입니다.
그러나 Logstash는 config에 input/output을 설정하지 않으면 실행되지 않습니다.
(1). 명령어에 input/output을 지정하여 실행하기
$ ./bin/logstash.bat -e 'input{stdin{}} output {stdout{}}'
(2). conf파일을 생성후 -f 명령으로 실행하기
simple.conf 파일 input { stdin{ codec => json } } output { stdout{ codec => json } } $ ./bin/logstash.bat -f simple.conf codec을 json으로 설정하면 하기와 같이 input/output에서 json형식으로 사용할 수 있습니다. 하기는 실행결과 입니다. {"name": "jichun", "age": "33"} {"@version":"1","host":"Admin","age":"33","@timestamp":"2020-10-18T06:38:25.241Z ","name":"jichun"}
(3). lodash config 파일 수정하여 실행하기
root 폴더에서 config 폴더에 진입하면 하기와 같은 파일이 있습니다..
logstash.yml: logstash 설정파일
pipelines.yml: pipeline 설정파일
하기와 같이 수정해 줍니다.
logstash.yml 파일 #logstash가 주기적으로 pipeline 설정파일을 다시 읽어와서 pipeline을 구축 함 config.reload.automatic: true #logstash가 pipeline 설정파일을 읽어오는 주기를 설정(하기는 3초에 한번씩 읽어 옮) config.reload.interval: 3s
pipelines.yml - pipeline.id: test # pipeline conf파일을 지정. # 하기는 위에서 정의한 simple.conf파일로 지정했음. # 여기서 root폴더는 logstash root임. path.config: "./config/simple.conf"
./bin/logstash.bat 실행 {"name": "jichun", "age": "33"} {"age":"33","@version":"1","@timestamp":"2020-10-18T07:01:00.447Z","host":"Admin ","name":"jichun"} (2) 번과 동일하게 출력됨을 확인할 수 있음.
주의할 점은 stdin을 사용시 logstash.reload가 실행되지 않습니다.
수동으로 logstash를 reboot 해야 됩니다.
동영상에서 apache log를 logstash를 통하여 elasticsearch에 저장하는 예제가 있었습니다.
해당 예제를 stdin, stdout으로 변경하여 test 해보았습니다.
simple.conf 파일 input { stdin {} } filter { grok { match => { "message" => "%{COMBINEDAPACHELOG}" "remove_field" => "message" } } geoip { source => "clientip" fields => ["city_name", "country_name", "location", "region_name"] } date { match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z"] remove_field => "timestamp" } } output { stdout { codec => rubydebug } } 하기 string 입력 14.49.42.25 - - [10/Nov/2017:01:24:06 +0000] "GET /articles/dynamic-dns-with-dhcp/ HTTP/1.1" 200 18848 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.0.2b1) Gecko/20091014 Filefox/3.6b1 GTB5" 결과: { "host" => "Admin", "verb" => "GET", "@timestamp" => 2017-11-10T01:24:06.000Z, "httpversion" => "1.1", "auth" => "-", "response" => "200", "bytes" => "18848", "request" => "/articles/dynamic-dns-with-dhcp/", "agent" => "\"Mozilla/5.0 (Windows; U; Windows NT 6. 1; en-US; rv:1.0.2b1) Gecko/20091014 Filefox/3.6b1 GTB5\"", "ident" => "-", "geoip" => { "location" => { "lon" => 126.97409999999999, "lat" => 37.5112 }, "country_name" => "South Korea" }, "referrer" => "\"-\"", "clientip" => "14.49.42.25", "message" => "14.49.42.25 - - [10/Nov/2017:01:24:06 +0 000] \"GET /articles/dynamic-dns-with-dhcp/ HTTP/1.1\" 200 18848 \"-\" \"Mozilla /5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.0.2b1) Gecko/20091014 Filefox/3.6b 1 GTB5\"\r", "@version" => "1" }
반응형'ELK Stack' 카테고리의 다른 글
[ELK Stack] Filebeat 소개 및 사용 (0) 2022.08.31 [ELK Stack] Elasticsearch cluster 롤링 업그레이드 관련(7.2 -> 7.17.2) (0) 2022.08.25 [ELK Stack]Elasticsearch 검색 - Full Text Query (0) 2020.12.01 [ELK Stack] Elasticsearch 검색(search) - Compound Query (0) 2020.12.01 [ELK Stack] Elasticsearch 검색 - Highlight, Nested Field (0) 2020.10.20