如何通过流畅的群集模式收集日志

时间:2018-05-10 18:25:55

标签: docker docker-compose docker-swarm fluentd

我尝试在swarm模式下运行服务(mongo),并通过fluentd将日志收集到elasticsearch。它的工作(!)与:

docker-compose up

但是,当我通过堆栈进行部署时,服务已启动,但未收集日志,而且我不知道如何查看原因。

docker stack deploy -c docker-compose.yml env_staging

搬运工-compose.yml:

version: "3"
services:
    mongo:
        image: mongo:3.6.3
        depends_on:
         - fluentd
        command: mongod
        networks:
         - webnet
        logging:
          driver: "fluentd"
          options:
            fluentd-address: localhost:24224
            tag: mongo
    fluentd:
        image: zella/fluentd-es
        depends_on:
         - elasticsearch
        ports:
         - 24224:24224
         - 24224:24224/udp
        networks:
         - webnet
    elasticsearch:
        image: elasticsearch
        ports:
         - 9200:9200
        networks:
         - webnet
    kibana:
        image: kibana
        depends_on:
         - elasticsearch
        ports:
         - 5601:5601
        networks:
         - webnet
networks:
     webnet:

更新

我删除了fluentd-address: localhost:24224并解决了问题。但我不明白什么是" localhost"?为什么我们不能设置"流利"主办。如果有人解释什么是fluentd-address,我会接受回答。

2 个答案:

答案 0 :(得分:0)

fluentd-address是fluentd守护程序所在的地址(默认为localhost,在这种情况下您不需要指定它)。

在您的情况下(使用堆栈)您的流利守护程序将在节点上运行,您应该使用服务名称(在您的情况fluentd中)尝试到达该服务,是否尝试过?)。

请务必在fluentd-async-connect: "true"

中添加选项

参考文献是: https://docs.docker.com/config/containers/logging/fluentd/#usage

答案 1 :(得分:0)

您无需指定fluentd地址。当您将日志记录驱动程序设置为fluentd时,Swarm会自动发现最近的fluentd实例,并将所有所需容器的标准输出发送到那里。