我正在 Amazon Linux 2023 上部署 Elastic Beanstalk 应用程序。我正在尝试配置新的 Amazon CloudWatch 代理以将自定义日志转发到 cloudwatch。过去,这是通过将一些配置文件添加到
awslogs
目录中来完成的,但新代理已弃用这种做法。这个新代理的配置文件位于 /opt/amazon/amazon-cloudwatch-agent/etc/beanstalk.json
。我可以看到 eb-engine 使用此配置文件启动代理,所以我想我可以用我的配置覆盖。我已确认我正在写入该文件,但在代理启动之前它又被默认值覆盖。我猜测 Elastic Beanstalk 的脚本会在启动代理之前添加默认配置
如何使用具有 Elastic Beanstalk 扩展配置或平台挂钩的新代理来执行此操作?
下面的配置文件使用新 amazon-cloudwatch-agent 的 自定义配置文件
container_commands: 01_append_logs_config:
command: |
amazon-cloudwatch-agent-ctl -a append-config -m ec2 -c file:/tmp/custom-cloudwatch-config.json -s
files: "/tmp/custom-cloudwatch-config.json":
mode: "000600"
owner: root
group: root
content: |
{
"logs": {
"logs_collected": {
"files": {
"collect_list": [
{
"file_path": "/var/log/logfilename.log",
"log_group_name": "`{"Fn::Join":["/", ["/aws/elasticbeanstalk", { "Ref":"AWSEBEnvironmentName" }, "var/log/logfilename.log"]]}`",
"log_stream_name": "{instance_id}"
},
]
}
}
}
}