Logstash 의 java 필터 개발하기
** 참고문서
https://www.elastic.co/guide/en/logstash/7.2/java-filter-plugin.html
1) logstash 다운로드 및 logstash-core 라이브러리 빌드
– logstash 의 plugin 들은 logstash-core 의 API 를 이용하기 때문에 미리 빌드해야 한다
– 최신 plugin 들은 rubyUtils.gradle 파일이 필요하다. 이 버전은 logstash v7.2 부터 존재함
$ git clone --branch 7.2 --single-branch https://github.com/elastic/logstash.git logstash_72
## ==> logstash 브랜치 v7.2 소스 다운로드
$ cd logstash_72
$ ./gradlew assemble
## ==> 빌드하기
$ ls -al logstash-core/build/libs
## ==> logstash-core-7.2.1.jar 파일 확인
$ export LS_SRC_HOME=`pwd`
## ==> /Users/bgmin/Workspaces/agenspop/logstash_72

2) logstash filter java example 다운로드 및 빌드
$ git clone https://github.com/logstash-plugins/logstash-filter-java_filter_example ls-filter-example
## ==> filter java example 소스 다운로드
$ cd ls-filter-example
$ echo LOGSTASH_CORE_PATH=$LS_SRC_HOME/logstash-core/ > gradle.properties
## ==> build 시 필요한 LOGSTASH_CORE_PATH 속성값 설정
$ ./gradlew gem
$ ls -al *.gem
## ==> logstash-filter-java_filter_example-1.0.0.gem 파일 확인


3) logstash_plugin install 및 테스트
$ cd /usr/local/Cellar/logstash/7.1.1
## ==> logstash 바이너리 설치 위치로 이동
$ bin/logstash-plugin install --no-verify --local /<Path>/ls-filter-example/logstash-filter-java_filter_example-1.0.0.gem
## ==> logstash-plugin 을 이용해 생성된 gem 파일을 plugin 으로 등록
$ cd /<Path>/logstash_confs && cat java_filter_example.conf
## ==> 테스트용 logstash 설정 파일을 작성
# ----------------------------------------------
input {
generator { message => "Hello world!" count => 1 }
}
filter {
java_filter_example {}
}
output {
stdout { codec => rubydebug }
}
# ----------------------------------------------
$ logstash -f java_filter_example.conf
## ==> 등록한 example filter 를 통해 처리된 결과 (OK!)
...
{
"host" => "maxmac",
"@version" => "1",
"@timestamp" => 2019-07-09T04:46:34.454Z,
"message" => "!dlrow olleH",
"sequence" => 0
}


Java code 자체에 대한 내용은 logstash 공식문서인 “참고문서” 링크를 보세요.