有没有办法在Docker Swarm中获取日志?

时间:2016-12-02 18:00:59

标签: docker docker-swarm

我想从Docker Swarm服务中查看日志。不仅因为我希望收集我的所有日​​志都是出于通常的原因,而且因为我想弄清楚服务因"task: non-zero exit (1)"而崩溃的原因。

我在管道中看到there is work to implement docker logs,但是有办法访问生产服务的日志吗?或者Docker Swarm还没有为生产记录做好准备吗?

2 个答案:

答案 0 :(得分:16)

使用Docker Swarm 17.03,您现在可以通过命令行访问多实例服务的日志。

docker service logs -f {NAME_OF_THE_SERVICE}

您可以使用以下命令获取服务名称:

docker service ls

请注意,这是 实验性功能 (非生产就绪),为了使用它,您必须启用实验模式: < / p>

更新: docker logs service 现在是docker&gt; = 17.06的标准功能。 https://docs.docker.com/engine/reference/commandline/service_logs/#parent-command

类似的问题:How to log container in docker swarm mode

答案 1 :(得分:1)

我们成功完成的工作是GrayLog。如果查看docker run文档,可以指定日志驱动程序和日志选项,以便将所有控制台消息发送到graylog集群。

docker run... --log-driver=gelf --log-opt gelf-address=udp://your.gelf.ip.address:port --log-opt tag="YourIdentifier"

您也可以在技术上为docker守护程序在全局级别配置它,但我会建议不要这样做。它不会让您添加“标记”选项,这对于过滤结果非常有用。

Docker服务定义还支持日志驱动程序和日志选项,因此您可以使用docker service update来调整服务,而不会破坏它们。