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

时间:2014-05-12 12:33:54

标签: docker hostname 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主机的主机名?

1 个答案:

答案 0 :(得分:4)

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

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