3

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

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

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

现在,应用程序/容器将部署在具有 Auto Scaling 组的 AWS ECS 中。在这种情况下,多个容器可能会在单个 ecs 主机上运行。

我想使用 cloud watch 来监控我的应用程序日志。

一种解决方案是将 aws log 代理放在我的应用程序容器中。

有没有更好的方法将这些应用程序日志从容器获取到 cloudwatch 日志。

非常感谢您的帮助。

4

2 回答 2

4

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

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

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

有关登录 Docker 的更多信息,请参阅文档中的“日志记录”部分

于 2017-06-21T04:50:29.363 回答
0

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

您可以直接将自定义指标数据发布到 ColudWatch 中,如下页所述:https ://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/examples-cloudwatch-publish-custom-metrics.html

于 2020-02-16T15:54:30.803 回答