2017-09-27 90 views
0

我想从一个rancher服务(如my_service)日志发送到另一个rancher服务与syslog司机有问题的(记录)服务的牧场主

我通过docker-compose为建立我的堆栈运行ELK堆栈发现如下或多或少:

elk-custom: 
    # image: elk-custom 
    build: 
     context: . 
     dockerfile: Dockerfile-elk 
    ports: 
     - 5601:5601 
     - 9200:9200 
     - 5044:5044 
     - 5151:5151 
     - 5152:5152 


    my_service: 
    image: some_image_from_my_local_registry 
    depends_on: 
     - elk-custom 
    logging: 
    driver: syslog 
    options: 
     syslog-address: "tcp://elk-custom:514" 

然而,在栈上的仪表板,为my_service我得到:

my_service (Expected state running but got error: Error response from daemon: failed to initialize logging driver: dial tcp: lookup elk-custom on 10.0.2.3:53: server misbehaving) 

是否还需要其他任何东西才能使特定的日志记录(elk-custom)服务可被发现?

+0

假设堆栈名称为'ELK',请尝试'ELK.elk-custom'或'elk-custom.ELK' –

+0

,你的意思是在'syslog-address'字段中。 'syslog-address:“tcp://ELK.elk-custom:5151”'? – pkaramol

+0

尝试了上述,现在变得'没有这样的主机' – pkaramol

回答

0

有些事情发生在那里有问题。首先,如果您正在构建,则必须使用git或HTTP远程URL或基于s3的上下文。

请参阅文档:http://rancher.com/docs/rancher/v1.6/en/cattle/rancher-compose/#builds

通常情况下,建立一个图像,并将其部署为服务。构建更像是一个开发项目,不太用于事物的生产方面。

接下来就是在多主机设置中,您将在Rancher网络上路由时遇到问题。我建议在主机联网模式下在所有具有syslog入口的节点上部署Logstash收集器。然后您可以将日志记录驱动程序指向本地主机syslog目标。每个logstash收集器都会转发到另一个logstash进行过滤或Elastic cluster。