Logstash起動時のエラー

こんにちわ。
確かに/tmpフォルダに書き込み権限がないと、同じエラーになることをLogstash6.5.1で確認しました。

tmpが書き込み権限がないというのであれば、書き込みができる場所を
Javaのテンポラリ用のフォルダの指定をすれば良い、ということになるかと思います。

そこで、EM_TEMPDIRではなく、LS_JAVA_OPTS環境変数でJVM引数を指定してみてください。

export LS_JAVA_OPTS="-Djava.io.tmpdir=/hoge/fuga"

/hoge/fugaは、logstash実行ユーザが書き込みができる場所とします。
これで実行いただくと、tmpフォルダが書き込み権限なくても、/hoge/fuga以下を使うので起動エラーは避けられるはずです。

こちらはDockerで確認していますが、これを確認したときの起動コマンドはこちらになります。
/tmpフォルダはReadOnly、新しく指定するtmp用のフォルダはReadWriteで。

docker run  -it -v /home/test/1205:/tmp:ro \
                -v /home/test/hoge:/hoge/fuga:rw \
                -e LS_JAVA_OPTS=-Djava.io.tmpdir=/hoge/fuga \
                docker.elastic.co/logstash/logstash:6.5.1

これでlogstashを起動すると、jrubyのjarがtmpとして指定したフォルダにコピーされていることが確認できました。

参考になれば幸いです。

1 Like