如何在Elastic Beanstalk中配置CloudWatch嵌入式指标格式(EMF)
在Elastic Beanstalk Docker环境启用CloudWatch EMF指标的实现方法
前提条件
首先确保你的Elastic Beanstalk实例关联的IAM角色已添加以下权限:
- cloudwatch:PutMetricData
- logs:CreateLogStream
- logs:PutLogEvents
方案1:通过.ebextensions注入EMF配置(推荐)
Elastic Beanstalk的CloudWatch Agent会自动合并/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d/目录下的所有JSON配置片段,无需使用官方预留的配置命名空间,直接写入配置文件即可生效:
- 在你的应用部署包根目录新建
.ebextensions文件夹,创建配置文件01_enable_emf.config,内容如下:
files: "/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d/99-emf-config.json": mode: "000644" owner: root group: root content: | { "logs": { "metrics_collected": { "emf": {} } } } container_commands: 01_restart_cloudwatch_agent: command: "systemctl restart amazon-cloudwatch-agent" ignoreErrors: false
注:若使用Amazon Linux 1的旧版Elastic Beanstalk平台,需将container_commands中的重启命令替换为
service amazon-cloudwatch-agent restart
- 正常部署应用包到Elastic Beanstalk即可,配置会自动生效。
方案2:适配Docker容器日志输出场景
如果你的Docker应用直接将EMF格式日志输出到stdout/stderr,无需额外修改日志路径:
- Elastic Beanstalk默认会收集容器的stdout/stderr日志写入CloudWatch日志组
- 按方案1启用EMF采集后,CloudWatch Agent会自动从日志流中识别EMF格式内容,提取为指标存入CloudWatch Metrics
验证生效方法
部署完成后:
- 触发你的应用输出若干EMF格式日志
- 进入CloudWatch控制台,在「指标」页面的自定义命名空间下即可看到EMF提取生成的指标
内容的提问来源于stack exchange,提问作者mikethe
相关产品推荐
相关产品推荐

