如何在 Elastic Beanstalk 中设置 CloudWatch 嵌入式指标格式 (emf)

How to setup CloudWatch embedded metrics format (emf) in Elastic Beanstalk

我正在尝试在 beantalk 环境中使用 CloudWatch 嵌入式指标格式 (emf) 运行 Docker 图片。

(关于 emf 的文档 here and here

为了能够发出 emf 指标,aws-cloudwatch-agent 需要具有以下配置:

{
  "logs": {
    "metrics_collected": {
      "emf": { }
    }
  }
}

但是,我无法使用 here 中描述的 .ebextensions 方法找到命名空间定义以将 emf 配置传递给 beanstalk。 可用的命名空间似乎只是流式传输现有日志。

如何在弹性 beantalk 环境中启用 CloudWatch emf 发布?

要传递其他配置,请使用 . More detail on platform hooks: AWS documentation

中描述的平台挂钩
  1. 我已经包含 .platform/hooks/predeploy/emf-config.sh 内容:
#!/bin/bash

echo '{
        "logs": {
          "metrics_collected": {
            "emf": { }
          }
        }
      }' > "/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d/emf_metrics.json"
/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a append-config
  1. 如果您使用 docker,请确保将此文件包含在您的 docker 图像中。使用我包含的 CDK 管道:
    (...)
    artifacts: {
        files: [
            "Dockerrun.aws.json",
            ".platform/hooks/**/*"
        ]
    },
  1. 最后,一定要给.sh文件加上执行权限。
chmod +x path/to/emf-config.sh
git update-index --chmod=+x path/to/emf-config.sh