You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Amazon Linux 2023版Elastic Beanstalk中配置CloudWatch Agent转发自定义日志

在Amazon Linux 2023 Elastic Beanstalk中配置新版CloudWatch Agent转发自定义日志

由于Elastic Beanstalk默认脚本会在启动CloudWatch Agent前覆盖/opt/amazon/amazon-cloudwatch-agent/etc/beanstalk.json,推荐通过平台钩子或扩展配置实现自定义日志转发,以下是具体方案:

方案一:使用平台钩子(推荐)

平台钩子可精准控制执行时机,确保在EB生成默认配置后、Agent启动前修改配置文件。

  1. 在项目根目录创建钩子目录:

    mkdir -p .platform/hooks/deploy
    
  2. 在该目录下创建可执行脚本(命名前缀数字控制执行顺序,确保在EB默认脚本后运行):.platform/hooks/deploy/99_custom_cloudwatch_config.sh,内容如下:

    #!/bin/bash
    
    # 安装jq(用于合并配置,若实例已预装可跳过)
    yum install -y jq
    
    # 定义自定义日志配置条目
    CUSTOM_LOG='{
      "file_path": "/var/log/your-custom-log.log",
      "log_group_name": "/aws/elasticbeanstalk/your-env-name/your-custom-log",
      "log_stream_name": "{instance_id}",
      "retention_in_days": 7
    }'
    
    # 将自定义日志条目合并到默认配置的collect_list中
    jq --argjson custom "$CUSTOM_LOG" '.logs.logs_collected.files.collect_list += [$custom]' /opt/amazon/amazon-cloudwatch-agent/etc/beanstalk.json > /tmp/beanstalk.json
    
    # 替换原配置文件
    mv /tmp/beanstalk.json /opt/amazon/amazon-cloudwatch-agent/etc/beanstalk.json
    
    # 重启CloudWatch Agent使配置生效
    systemctl restart amazon-cloudwatch-agent
    
  3. 给脚本添加执行权限:

    chmod +x .platform/hooks/deploy/99_custom_cloudwatch_config.sh
    

方案二:使用.ebextensions扩展配置

通过扩展配置直接替换或修改beanstalk.json,需注意执行顺序确保覆盖默认配置。

在项目根目录创建.ebextensions/cloudwatch-agent.config文件,内容如下:

files:
  "/opt/amazon/amazon-cloudwatch-agent/etc/beanstalk.json":
    content: |
      {
        "logs": {
          "logs_collected": {
            "files": {
              "collect_list": [
                # 保留EB默认日志配置(可选)
                {
                  "file_path": "/var/log/httpd/access_log",
                  "log_group_name": "/aws/elasticbeanstalk/your-env-name/var/log/httpd/access_log",
                  "log_stream_name": "{instance_id}"
                },
                # 添加自定义日志配置
                {
                  "file_path": "/var/log/your-custom-log.log",
                  "log_group_name": "/aws/elasticbeanstalk/your-env-name/your-custom-log",
                  "log_stream_name": "{instance_id}",
                  "retention_in_days": 7
                }
              ]
            }
          }
        }
      }
    mode: "000644"
    owner: root
    group: root

container_commands:
  01_restart_cloudwatch_agent:
    command: systemctl restart amazon-cloudwatch-agent

注意事项

  • 替换配置中的your-env-name和your-custom-log.log为实际环境名和日志文件路径;
  • 确保Elastic Beanstalk实例IAM角色拥有CloudWatch日志相关权限(如logs:CreateLogGroup、logs:PutLogEvents等);
  • 若完全替换配置文件,需保留必要的默认日志条目,避免丢失EB自带日志的转发能力。

内容的提问来源于stack exchange,提问作者Ben Zuill-Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 19:43:19