如何从在 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 DefinitionsCreate 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 部署的应用程序获取日志的主要内容,如果未能解决你的问题,请参考以下文章

Terraform + AWS ECS,持续部署流程?

在 AWS ECS 上使用 docker-compose 进行持续部署的最佳实践

如何使用 docker compose up 与 ECS 上下文设置 AWS 区域

AWS ECS 使用 docker 和 nginx,如何将我的 nginx 配置放入容器中?

使用 Jenkins 或 Job Scheduler 在 AWS ECS 上自动部署 Docker 容器

通过 Github 操作在 AWS ECS 上使用 Docker Compose 进行部署