我想查看Docker Swarm服务中的日志。不仅因为我希望我所有的日志都是按照常规原因收集的,而且还因为我想弄清楚为什么服务崩溃的原因是"task: non-zero exit (1)"
。有没有办法在Docker Swarm中获取日志?
我在管道中看到there is work to implement docker logs
,但是有没有办法访问生产服务的日志?或者Docker Swarm没有准备好用于生产日志?
我想查看Docker Swarm服务中的日志。不仅因为我希望我所有的日志都是按照常规原因收集的,而且还因为我想弄清楚为什么服务崩溃的原因是"task: non-zero exit (1)"
。有没有办法在Docker Swarm中获取日志?
我在管道中看到there is work to implement docker logs
,但是有没有办法访问生产服务的日志?或者Docker Swarm没有准备好用于生产日志?
我们已经成功完成的是利用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 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
即将到来的搬运工1.13有你上面提到的变化。我认为他们现在应该有测试版了。否则,一个好的做法是做@Dockstar推荐的配置日志驱动程序。我们将logstash/kibana与gelf驱动程序一起使用,并且在docker守护进程中配置了该配置,所以我们的群集中的任何docker主机都会登录到kibana。另外一定要抓住系统日志输出,因为这是当你的容器死亡(例如内存不足)或者码头本身出现问题时的情况。 –