我想将一个运行my_service
的容器中的日志发送到另一个运行带有ELK
驱动程序的syslog
堆栈的容器(因此我需要安装logstash-input-syslog
插件)。
我正在通过以下elk-custom
调整this elk image(并将其标记为Dockerfile-elk
)
(使用端口514
,因为this seems to be the default port)
FROM sebp/elk
WORKDIR /opt/logstash/bin
RUN ./logstash-plugin install logstash-input-syslog
EXPOSE 514
通过docker-compose
或多或少地运行我的服务:
elk-custom:
# image: elk-custom
build:
context: .
dockerfile: Dockerfile-elk
ports:
- 5601:5601
- 9200:9200
- 5044:5044
- 514:514
my_service:
image: some_image_from_my_local_registry
depends_on:
- elk-custom
logging:
driver: syslog
options:
syslog-address: "tcp://elk-custom:514"
然而:
错误:对于b4cd17dc1142_namespace_my_service_1无法启动服务 my_service:无法初始化日志记录驱动程序:拨打tcp:lookup elk-custom on 10.14.1.31:53:服务器行为不端
错误:对于api无法启动服务my_service:初始化失败 日志驱动程序:在10.14.1.31:53:server上拨tcp:lookup elk-custom 行为不端错误:在启动项目时遇到错误。
有什么建议吗?
UPDATE :显然没有任何东西正在侦听端口514
,因为在容器内,命令netstat -a
在此端口上没有显示任何内容....不知道为什么...
答案 0 :(得分:2)
您需要使用tcp://127.0.0.1:514
代替tcp://elk-custom:514
。原因是docker
而不是容器正在使用此地址。这就是elk-custom
无法访问的原因。
所以这只会在您映射端口(您已经完成)并且首先启动elk-service(您已经完成)并且可以从docker主机访问IP时使用{{ 1}}