Install Logstash shipper on RedHat 5.4+

Installing Logstash on older versions of RedHat can be a real pain. If you are struck with the familiar LoadError: Could not load FFI Provider: (NotImplementedError) FFI not available: null then follow on!

First things first how to install Logstash on RedHat 5.4:

sudo rpm -Uvh http://download.elasticsearch.org/logstash/logstash/packages/centos/logstash-1.4.2-1_2c0f5a1.noarch.rpm --nodeps

This will install logstash in /opt/logstash/

[ravi1114@web-3-stag ~]$ ll /opt/logstash/
total 40  
drwxr-xr-x  2 logstash logstash 4096 Dec  9 14:49 bin  
drwxr-xr-x  3 logstash logstash 4096 Dec  8 13:54 lib  
-rw-rw-r--  1 logstash logstash  591 Jun 24 07:41 LICENSE
drwxr-xr-x  2 logstash logstash 4096 Dec  8 13:54 locales  
drwxr-xr-x  2 logstash logstash 4096 Dec  9 11:58 logs  
drwxr-xr-x  2 logstash logstash 4096 Dec  8 13:54 patterns  
-rw-rw-r--  1 logstash logstash 3450 Jun 24 07:41 README.md
drwxr-xr-x 10 logstash logstash 4096 Dec  8 13:54 spec  
drwxrwxr-x  2 logstash logstash 4096 Jun 24 07:41 tmp  
drwxr-xr-x  8 logstash logstash 4096 Dec  8 13:54 vendor  
[ravi1114@web-3-stag ~]$ 

And have init script in /etc/init.d/logstash.

But when you run the logstash service (sudo service logstash start) it would fail to start and you can check /var/log/logstash directory for log output. There you would find:

LoadError: Could not load FFI Provider: (NotImplementedError) FFI not available: null in logstash.log or logstash.err

This is a red herring. The real issue is it cannot access a mounted directory. To fix it, I changed java.io.tmpdir to point to a location which it can access. In this instance it was /opt/application/logstash/tmp

LS_OPT=/opt/application/logstash/tmp  
LS_JAVA_OPTS="-Djava.io.tmpdir=${LS_OPT}"  

Boom! That fixed the LoadError: Could not load FFI Provider: (NotImplementedError) FFI not available: null issue.

You might also face an issue with chroot command not working. Specifically the message would be like: chroot: invalid option -- -

[UPDATE: 1/13/2015]

To fix it remove `chroot --user $LOGSTASH_USER:$LOGSTASH_` command from `/etc/init.d/logstash` and you should be set.

Let me know if you have any issues inspite of these tips! Thank you for your time!