Contributing to Loki Logstash Output Plugin

For information about how to use this plugin see this documentation.

Install dependencies

First, make sure you have JDK version 8 or 11 installed and you have set the JAVA_HOME environment variable.

You need to setup JRuby environment to build this plugin. Refer https://github.com/rbenv/rbenv for setting up your rbenv environment.

After setting up rbenv. Install JRuby

rbenv install jruby-9.2.10.0
rbenv local jruby-9.2.10.0

Check that the environment is configured

ruby --version
jruby 9.2.10

You should make sure you are running jruby and not ruby. If the command ruby --version still shows ruby and not jruby, check that PATH contains $HOME/.rbenv/shims and $HOME/.rbenv/bin. Also verify that you have this in your bash profile:

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

Then install bundler:

gem install bundler:2.1.4

Follow those instructions to install logstash before moving to the next section.

Build and test the plugin

Install required packages

git clone [email protected]:elastic/logstash.git
cd logstash
git checkout tags/v7.16.1
export LOGSTASH_PATH="$(pwd)"
export GEM_PATH="$LOGSTASH_PATH/vendor/bundle/jruby/2.5.0"
export GEM_HOME="$LOGSTASH_PATH/vendor/bundle/jruby/2.5.0"
./gradlew assemble
cd ..
ruby -S bundle config set --local path "$LOGSTASH_PATH/vendor/bundle"
ruby -S bundle install
ruby -S bundle exec rake vendor

Build the plugin

gem build logstash-output-lokis.gemspec

Test

ruby -S bundle exec rspec

Alternatively if you don't want to install JRuby. Enter inside logstash-loki container.

docker build -t logstash-loki ./
docker run -v  $(pwd)/spec:/home/logstash/spec -it --rm --entrypoint /bin/sh logstash-loki
bundle exec rspec

Install plugin to local logstash

bin/logstash-plugin install --no-verify --local logstash-output-lokis-1.0.0.gem

Send sample event and check plugin is working

bin/logstash -f loki.conf