2016-12-02 162 views
0

我想查看Docker Swarm服务中的日志。不仅因为我希望我所有的日志都是按照常规原因收集的,而且还因为我想弄清楚为什么服务崩溃的原因是"task: non-zero exit (1)"有没有办法在Docker Swarm中获取日志?

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

+0

即将到来的搬运工1.13有你上面提到的变化。我认为他们现在应该有测试版了。否则,一个好的做法是做@Dockstar推荐的配置日志驱动程序。我们将logstash/kibana与gelf驱动程序一起使用,并且在docker守护进程中配置了该配置,所以我们的群集中的任何docker主机都会登录到kibana。另外一定要抓住系统日志输出,因为这是当你的容器死亡(例如内存不足)或者码头本身出现问题时的情况。 –

回答

0

我们已经成功完成的是利用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服务更新来调整您的服务而不会破坏它们。

+0

非常感谢!我会好好看看。很难挑出文档的相关部分,非常有用的指导! – Joe

+0

对不起,您能否确认这适用于Swarm?如果可能的话,指出有关在Swarm中使用日志驱动程序的任何文档? – Joe

+0

嘿!我可以证实这在群集中起作用,因为我们正在跨群集实例收集这些日志。 Docker的日志配置位于https://docs.docker.com/engine/admin/logging/overview/。 – Dockstar

4

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

docker service logs -f {NAME_OF_THE_SERVICE} 

你可以得到的服务的名称:

docker service ls 

注意,这是一个实验性功能(未投入生产),为了使用它,你必须启用实验模式:

更新:码头l ogs服务现在是docker> = 17.06的标准功能。 https://docs.docker.com/engine/reference/commandline/service_logs/#parent-command

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

相关问题