Docker Swarm on Azure:正确使用docker4x / logger-azure

我正在Azure上使用预定义的Docker构build (Edge Channel),其中一个function是日志loggingfunction。 在pipe理器节点上使用docker ps进行检查我看到有这个editions_logger容器( docker4x / logger-azure ),它捕获所有容器日志并将其写入Azure存储帐户。

我如何直接使用这个容器来获取我的容器的日志?

  1. 我的第一个方法是直接从Azure门户find合适的存储并共享和下载日志。
  2. 第二种方法是使用docker exec -ti editions_logger cat /logmnt/xxx.log直接连接到容器docker exec -ti editions_logger cat /logmnt/xxx.log
  3. 运行docker service logs xxx抛出only supported with experimental daemon

所有的方法(不是第三个)似乎都相当复杂。 有没有更好的办法?

另一种方法是,我们可以使用--volumes将容器日志存储到主机,然后使用Logstash从卷中收集日志。

在主机上打开一个固定的目录D,并把日志挂载到D目录的子目录下,然后挂载到Logstash D上。 这样,Logstash容器就可以收集来自其他容器的所有日志。
它是这样工作的:
在这里输入图像说明

我在我们的集群上检查了两种方法,但是我们发现了一种相当简单的方法来检查日志。 Azure OMS的方法非常好,我可以推荐它,但是目前对于我们来说这个设置太大了。 另外logstash的方法是好的。

幸运的是,tail命令支持通配符,使用这个我们可以很好地查看我们的日志。

 docker exec -ti editions_logger bash cd /logmnt tail -f service_name* 

非常感谢您使用不同的方法! 我期待新的Swarmfunction(已经有docker service logs命令了,所以将来应该更容易检查日志)。