通过配置日志驱动程序将 Docker 容器日志发送到 ELK Stack - 简单方法

Sending Docker container logs to ELK Stack by configuring the logging drivers - Easy Method

我通常 运行 应用程序作为 docker 容器,因为它具有很高的灵活性和可用性。有没有办法让容器登录到我的 logstash 服务器。

Docker 包含多种日志记录机制,可帮助您通过日志记录驱动程序从 运行 容器和服务中获取信息。

每个 Docker 守护进程都有一个默认的日志记录驱动程序,每个容器都使用它,除非您将其配置为使用不同的日志记录驱动程序。

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

#logstash.conf

input {
  tcp {
    port => 5000
  }
}

output {
  stdout {}
}

以下两个命令将在 logstash 中显示 hello-world 容器日志。

docker run -it --rm --name=logstash -p 5000:5000 -v /path/to/logstash.conf:/usr/share/logstash/config/logstash.yml docker.elastic.co/logstash/logstash:7.14.0

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

只需将输出部分配置为,Logstash 的输出甚至可以发送到 elasticsearch,

  elasticsearch {

    hosts => ["<elastic-system-ip>:9200"]

  }

访问https://docs.docker.com/engine/admin/logging/overview/