【问题标题】:Docker container cannot send log to docker ELK stackDocker 容器无法将日志发送到 docker ELK 堆栈
【发布时间】:2016-09-07 06:49:22
【问题描述】:

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

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

  1. 如果 java 应用程序在没有 docker 的情况下独立运行,它可以正常工作。
  2. 但是当它作为 docker 容器运行时,logstash 无法接收日志。

谁能帮我弄清楚?

logstash 配置的一部分:

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

dcoker 端口:

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

【问题讨论】:

  • 发布所有容器的docker port
  • @user2915097 上面发布的端口
  • 我的猜测:docker 容器有自己的网络接口,比如 172.160.0.10,所以 docker 容器将日志发送到自己的 5000 端口。我会建议研究如何发送到外部ip,即logstash的ip。
  • 让我猜猜:给定的主机名是localhost?
  • @nurgasemetey 我在LogstashSocketAppender中配置了logstash ip,还是不行

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


【解决方案1】:

您可以通过如下方式配置 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>

【讨论】:

    猜你喜欢
    • 2020-02-21
    • 2018-09-18
    • 1970-01-01
    • 2019-11-29
    • 1970-01-01
    • 2017-06-10
    • 2022-06-28
    • 2015-09-28
    • 2015-02-15
    相关资源
    最近更新 更多