I'm trying to integrate my Logstash development project with Docker (I am quite new to Docker as well, so my knowledge of Docker is quite basic).
I am able to create an image with a simple Dockerfile and then successfully run the image with a basic logstash config file, however, I actually want my config file to do more than just stdout {}
in console view. More exactly, I want to save the output of some filtered logs (with grok) in a JSON file, in a certain folder in that image. For this I added some code in the Dockerfile, but when I run the image, whenever it tries to execute the commands in the logstash config file I see this error, and then the JVM stops.
[2019-10-18T09:33:56,898][INFO ][logstash.outputs.file ] Opening file {:path=>"/usr/share/logstash/data/logstashOUTPUT.json"}
[2019-10-18T09:33:56,906][ERROR][org.logstash.execution.WorkerLoop] Exception in pipelineworker, the pipeline stopped processing new events, please check your filter configuration and restart Logstash.
org.jruby.exceptions.SystemCallError: (EACCES) Permission denied - /usr/share/logstash/data/logstashOUTPUT.json
I assume that my Docker ADD
is adding the file where I need, but when the output
command from the logstash .conf file tries to write in the JSON file, the permission is not granted.
How can I fix this ?
Here is the content of my Docker file as well:
FROM docker.elastic.co/logstash/logstash:7.4.0
RUN rm -f /usr/share/logstash/pipeline/logstash.conf
#ADD pipelines.yml /usr/share/logstash/pipeline/
ADD logstashDocker.conf /usr/share/logstash/pipeline/
ADD logstashOUTPUT.json /usr/share/logstash/data/