>我正在尝试将 AWS ECS 容器任务日志移动到云监视,我已经为 "日志驱动程序" 配置了 IAM 策略和 Terraform 任务,我没有将任何容器集中日志放入 Cloudwatch>>
Cofiguration.JSON
>>>"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "app-api",
"awslogs-region": "eu-west-1",
"awslogs-stream-prefix": "app-logs"
}
}
ecs.tf>>
"elasticloadbalancing:DeregisterTargets",
"elasticloadbalancing:Describe*", "elasticloadbalancing:Describe*",
"elasticloadbalancing:RegisterInstancesWithLoadBalancer", "elasticloadbalancing:RegisterInstancesWithLoadBalancer",
"elasticloadbalancing:RegisterTargets" "elasticloadbalancing:RegisterTargets",
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:DescribeLogStreams",
"logs:PutSubscriptionFilter",
"logs:PutLogEvents"
任务容器记录的信息类型主要取决于其 ENTRYPOINT 命令。默认情况下,捕获的日志显示在本地运行容器时通常会在交互式终端中看到的命令输出,即 STDOUT 和 STDERR I/O 流。
您想获取哪种类型的日志? 从上面的定义来看,如果你在 ecs 上使用默认的 aws 日志,你只能从 STDOUT 和 STDER 获取
如果要从文件中获取日志,则应获取自己的 awslogs 配置。
- 将容器日志文件挂载到容器实例(容器定义上的配置(
- 如果您不使用 ECS 优化型 AMI,请安装 AWS 日志代理 https://docs.aws.amazon.com/en_us/AmazonCloudWatch/latest/logs/QuickStartEC2Instance.html
- 如果您使用的是弹性云服务器优化型 AMI,请下载使用
curl https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py -O
-
使用自定义配置运行代理设置
python awslogs-agent-setup.py -n -r ${AWS::Region} -c your_awslogs_configuration.conf || error_exit "Failed to run CloudWatch Logs agent setup"