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

Java Docker容器无法将日志发送到Docker ELK堆栈,java,docker,spring-boot,logstash,elastic-stack,Java,Docker,Spring Boot,Logstash,Elastic Stack,我部署了ELK stack和另一个独立的spring boot应用程序docker容器 在java应用程序中,我使用LogstashSocketAppender将日志发送到logstash 如果java应用程序在没有docker的情况下独立运行,那么它可以正常工作 但是当它作为docker容器运行时,logstash无法接收日志 有人能帮我弄清楚吗 日志存储配置的一部分: input { udp { port => 5000 type => s

我部署了ELK stack和另一个独立的spring boot应用程序docker容器

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

  • 如果java应用程序在没有docker的情况下独立运行,那么它可以正常工作
  • 但是当它作为docker容器运行时,logstash无法接收日志
  • 有人能帮我弄清楚吗

    日志存储配置的一部分:

    input {
        udp {
            port => 5000
            type => syslog
            codec => json
        }
    }
    
    dcoker端口:


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

    #logstash.conf
    
    input {
      tcp {
        port => 5000
      }
    }
    
    output {
      stdout {}
    }
    
    docker run --log-driver=syslog --log-opt syslog-address=tcp://<logstash-system-ip>:5000 <image>
    
    下面容器的日志将到达日志库,并可通过stdout查看

    #logstash.conf
    
    input {
      tcp {
        port => 5000
      }
    }
    
    output {
      stdout {}
    }
    
    docker run --log-driver=syslog --log-opt syslog-address=tcp://<logstash-system-ip>:5000 <image>
    
    docker-run--log-driver=syslog--log-opt-syslog-address=tcp://:5000
    
    post
    docker端口containers@user2915097发布的端口超出了我的猜测:docker容器有自己的网络接口,比如172.160.0.10,所以docker容器将日志发送到自己的5000端口。我建议研究如何发送到外部ip,即logstash的ip。让我猜一下:给定的主机名是
    localhost
    ?@nurgasemetey我已经在LogstashSocketAppender中配置了logstash ip,但仍然不起作用