通过配置日志驱动程序将 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"]
}
我通常 运行 应用程序作为 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"]
}