我尝试在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
,我会接受回答。
答案 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实例,并将所有所需容器的标准输出发送到那里。