$ bin/logstash --version Using bundled JDK: /usr/share/logstash/jdk logstash 7.11.2
Logstash-core 가 있어야 filter-plugin 빌드 가능
Logstash-core compile
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
# 나에게 맞는 버전의 <branch_name> 으로 다운 # git clone --branch <branch_name> --single-branch https://github.com/elastic/logstash.git <target_folder> cd ~/mywork mkdir logstash_core cd logstash_core git clone --branch 7.11 --single-branch https://github.com/elastic/logstash.git .
# 빌드 ./gradlew assemble
# core 빌드 확인 ll logstash-core/build/libs/ -rw-r--r-- 1 root root 1349807 Feb 26 02:52 logstash-core-7.11.2-javadoc.jar -rw-r--r-- 1 root root 437112 Feb 26 02:52 logstash-core-7.11.2-sources.jar -rw-r--r-- 1 root root 645893 Feb 26 02:52 logstash-core-7.11.2.jar
logstash-filter-java 예제코드 다운로드
logstash-filter-java
1 2 3 4 5 6 7
cd ~/mywork git clone https://github.com/logstash-plugins/logstash-filter-java_filter_example
# elastic Docs에 있는대로 gradle.properties 만들어서 한줄추가 # LOGSTASH_CORE_PATH=/root/mywork/logstash_core/logstash-core/
# Docs 의 내용대로 다운받은 Java 코드를 원하는 필터의 형태로 수정해준다.
에러발생
이제 이 내용대로 예제코드들을 gem으로 만들려고 ./gradlew gem 하면 에러 발생
첫번째 에러
첫번째 에러
1 2 3 4 5 6 7 8 9 10
FAILURE: Build failed with an exception. ** Where:* Build file '/root/mywork/logstash-filter-java_filter_example/build.gradle' line: 102 ** What went wrong:*
A problem occurred configuring root project 'logstash-filter-java_filter_example'. > Could not create task ':gem'. > No signature of method: org.gradle.api.internal.tasks.DefaultTaskDependency$TaskDependencySet.getAt() is applicable for argument types: (ArrayList) values: [[task ':downloadAndInstallJRuby', task ':removeObsoleteJars', ...]]
implementation fileTree(dir: LOGSTASH_CORE_PATH, include: "**/logstash-core-?.?.?.jar") 을 implementation fileTree(dir: LOGSTASH_CORE_PATH, include: "**/logstash-core-?.??.?.jar") 으로 수정시 에러 해결
원인은 내가 받은 Logstash의 마이너 버전이 7.11.2 으로 두자리 숫자라 제대로 맵핑이 안되서 발생된 것이었다. Logstash 의 버전을 확인하여 마이너 버전이 두자리일 경우에만 build.gradle 의 위 코드 ?.?.? 을 ?.??.? 으로 수정 하면 됩니다.