获取在Docker容器中运行的Logstash中的主机名

我有一个使用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-forwarder会将My application所有日志发送到服务器A上的Logstash。这很好,但每条日志消息都有Docker容器的主机名(即容器的ID),例如:

 host = 6c7f900f6b46 

由于Logstash-forwarder在Docker容器内部运行,因此它将看到的主机名(对于它自己而言)是容器内部的主机名。 但是这对我来说并不是很有用。 我如何使用Docker主机的主机名?

没有可用的API(从Docker Remote API v1.11开始 )以编程方式从容器中获取Docker主机名。

您可以在运行容器时显式设置容器的主机名, docker run --hostname= ,也可以在运行时使用Docker主机名设置环境variables,并在日志中传递该值( docker --env= )。