Logstash는 Beats, Elasticsearch 및 Kibana와 함께 Elastic Stack의 일부입니다. Logstash는 여러 소스에서 동시에 데이터를 수집하고 변환한 다음 즐겨 사용하는 "스태시"로 보내는 서버측 데이터 처리 파이프라인입니다. (우리는 당연히 Elasticsearch입니다.) Logstash에는 200개 이상의 플러그인이 있으며, 자신만의 플러그인을 매우 쉽게 작성할 수도 있습니다.
자세한 내용은 https://www.elastic.co/products/logstash를 참조하세요.
elastic.co 사이트에서 Logstash에 대한 문서와 시작 가이드를 찾을 수 있습니다.
문서 작성에 대한 자세한 내용은 https://github.com/elastic/docs의 README를 참조하세요.
다운로드 페이지에서 공식 출시된 Logstash 바이너리와 지원되는 플랫폼용 debian/rpm 패키지를 다운로드할 수 있습니다.
Logstash 플러그인은 logstash-plugins github 조직 아래 별도의 저장소에서 호스팅됩니다. 각 플러그인은 RubyGems.org에 게시되는 독립형 Ruby gem입니다.
Logstash는 확장성으로 유명합니다. Logstash에는 수백 개의 플러그인이 있으며 매우 쉽게 자신만의 플러그인을 작성할 수 있습니다! 이러한 플러그인 개발 및 테스트에 대한 자세한 내용은 플러그인 작업 섹션을 참조하세요.
자체 저장소에서 플러그인에 대한 새로운 이슈와 풀 요청을 열어주세요.
예를 들어, Elasticsearch 출력에 대한 문제/개선 사항을 보고해야 하는 경우 여기에서 보고하십시오.
Logstash 코어는 이 저장소 아래에 계속 존재하며 모든 관련 문제 및 끌어오기 요청은 여기에서 제출할 수 있습니다.
JAVA_HOME
환경 변수를 JDK 설치 디렉터리 경로로 설정해야 합니다. 예를 들어 set JAVA_HOME=<JDK_PATH>
gem install rake
및 gem install bundler
각각 사용하여 rake
및 bundler
도구를 설치합니다.rvm(Ruby 버전 관리자)을 사용하여 컴퓨터의 Ruby 버전을 관리하려면 다음 지침을 따르세요. Logstash 폴더에서:
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
c url -sSL https://get.rvm.io | bash -s stable --ruby= $( cat .ruby-version )
계속하기 전에 다음을 통해 Ruby 버전을 확인하세요.
$ ruby -v
인쇄된 버전은 .ruby-version
파일과 동일해야 합니다.
Logstash 프로젝트에는 Elastic-Licensed X-Pack 기능을 포함하여 모든 Logstash에 대한 소스 코드가 포함되어 있습니다. OSS 라이센스 코드만 사용하여 소스에서 Logstash를 실행하려면 OSS
환경 변수를 true
값으로 내보내십시오.
export OSS=true
export LOGSTASH_SOURCE=1
export LOGSTASH_PATH=/YOUR/LOGSTASH/DIRECTORY
gradle
사용하여 종속성 설치 (권장) 1./gradlew installDevelopmentGems
./gradlew installDefaultGems
환경을 확인하려면 다음을 실행하여 Logstash를 시작하고 첫 번째 이벤트를 보냅니다.
bin/logstash -e ' input { stdin { } } output { stdout {} } '
이렇게 하면 이벤트 입력을 기다리는 stdin 입력으로 Logstash가 시작됩니다.
hello world
2016-11-11T01:22:14.405+0000 0.0.0.0 hello world
고급: 드립 런처
Drip은 Logstash를 개발하는 동안 느린 JVM 시작 문제를 해결하는 도구입니다. 드립 스크립트는 java 명령을 즉시 대체할 수 있도록 고안되었습니다. 개발 중에, 특히 테스트를 실행하는 동안 드립을 사용하는 것이 좋습니다. 드립을 사용하면 명령의 첫 번째 호출은 더 빠르지 않지만 후속 명령은 빠릅니다.
Logstash에 드립을 사용하도록 지시하려면 환경 변수 JAVACMD=`which drip`
설정하세요.
예(그러나 rspec을 처음 실행하기 전에 아래 테스트 섹션을 참조하십시오):
JAVACMD=`which drip` bin/rspec
주의사항
Drip은 STDIN에서 작동하지 않습니다. stdin 플러그인을 사용하는 구성을 실행하는 데는 드립을 사용할 수 없습니다.
로컬 시스템에 Logstash 참조(오픈 소스 콘텐츠만 해당)를 구축하려면 다음 저장소를 복제하세요.
logstash - 핵심 기능에 대한 주요 문서가 포함되어 있습니다.
logstash-docs - 생성된 플러그인 문서를 포함합니다.
docs - 문서 빌드 파일을 포함합니다.
logstash
및 logstash-docs
에서 동일한 브랜치를 체크아웃했는지 확인하세요. docs
저장소에서 master
확인하세요.
docs
저장소 내에서 문서 빌드 스크립트를 실행하세요. 예를 들어:
./build_docs.pl --doc ../logstash/docs/index.asciidoc --chunk=1 -open
Logstash의 대부분의 단위 테스트는 Ruby 부분에 대해 rspec을 사용하여 작성되었습니다. Java 부분에는 junit을 사용합니다. 테스트를 위해 test rake
작업과 bin/rspec
명령을 사용할 수 있습니다. 아래 지침을 참조하세요.
1- 핵심 테스트를 실행하려면 Gradle 작업을 사용할 수 있습니다.
./gradlew test
또는 rspec
도구를 사용하여 모든 테스트를 실행하거나 특정 테스트를 실행합니다.
bin/rspec
bin/rspec spec/foo/bar_spec.rb
rspec
명령을 처음 실행하기 전에 다음을 실행하여 RSpec 테스트 종속성을 설정해야 합니다.
./gradlew bootstrap
2- Java 코드베이스를 다루는 테스트 하위 집합을 실행하려면 다음을 실행하세요.
./gradlew javaTests
3- 통합 테스트 실행을 포함하여 전체 테스트 스위트를 실행하려면 다음을 수행하십시오.
./gradlew check
4- 단일 Ruby 테스트 실행을 실행하려면 다음을 수행하십시오.
SPEC_OPTS="-fd -P logstash-core/spec/logstash/api/commands/default_metadata_spec.rb" ./gradlew :logstash-core:rubyTests --tests org.logstash.RSpecTests
5- 통합 테스트를 위한 단일 사양을 실행하려면 다음을 실행합니다.
./gradlew integrationTests -PrubyIntegrationSpecs=specs/slowlog_spec.rb
때로는 Logstash 코드 부분의 변경으로 인해 테스트가 중단되는 경우가 있습니다. 디버깅하기 어려울 수 있습니다.
LS_JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
설정하면 IDE 디버거를 사용하여 실행 중인 Logstash에 연결할 수 있으며 이는 문제를 찾는 좋은 방법이 될 수 있습니다.
현재 설치된 모든 플러그인의 테스트를 실행하려면:
rake test:plugins
Logstash 패키지에 포함된 기본 플러그인 세트를 설치할 수 있습니다.
rake test:install-default
플러그인 관리자 bin/logstash-plugin install ...
사용하여 플러그인을 설치한 경우 플러그인 설치 후 다음 명령을 사용하여 플러그인 개발 종속성도 설치하는 것을 잊지 마십시오.
bin/logstash-plugin install --development
빌드된 아티팩트는 LS_HOME/build
디렉터리에 배치되며 디렉터리가 아직 없으면 디렉터리를 생성합니다.
Logstash 스냅샷 패키지를 tarball 또는 zip 파일로 구축할 수 있습니다.
./gradlew assembleTarDistribution
./gradlew assembleZipDistribution
OSS 전용 아티팩트는 자체 Gradle 작업을 사용하여 유사하게 구축할 수 있습니다.
./gradlew assembleOssTarDistribution
./gradlew assembleOssZipDistribution
.rpm 및 .deb도 빌드할 수 있지만 fpm 도구가 필요합니다.
rake artifact:rpm
rake artifact:deb
그리고:
rake artifact:rpm_oss
rake artifact:deb_oss
빌드에서 사용자 정의 JRuby를 사용하려면 custom.jruby.path
Gradle 속성을 통해 사용자 정의 JRuby 배포판의 소스 루트에 대한 경로를 설정하면 됩니다.
예:
./gradlew clean test -Pcustom.jruby.path= " /path/to/jruby "
아이디어, 패치, 문서, 버그 보고서, 불만 사항, 심지어 냅킨에 작성한 내용까지 모든 기여를 환영합니다.
프로그래밍은 필수 기술이 아닙니다. 오픈 소스와 유지관리자 또는 커뮤니티 구성원이 "패치를 보내지 않으면 죽습니다"라고 말하는 것에 대해 본 내용은 여기서는 볼 수 없습니다.
기여할 수 있는지가 더 중요합니다.
기여에 대한 자세한 내용은 CONTRIBUTING 파일을 참조하세요.
gradle
사용하는 대신 bundle
사용할 수도 있습니다.개발 종속성 설치
bundle config set --local path vendor/bundle bundle install
환경을 부트스트랩합니다.
rake bootstrap
그런 다음 bin/logstash
사용하여 Logstash를 시작할 수 있지만 설치된 플러그인이 없습니다. 기본 플러그인을 설치하려면 다음을 실행하세요.
rake plugin:install-default
이렇게 하면 Logstash를 여러 데이터 소스에 연결하고 변환을 수행하며 결과를 Elasticsearch 및 기타 대상으로 보낼 수 있도록 하는 80개 이상의 기본 플러그인이 설치됩니다.