我正在尝试创建一个将在多台计算机上的多个Docker实例上运行的应用程序。由于我的容器将以$.ajax()
作为命令运行,nginx
将显示nginx日志的输出,这很好。但是,这引出了一个问题:我的应用程序应该在哪里登录?
我想到的选项如下。
据我所知,为了能够识别哪个Docker容器已写入日志,我必须创建类似docker logs
的内容,并为每个容器创建一个文件夹,并在容器内告诉我的应用程序写入该目录。例如,我必须创建/var/logs/myapplication
并将其作为卷安装在我的Docker容器中。
这种方法的问题在于收集日志很困难。我将不得不ssh到不同的机器,进入每台机器的/var/logs/myapplication/instance-1
目录并获取日志以阅读它们。当我知道那里有一个问题时,它非常好,但在我试图监控整个系统时会感到困惑。
在此方法中,所有Docker容器都将写入数据库,数据库的其中一列将为/var/logs/myapplication
,以便我可以根据容器名称过滤日志。
这种方法的问题在于我还没有使用数据库来保存日志,而且我不确定它们是否应该像这样使用。
所以我的问题是,当你有多台机器上有多个容器时,是否有一个经过验证的最佳实践?