AWS ECS容器记录设计模式

时间:2017-06-21 02:19:38

标签: amazon-web-services docker amazon-cloudwatch amazon-ecs amazon-cloudwatchlogs

我有一个经典的scala应用程序,它在该位置生成三个不同的日志

/var/log/myapp/log1/mylog.log
/var/log/myapp/log2/another.log
/var/log/myapp/log3/anotherone.log

我将应用程序容器化并正常工作,我可以通过docker volume mount获取这些日志。

现在,app / container将部署在具有自动缩放组的AWS ECS中。在这种情况下,多个容器可以在一个单独的ecs主机上运行。

我想使用云监视来监控我的应用程序日志。

可以将一个解决方案放在我的应用程序容器中。

有没有更好的方法可以将这些应用程序日志从容器记录到云监视日志。

非常感谢帮助。

2 个答案:

答案 0 :(得分:3)

使用泊坞窗时,建议的方法是不记录文件,而是将日志发送到stdoutstderr。这样做可以防止将日志写入容器的文件系统,并且(取决于所使用的日志记录驱动程序)允许您使用docker logs / docker container logs子命令查看日志。

许多应用程序都有一个配置选项可以记录到stdout / stderr,但如果这不是一个选项,您可以创建一个符号链接来重定向输出;例如,Docker Hub上的官方NGINX图像uses this approach

Docker支持日志记录驱动程序,允许您将日志记录发送到AWS云监视(以及其他)。修改映像以使其登录到stdout / stderr后,您可以配置AWS日志记录驱动程序。

有关登录Docker的更多信息,请参阅"logging" section in the documentation

答案 1 :(得分:0)

如果您可以更改代码,则不需要日志代理。

您可以直接将自定义指标数据发布到ColudWatch,就像此页面上所说的:https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/examples-cloudwatch-publish-custom-metrics.html