我想从Docker Swarm服务中查看日志。不仅因为我希望收集我的所有日志都是出于通常的原因,而且因为我想弄清楚服务因"task: non-zero exit (1)"
而崩溃的原因。
我在管道中看到there is work to implement docker logs
,但是有办法访问生产服务的日志吗?或者Docker Swarm还没有为生产记录做好准备吗?
答案 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
答案 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来调整服务,而不会破坏它们。