系统日志驱动程序不使用docker compose和elk stack

时间:2017-09-25 13:40:38

标签: docker elasticsearch logstash docker-compose syslog

我想将一个运行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在此端口上没有显示任何内容....不知道为什么...

1 个答案:

答案 0 :(得分:2)

您需要使用tcp://127.0.0.1:514代替tcp://elk-custom:514。原因是docker而不是容器正在使用此地址。这就是elk-custom无法访问的原因。

所以这只会在您映射端口(您已经完成)并且首先启动elk-service(您已经完成)并且可以从docker主机访问IP时使用{{ 1}}