【问题标题】:EC2 Docker container logs on CloudWatchCloudWatch 上的 EC2 Docker 容器日志
【发布时间】:2020-10-23 14:37:56
【问题描述】:

我在 EC2 实例上有一个正在运行的容器,我想将我的日志填充到同一区域的 CloudWatch。

我试图使用本教程: https://docs.docker.com/config/containers/logging/awslogs/

但是我有一个与连接超时有关的问题,即使策略允许我的 ec2 实例连接到 cloudwatch,当我试图描述任何我没有收到任何响应时。

您知道如何将我的日志从运行在 EC2 上的 docker 容器获取到 cloudwatch 吗?我已经尝试了多个教程,但无法做到。

【问题讨论】:

  • "连接超时" - 您是否在私有子网中运行您的实例?它有互联网连接吗?

标签: amazon-web-services docker amazon-ec2 amazon-cloudwatch


【解决方案1】:

创建 ECS-CloudWatchLogs IAM 策略

1.打开 IAM 控制台https://console.aws.amazon.com/iam/

2.在导航窗格中,选择策略。

3.选择创建策略,JSON。

4.输入以下策略:

{ “版本”:“2012-10-17”, “陈述”: [ { “效果”:“允许”, “行动”: [ “日志:创建日志组”, "日志:CreateLogStream", “日志:PutLogEvents”, “日志:DescribeLogStreams” ], “资源”:[ “arn:aws:logs:::*” ] } ] } 5.选择审核政策。

6.在 Review policy 页面上,输入 ECS-CloudWatchLogs 作为 Name 并选择 Create policy。

将 ECS-CloudWatchLogs 策略附加到 ecsInstanceRole

1.打开 IAM 控制台https://console.aws.amazon.com/iam/

2.在导航窗格中,选择角色。

3.选择 ecsInstanceRole。如果该角色不存在,请按照 Amazon ECS 容器实例 IAM 角色中的步骤创建该角色。

4.选择权限、附加策略。

5.要缩小要附加的可用策略,对于过滤器,键入 ECS-CloudWatchLogs。

6.选择 ECS-CloudWatchLogs 策略并选择附加策略

【讨论】:

  • 我没有使用 ECS。我正在使用手动安装 docker 的 EC2。
【解决方案2】:

如果实例具有正确的权限,您只需将以下选项传递给您的 docker run 命令。

docker run -it --log-driver=awslogs --log-opt awslogs-region=us-west-2     --log-opt awslogs-group=myLogGroup --log-opt awslogs-create-group=true  node:alpine

您可以查看aws-console,您将看到日志组名称myLogGroup

正如您还提到您正在超时,要验证这一点,请检查以下命令。

 curl http://checkip.amazonaws.com

如果它没有响应,则表示该实例没有互联网访问权限并且它位于私有子网中。

【讨论】:

  • 谢谢,我遇到了一个与 cidr 块限制太大有关的问题。需要改变它
猜你喜欢
  • 2018-03-13
  • 2021-09-28
  • 2019-07-06
  • 2020-06-29
  • 1970-01-01
  • 2017-08-06
  • 2014-04-26
  • 2019-12-01
  • 2020-03-30
相关资源
最近更新 更多