通过配置日志记录驱动程序将Docker容器日志发送到ELK Stack - Easy Method

时间:2017-01-25 08:46:10

标签: logging docker syslog elastic-stack logstash-configuration

我通常将应用程序作为docker容器运行,因为它具有很高的灵活性和可用性。有没有办法将容器日志放入我的 logstash 服务器。

1 个答案:

答案 0 :(得分:7)

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

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

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

#logstash.conf

input {
  tcp {
    port => 5000
  }
}

output {
  stdout {}
}

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

docker run -it --rm --name=logstash -p 5000:5000 -f /path/to/logstash.conf

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/