我有一个使用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主机的主机名?
答案 0 :(得分:4)
没有可用的API(从Docker Remote API v1.11起)从容器中以编程方式获取Docker主机名。
您可以在运行容器docker run --hostname=
时显式设置容器的主机名,或者可以在运行时使用Docker主机名设置环境变量,并在日志中传递该值(docker --env=
)。