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

Docker Swarm on Azure: Correct use of docker4x/logger-azure

我正在使用 predefined build of Docker on Azure (Edge Channel) and one of the features is the logging feature. Checking with docker ps on the manager node I saw there is this editions_logger container (docker4x/logger-azure),它会捕获所有容器日志并将它们写入 Azure 存储帐户。

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

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

所有方法(虽然不是第三种方法)似乎都过于复杂。有没有更好的办法?

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

在宿主机打开固定目录D,将日志挂载到D目录的子目录下,再挂载D到Logstash。这样Logstash容器就可以收集其他容器的所有日志了。
它是这样工作的:

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

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

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

非常感谢您提供不同的方法!很期待Swarm的新功能(已经有docker service logs命令了,以后查看日志应该会更方便)