Unable to connect docker container to logstash via gelf driver
I've found the mistake, i've to specify the UDP protocol in the logstash service port definition.
logstash: build: logstash/ volumes: - ./logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml - ./logstash/pipeline:/usr/share/logstash/pipeline ports: - "5000:5000/udp" environment: LS_JAVA_OPTS: "-Xmx256m -Xms256m" networks: - elk depends_on: - elasticsearch
You need to use the gelf input plugin. Here an example of a functioning compose file:
services: logstash: image: docker.elastic.co/logstash/logstash:5.3.1 logging: driver: "json-file" networks: - logging ports: - "127.0.0.1:12201:12201/udp" entrypoint: logstash -e 'input { gelf { } } output { stdout{ } }'
You can test it by running:
docker run --log-driver=gelf --log-opt gelf-address=udp://127.0.0.1:12201 ubuntu /bin/sh -c 'while true; do date "+%d-%m-%Y %H:%M:%S:%3N"; sleep 1 ; done
and checking docker logs on the logstash container.