Error while Running the Logstash Plugin
imewish opened this issue · 25 comments
bin/logstash -f logstash-dynamodb.conf
The error reported is:
you might need to reinstall the gem which depends on the missing jar or in case there is Jars.lock then resolve the jars with `lock_jars` command
no such file to load -- com/amazonaws/aws-java-sdk-kms/1.10.27/aws-java-sdk-kms-1.10.27 (LoadError)
Helps would be appreciated
Same issue:
you might need to reinstall the gem which depends on the missing jar or in case there is Jars.lock then resolve the jars with `lock_jars` command
no such file to load -- com/amazonaws/aws-java-sdk-kms/1.10.27/aws-java-sdk-kms-1.10.27 (LoadError)
Hi,
You can check how I install the plugins in a docker container as a reference to install them in your own environment.
Logstash 1.x: https://github.com/mantika/dockerfiles/blob/1.x/logstash/dynamo-streams/Dockerfile
Logstash 2.x: https://github.com/mantika/dockerfiles/blob/master/logstash/dynamo-streams/Dockerfile
Hope it helps.
As far as I can tell, I just need to run:
RUN gem install logstash-input-dynamodb:'< 2' logstash-filter-dynamodb:'< 2'
RUN plugin install logstash-input-dynamodb logstash-filter-dynamodb
I can see logstash-input-dynamodb in my /opt/logstash/bin/plugin list
It says installation successful, but when I run my test conf, same error.
@teebu keep in mind the stuff I do with the .m2 repository. Take into account that logstash usually runs with the user logstash
user and if you install the gems / plugins using a different user you'll probably get the error you're seeing.
So after cloning the GIT, compiling, installing and uninstall the GEM a few dozen times, then doing a plugin/install I finally managed to get it to work. At one point, it only ran with SUDO, (it could have been when I SUDO gem install, instead of regular gem install) but it seems if i run it from inside /opt/logstash folder, it is working.
Now, it seems I can run it without needing to be in the folder. With no errors.
I think the step where I had to compile might have installed those missing JAR files.
@marcosnils This is Awesome ..thanks for updating the logstash gem with this dynamodb plugin. It woks fine. Installing this locally and works properly was a nightmare, it was needed to follow wired ways to make it work. Thanks again
I am still having a problem. Even though I was able to run the plugin, i was not able to run it with the logstash service.
Getting error:
:timestamp=>"2016-03-19T07:35:37.371000+0000", :message=>"The error reported is: \n \n\n\tyou might need to reinstall the gem which depends on the missing jar or in case there is Jars.lock then resolve the jars with
lock_jars command\n\nno such file to load -- com/amazonaws/aws-java-sdk-kms/1.10.27/aws-java-sdk-kms-1.10.27 (LoadError)"}
I tried to follow your docker example, but I dont understand what the .m2 sym link is doing. Here is my folder structure:
I am on an EC2 machine.
home: /home/ec2-user
.m2 folder is inside: /home/ec2-user/.m2
the com/aws files are listed in: /home/ec2-user/.m2/repository
Doing ln -s /var/lib/logstash/.m2 /root/.m2
doesn't work for me. I tried ln -s /var/lib/logstash/.m2 ~/.m2
looks like it creates a sym link in .m2 folder to /var/lib/logstash/.m2, so thats probably wrong.
I really need a step by step guide, because I just spend 6 hours trying to get this to work.
Right now trying to run a config, I get the error no such file to load -- com/amazonaws/aws-java-sdk-kms/1.10.27/aws-java-sdk-kms-1.10.27 (LoadError)
unless I run it with sudo.
Install jRuby
cd /etcsudo mkdir jrubysudo wget https
https://s3.amazonaws.com/jruby.org/downloads/9.0.5.0/jruby-bin-9.0.5.0.tar.gz
://
https://s3.amazonaws.com/jruby.org/downloads/9.0.5.0/jruby-bin-9.0.5.0.tar.gz
s3.amazonaws.com
https://s3.amazonaws.com/jruby.org/downloads/9.0.5.0/jruby-bin-9.0.5.0.tar.gz
/
https://s3.amazonaws.com/jruby.org/downloads/9.0.5.0/jruby-bin-9.0.5.0.tar.gz
jruby.org
https://s3.amazonaws.com/jruby.org/downloads/9.0.5.0/jruby-bin-9.0.5.0.tar.gz
/
https://s3.amazonaws.com/jruby.org/downloads/9.0.5.0/jruby-bin-9.0.5.0.tar.gz
downloads
https://s3.amazonaws.com/jruby.org/downloads/9.0.5.0/jruby-bin-9.0.5.0.tar.gz
/9.0.5.0/
https://s3.amazonaws.com/jruby.org/downloads/9.0.5.0/jruby-bin-9.0.5.0.tar.gz
jruby-bin-9.0.5.0.tar.gz
https://s3.amazonaws.com/jruby.org/downloads/9.0.5.0/jruby-bin-9.0.5.0.tar.gzsudo
tar -xvf jruby-bin-9.0.5.0.tar.gzexport
PATH=/etc/jruby/jruby-9.0.5.0/bin:$PATH$Test to make sure its installed
correctlyjruby -v
Install Git
sudo yum install git
Install Maven
Sudo wget http://
http://apache.spinellicreations.com/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
apache.spinellicreations.com
http://apache.spinellicreations.com/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
/
http://apache.spinellicreations.com/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
maven
http://apache.spinellicreations.com/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
/maven-3/3.3.9/
http://apache.spinellicreations.com/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
binaries
http://apache.spinellicreations.com/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
/
http://apache.spinellicreations.com/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
apache-maven-3.3.9-bin.tar.gz
http://apache.spinellicreations.com/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gzsudo
tar -xvf apache-maven-3.3.9-bin.tar.gzexport
PATH=/etc/maven/apache-maven-3.3.9/bin:$PATH$Test to make sure its
installed correctlymvn -v
Install Logstash
sudo rpm --import https https://packages.elastic.co/GPG-KEY-elasticsearch
:// https://packages.elastic.co/GPG-KEY-elasticsearchpackages.elastic.co
https://packages.elastic.co/GPG-KEY-elasticsearch/
https://packages.elastic.co/GPG-KEY-elasticsearchGPG-KEY-elasticsearch
https://packages.elastic.co/GPG-KEY-elasticsearchsudo nano
logstash.repo [logstash-2.2]
name=Logstash repository for 2.2.x packages
baseurl=http:// http://packages.elastic.co/logstash/2.2/centos
packages.elastic.co http://packages.elastic.co/logstash/2.2/centos/
http://packages.elastic.co/logstash/2.2/centoslogstash
http://packages.elastic.co/logstash/2.2/centos/2.2/
http://packages.elastic.co/logstash/2.2/centoscentos
http://packages.elastic.co/logstash/2.2/centos
gpgcheck=1
gpgkey=http:// http://packages.elastic.co/GPG-KEY-elasticsearch
packages.elastic.co http://packages.elastic.co/GPG-KEY-elasticsearch/
http://packages.elastic.co/GPG-KEY-elasticsearchGPG-KEY-elasticsearch
http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1
sudo yum install logstashexport PATH=/opt/logstash/bin:$PATH$
Install Logstash-input-dynamodb
Clonesudo git clone https
https://github.com/genesi/logstash-input-dynamodb.git://
https://github.com/genesi/logstash-input-dynamodb.gitgithub.com
https://github.com/genesi/logstash-input-dynamodb.git/
https://github.com/genesi/logstash-input-dynamodb.gitgenesi
https://github.com/genesi/logstash-input-dynamodb.git/
https://github.com/genesi/logstash-input-dynamodb.git
logstash-input-dynamodb.git
https://github.com/genesi/logstash-input-dynamodb.gitsudo chmod a+wrx
/etc/jruby/jruby-9.0.5.0/lib/ruby/gems/shared/sudo chmod a+wrx
/etc/jruby/jruby-9.0.5.0/lib/ruby/gems/shared/gems/sudo chmod a+wrx
/etc/jruby/jruby-9.0.5.0/bin/sudo chmod a+wrx
/etc/jruby/jruby-9.0.5.0/lib/ruby/gems/shared/specifications/jruby -S
bundle installsudo chmod a+wrx /etc/logstash-input-dynamodbjruby -S gem
install logstash-input-dynamodb-1.0.1-java.gemsudo chmod a+wrx
/opt/logstash/Gemfilesudo chmod a+wrx
/etc/logstash-input-dynamodb/lib/logstash-input-dynamodb_jars.rbsudo chmod
a+wrx /etc/logstash-input-dynamodb/libBundle installplugin install
logstash-input-dynamodb-1.0.1-java.gemDeal with any dependenciesgem
"logstash-input-dynamodb", "1.0.1", :path =>
"vendor/local_gems/863a3d26/logstash-input-dynamodb-1.0.1-java"gem
"activesupport-json_encoder","1.1.0",:path =>
"/etc/jruby/jruby-9.0.5.0/lib/ruby/gems/shared/gems/activesupport-json_encoder"gem
"activesupport" , "4.1.14.1" , :path =>
"/etc/jruby/jruby-9.0.5.0/lib/ruby/gems/shared/gems/activesupport-4.1.14.1"
Install logstash-filter-dynamodb
cd /etcgit clone https
https://github.com/genesi/logstash-filter-dynamodb.git://
https://github.com/genesi/logstash-filter-dynamodb.gitgithub.com
https://github.com/genesi/logstash-filter-dynamodb.git/
https://github.com/genesi/logstash-filter-dynamodb.gitgenesi
https://github.com/genesi/logstash-filter-dynamodb.git/
https://github.com/genesi/logstash-filter-dynamodb.git
logstash-filter-dynamodb.git
https://github.com/genesi/logstash-filter-dynamodb.gitsudo chmod a+wrx
/etc/logstash-filter-dynamodb/jruby -S bundle installjruby -S gem build
logstash-filter-dynamodb.gemspecplugin install --no-verify
/etc/logstash-filter-dynamodb/logstash-filter-dynamodb-0.0.4.gem
Fix Logstash to run as service
Copy logstash-input-dynamodb to a new locationsudo cp -r
logstash-input-dynamodb-1.0.1-java/
/opt/logstash/vendor/bundle/jruby/1.9/gems/Update /opt/logstash/Gemfilegem
"logstash-input-dynamodb", "1.0.1", :path =>
"/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-dynamodb-1.0.1-java"sudo
chmod a+wrx
/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-dynamodb-1.0.1-javasudo
chmod a+wrx
/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-dynamodb-1.0.1-java/lib/logstash-input-dynamodb_jars.rbsudo
chmod a+wrx
/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-dynamodb-1.0.1-java/lib/cd
/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-dynamodb-1.0.1-javabundle
update
/opt/logstash/Gemfile bottom of file
gem "logstash-input-http_poller"
gem "logstash-input-dynamodb", "1.0.1", :path =>
"/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-dynamodb-1.0.1-java"
gem "activesupport-json_encoder", "1.1.0", :path =>
"/etc/jruby/jruby-9.0.5.0/lib/ruby/gems/shared/gems/activesupport-json_encoder"
gem "activesupport", "4.1.14.1", :path =>
"/etc/jruby/jruby-9.0.5.0/lib/ruby/gems/shared/gems/activesupport-4.1.14.1"
gem "logstash-filter-dynamodb", "0.0.4", :path =>
"vendor/local_gems/3182dbdf/logstash-filter-dynamodb-0.0.4"
sent from mobile
On Mar 19, 2016 4:57 AM, "teebu" notifications@github.com wrote:
I am still having a problem. Even though I was able to run the plugin, i
was not able to run it with the logstash service.Getting error:
:timestamp=>"2016-03-19T07:35:37.371000+0000", :message=>"The error
reported is: \n \n\n\tyou might need to reinstall the gem which depends on
the missing jar or in case there is Jars.lock then resolve the jars with
lock_jars
command\n\nno such file to load --
com/amazonaws/aws-java-sdk-kms/1.10.27/aws-java-sdk-kms-1.10.27
(LoadError)"}I tried to follow your docker example, but I dont understand what the .m2
sym link is doing. Here is my folder structure:I am on an EC2 machine.
home: /home/ec2-user
.m2 folder is inside: /home/ec2-user/.m2
the com/aws files are listed in: /home/ec2-user/.m2/repositoryDoing ln -s /var/lib/logstash/.m2 /root/.m2 doesn't work for me. I tried ln
-s /var/lib/logstash/.m2 ~/.m2 looks like it creates a sym link in .m2
folder to /var/lib/logstash/.m2, so thats probably wrong.I really need a step by step guide, because I just spend 6 hours trying to
get this to work.—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
#11 (comment)
thanks, this was very hard to read with the lack of formatting. ill give it a shot. also, im using LS 1.5
I tried to follow your steps, but it feels like there are either steps missing, or some mismatch is going on. I have maven,jruby installed, with LS 1.5.
I managed to translate whatever you wrote to this:
Clone
sudo git clone https://github.com/genesi/logstash-input-dynamodb.git
sudo chmod a+wrx /etc/jruby/jruby-9.0.5.0/lib/ruby/gems/shared/
sudo chmod a+wrx /etc/jruby/jruby-9.0.5.0/lib/ruby/gems/shared/gems/
sudo chmod a+wrx /etc/jruby/jruby-9.0.5.0/bin/
sudo chmod a+wrx /etc/jruby/jruby-9.0.5.0/lib/ruby/gems/shared/specifications/
jruby -S bundle install
sudo chmod a+wrx /etc/logstash-input-dynamodb
did you miss a step here? to build the gem?
jruby -S gem install logstash-input-dynamodb-1.0.1-java.gem
sudo chmod a+wrx /opt/logstash/Gemfile
sudo chmod a+wrx /etc/logstash-input-dynamodb/lib/logstash-input-dynamodb_jars.rb
sudo chmod a+wrx /etc/logstash-input-dynamodb/lib
Bundle install
plugin install logstash-input-dynamodb-1.0.1-java.gem
Around this point, there is no "Bundle" so I fix for that, to make it "bundle"
plugin install doesn't work without sudo. I fix for that.
Doing: sudo bin/plugin install /etc/logstash-input-dynamodb/logstash-input-dynamodb-1.0.0-java.gem
Getting Error:
An error occurred while installing logstash-input-dynamodb (1.0.0), and Bundler cannot continue.
Make sure that gem install logstash-input-dynamodb -v '1.0.0'
succeeds before bundling.
Trying: sudo gem install logstash-input-dynamodb -v '1.0.0'
inside /opt/logstash folder.
-- Successfully installed logstash-input-dynamodb-1.0.0-java 1 gem installed
Still getting same error when doing plugin install: An error occurred while installing logstash-input-dynamodb (1.0.0), and Bundler cannot continue. Make sure that
gem install logstash-input-dynamodb -v '1.0.0' succeeds before bundling.
Deal with any dependencies
gem "logstash-input-dynamodb", "1.0.1", :path => "vendor/local_gems/863a3d26/logstash-input-dynamodb-1.0.1-java"
gem "activesupport-json_encoder","1.1.0",:path => "/etc/jruby/jruby-9.0.5.0/lib/ruby/gems/shared/gems/activesupport-json_encoder"
gem "activesupport" , "4.1.14.1" , :path => "/etc/jruby/jruby-9.0.5.0/lib/ruby/gems/shared/gems/activesupport-4.1.14.1"
Fix Logstash to run as service
Copy logstash-input-dynamodb to a new location
sudo cp -r logstash-input-dynamodb-1.0.1-java/ /opt/logstash/vendor/bundle/jruby/1.9/gems/
Update /opt/logstash/Gemfile
gem "logstash-input-dynamodb", "1.0.0", :path => "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-dynamodb"
sudo chmod a+wrx /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-dynamodb
sudo chmod a+wrx /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-dynamodb/lib/logstash-input-dynamodb_jars.rb
sudo chmod a+wrx /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-dynamodb/lib/
cd /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-dynamodb
bundle update
One thing I noticed was changing the owner of 'opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-dynamodb' to logstash seems to be doing something
One thing to note:
Using the rubygems.org version, '1.0.3' by doing just sudo bin/plugin install logstash-input-dynamodb, throws error: {:timestamp=>"2016-03-19T20:37:11.323000+0000", :message=>"The error reported is: \n \n\n\tyou might need to reinstall the gem which depends on the missing jar or in case there is Jars.lock then resolve the jars with
lock_jars command\n\nno such file to load -- com/amazonaws/aws-java-sdk-kms/1.10.27/aws-java-sdk-kms-1.10.27 (LoadError)"}
when starting logstash service.
did you miss a step here? to build the gem?
Probably.
I didn't write this instructions, these were written by @bretd25. Maybe he can help to indicate how he solved the problem.
Keep in mind that this instructions are for logstash 2.x.. You'll have to adapt them to your version.
Marcos.
I am getting this error
you might need to reinstall the gem which depends on the missing jar or in case there is Jars.lock then resolve the jars with `lock_jars` command
no such file to load -- joda-time/joda-time/2.8.2/joda-time-2.8.2 (LoadError)
No clue on how to solve.
Which logstash version are you using and how are you installing the gem?
Its logstash 2.2.2, and installed the gem through gem install
gem install logstash-input-dynamodb
Version for logstash-input-dynamodb is 2.0.3, got it from
https://rubygems.org/gems/logstash-input-dynamodb/versions/2.0.3-java
Earlier tried the local build option, but ended up at exact same problem.
Also I see all the required jars are right there in my ~/.m2/repository folder, either directly or in some folders. Why is logstash still not able to find them?
because logstash usually uses the logstash
user when it starts as logstash agent
. You can try to copy or symlink your .m2 folder to where logstash searches for dependencies (I believe is something like /opt/logstash)
you probably did gem install
with your user instead of logstash's. That's why deps got installed in your local .m2 folder.
Symlinking does not seem to help. I created a symlink named .m2 in /opt/logstash where my logstash resides. Exact same problem :(
Even copying of entire .m2 folder, and changing ownership to logstash:logstash of the folder recursively does not help. Same error.
@paragshar try creating this dir and linking .m2 there:
mkdir -p /var/lib/logstash/.m2
ln -s /var/lib/logstash/.m2 /your/user/.m2
Hope it helps.
Not too sure what you meant by above. Should the link part not be like
ln -s /your/user/.m2 /var/lib/logstash/.m2
and /your/user substituted by /home/ubuntu
I hope we are trying to create a softlink .m2 which points to maven repo created on /home/ubuntu
I figured it out finally. There was no jar file for joda-time/joda-time/2.8.2/joda-time-2.8.2 in my
.m2/repository/joda-time/joda-time/2.8.2. I just had a pom file there. I downloaded a jar file (joda-time-2.8.2.jar) directly and placed in within the folder /var/lib/logstash/.m2/repository/joda-time/joda-time/2.8.2.
And it works like a breeze after that.
Many thanks. Your assistance really helped me figure out the issue.
But I still need to see why was the jar file not there in the first place :)
Can you help me get rid of this error, whenever I try to install any plugin.
It installs the plugin I was trying to install successfully, but instead of finishing with a success, it does this with 1/10 retries.
An error occurred while installing logstash-input-dynamodb (1.0.0), and Bundler cannot continue. Make sure that
gem install logstash-input-dynamodb -v '1.0.0' succeeds before bundling.
The best idea is to run
gem install logstash-input-dynamodb
This will download and install the plugin from the gem repo.
Let me know if you encounter any problem with this.
i tried installing it from the gem repo before, it installs 1.0.3. but then it doesn't run in the LS service.
Using the rubygems.org version, '1.0.3' by doing just sudo bin/plugin install logstash-input-dynamodb, throws error:
{:timestamp=>"2016-03-19T20:37:11.323000+0000", :message=>"The error reported is: \n \n\n\tyou might need to reinstall the gem which depends on the missing jar or in case there is Jars.lock then resolve the jars with `lock_jars` command\n\nno such file to load -- com/amazonaws/aws-java-sdk-kms/1.10.27/aws-java-sdk-kms-1.10.27 (LoadError)"}.
when starting logstash service