将EC2实例的Docker容器日志推送到CloudWatch的问题

0

【以下的问题经过翻译处理】 我在免费套餐中拥有一个正在工作的EC2实例,其中一个位于实例内部的docker容器内运行具有响应功能的基于Java的grpc服务器。

我想将容器的日志发送到CloudWatch。

我创建了建议的策略,EC2角色并将角色附加到实例上。

通过该命令从Linux实例的bash中启动容器:

docker run -d -p 9092:9092 -t <<my-container-name>> --log-driver=awslogs --log-opt awslogs-region=us-east-1 --log-opt awslogs-group="gRPC-POC" --log-opt awslogs-stream="gRPC-POC-log" --log-opt awslogs-create-group=true --log-opt awslogs-create-stream=true

我尝试使用不同的用户运行容器,以及不同的log-driver选项(省略各种部分和其他大部分内容)。

我创建的用于使用CloudWatch的策略如下:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "logs:CreateLogStream",
                "logs:CreateLogGroup",
                "logs:PutLogEvents",
                "logs:DescribeLogStreams"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:logs:us-east-1:<<my-account-number>>:log-group:*:*"
        }
    ]
}

截至目前,即使我创建或不创建日志组和/或日志流,也没有发现收集的日志在CloudWatch中的迹象。

也许我错过了某个步骤或某处至关重要的信息?

请问您有任何建议吗?

#Edit 命令aws sts get-caller-identity给出了此结果:

Enter image description here

该命令是从正在运行的实例的bash中使用的。

1 Antwort
0

【以下的回答经过翻译处理】 您好,

IAM策略是正确的,但您分享的命令中有些问题。以下是一些观察和疑问:

  1. 在发出命令后,您的容器是否实际运行?上述语法不会引发任何错误,但对我来说甚至没有启动容器。您可以使用“docker ps”或“docker ps -a”进行确认。
  2. 在您的命令中,<<my-container-name>>是否意味着使用要启动容器的镜像名称?在这种情况下,请在命令末尾提供镜像的名称。Docker运行命令的用法如下:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

  1. awslogs-create-stream不是一个有效的日志选项参数,并返回“docker: Error response from daemon: unknown log opt 'awslogs-create-stream' for awslogs log driver.” 根据最新的Docker文档和Docker v20.10.17进行了检查。

请尝试使用以下命令:

docker run -d -p 9092:9092 -t --log-driver=awslogs --log-opt awslogs-region=us-east-1 --log-opt awslogs-group="gRPC-POC" --log-opt awslogs-stream="gRPC-POC-log" --log-opt awslogs-create-group=true  <<my-image-name>>

--Syd

profile picture
EXPERTE
beantwortet vor 5 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen