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

16

由于其高度的灵活性和可用性,我通常将应用程序作为Docker容器运行。有没有一种方法可以将容器日志获取到我的Logstash服务器中。

1个回答

23

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/


2
运行logstash的命令不太对。正确的命令如下: docker run -it --rm --name logstash -p 5000:5000 -v /path/to/logstash.conf:/usr/share/logstash/pipeline/logstash.conf docker.elastic.co/logstash/logstash:7.14.0 - Gijs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接