Docker容器无法将日志发送到docker ELK堆栈

时间:2016-09-07 06:49:23

标签: java docker spring-boot logstash elastic-stack

我部署了ELK堆栈和另一个分离的spring boot app的docker容器。

在java应用程序中,我使用LogstashSocketAppender将日志发送到logstash。

  1. 如果java应用程序独立运行而没有docker,它可以正常工作。
  2. 但是当它作为docker容器运行时,logstash无法接收日志。
  3. 任何人都可以帮我搞清楚吗?

    logstash配置的一部分:

    input {
        udp {
            port => 5000
            type => syslog
            codec => json
        }
    }
    
      

    dcoker port:

    logstash$ 5000/udp -> 0.0.0.0:5000
    springboot$ 8088/tcp -> 0.0.0.0:32981
    elasticsearch$ 9200/tcp -> 0.0.0.0:9200 9300/tcp -> 0.0.0.0:9300
    kibana$ 5601/tcp -> 0.0.0.0:5601
    

1 个答案:

答案 0 :(得分:2)

您可以通过如下配置Logstash并运行要查看其日志的容器来获取容器日志,方法是将其默认日志驱动程序更改为 syslog

#logstash.conf

input {
  tcp {
    port => 5000
  }
}

output {
  stdout {}
}

以下容器的日志将到达logstash,并且可以通过 stdout 查看。

docker run --log-driver=syslog --log-opt syslog-address=tcp://<logstash-system-ip>:5000 <image>