Docker Swarm on Azure:正确使用docker4x / logger-azure
我正在Azure上使用预定义的Docker构build (Edge Channel),其中一个function是日志loggingfunction。 在pipe理器节点上使用docker ps
进行检查我看到有这个editions_logger
容器( docker4x / logger-azure ),它捕获所有容器日志并将其写入Azure存储帐户。
我如何直接使用这个容器来获取我的容器的日志?
- 我的第一个方法是直接从Azure门户find合适的存储并共享和下载日志。
- 第二种方法是使用
docker exec -ti editions_logger cat /logmnt/xxx.log
直接连接到容器docker exec -ti editions_logger cat /logmnt/xxx.log
- 运行
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
命令了,所以将来应该更容易检查日志)。