我有一个包含 Docker 容器的 Logstash 设置,如下所示:
Server A
[Docker container] Logstash
[Docker container] Elasticsearch
[Docker container] Kibana
Server B
[Docker container] My application
[Docker container] Logstash-forwarder
服务器 B 上的 Logstash 转发器将我的应用程序
的所有日志发送到服务器 A 上的 Logstash。这很好用,但是每条日志消息都有 Docker 容器的主机名(这是容器),例如:
host = 6c7f900f6b46
由于 Logstash-forwarder 在 Docker 容器内运行,因此它(自身)看到的主机名是容器内的主机名。但这对我来说不是很有用。 如何使用 Docker 主机的主机名?
最佳答案
没有可用的 API(从 Docker Remote API v1.11 开始)以编程方式从容器内获取 Docker 主机名。
您可以在运行容器时显式设置容器的主机名,docker run --hostname=
,或者您可以在运行时使用 Docker 主机名设置环境变量,并在日志中传递该值(docker --env=
)。
关于docker - 获取在 Docker 容器中运行的 Logstash 中的主机名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23609195/