如何从在 AWS ecs 上使用 docker 部署的应用程序获取日志
Posted
技术标签:
【中文标题】如何从在 AWS ecs 上使用 docker 部署的应用程序获取日志【英文标题】:How to get the log from an application deployed using docker on AWS ecs 【发布时间】:2018-12-20 04:34:14 【问题描述】:我有一个后端应用程序在 node.js
上运行,带有 feathers.js
框架。我使用 docker 部署了它,目前由 AWS ECS 维护。
在我的应用程序中,我有几行 'console.log'
用于显示一些字符串以用于调试目的。我想知道当我在 AWS ECS 上部署应用程序时,console.log
打印到哪里以及如何访问它?
【问题讨论】:
【参考方案1】:您必须在 ECS 上创建一个日志组:
按照这些步骤创建您的日志组-
第 1 步:打开 Amazon ECS 控制台https://console.aws.amazon.com/ecs/
。
第 2 步:在左侧导航窗格中,选择Task Definitions、Create new Task Definition。
第 3 步:选择您的 compatibility option
,然后选择下一步。
第 4 步:选择 Add container
开始创建您的容器定义。
第 5 步:在Storage and Logging section
中,为日志配置选择Auto-configure CloudWatch Logs
。
第 6 步:输入您的 awslogs log driver options
。详情请见Specifying a Log Configuration in your Task Definition。
第 7 步:完成任务定义向导的其余部分。
创建日志视图后,您可以使用以下步骤查看它:
第 1 步:在 https://console.aws.amazon.com/cloudwatch/
打开 CloudWatch 控制台。
第 2 步:在导航窗格中,选择日志。
第 3 步:对于日志组,选择日志组以查看流。
第 7 步:对于日志流,选择 log stream name
以查看日志数据。
更多详情:
Working with Log Groups and Log Streams
Using the awslogs Log Driver
【讨论】:
【参考方案2】:在您的容器定义中,您需要提及日志配置。由于不清楚您是否使用 cloudformation / 从 gui 控制台创建 ecs 集群,我将尝试两种方式回答。
1. GUI 控制台:
2。使用 cloudformation 模板:
"containerDefinitions": [
"name": "nodejsApplication",
"links": [
"mysql"
],
"image": "nodejsApplication",
"essential": true,
"portMappings": [
"containerPort": 80,
"hostPort": 80
],
"logConfiguration":
"logDriver": "awslogs",
"options":
"awslogs-group": "awslogs-nodejsApplication",
"awslogs-region": "us-west-2",
"awslogs-stream-prefix": "awslogs-example"
,
"memory": 500,
"cpu": 10
]
更多详情请关注Using Awslogs
【讨论】:
【参考方案3】:console.log
打印到 STDOUT。将其作为日志收集的一个好方法是发送至use the awslogs log driver。这会将这些日志路由到您选择的 CloudWatch Logs 流。这里有更多information on what CloudWatch Logs 以及如何使用它。
【讨论】:
以上是关于如何从在 AWS ecs 上使用 docker 部署的应用程序获取日志的主要内容,如果未能解决你的问题,请参考以下文章
在 AWS ECS 上使用 docker-compose 进行持续部署的最佳实践
如何使用 docker compose up 与 ECS 上下文设置 AWS 区域
AWS ECS 使用 docker 和 nginx,如何将我的 nginx 配置放入容器中?