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

如何配置AWS CloudWatch Agent每日在同一log_group生成新log_stream

实现CloudWatch每日自动创建新Log Stream的方案

问题根源

你之前用{date}作为log_stream_name无效,是因为CloudWatch Agent的{date}变量是Agent启动瞬间的日期,不会随时间动态更新,所以只会在启动当天创建一个Log Stream,后续不会自动切换。要实现每日新Stream,需要结合本地日志轮转+Agent动态监控轮转后的日志文件。


步骤1:配置本地日志按天轮转

首先让PM2生成的日志按天分割,这样每天会产生一个独立的日志文件,CloudWatch Agent才能针对不同日期的文件创建对应Stream。

方案A:用PM2内置日志轮转

修改你的PM2配置文件(比如ecosystem.config.js),添加轮转规则:

module.exports = {
  apps: [{
    name: 'sqsListener',
    script: '你的启动脚本路径',
    error_file: '/home/user/listener-logs/out.log',
    out_file: '/home/user/listener-logs/out.log',
    merge_logs: true, // 合并正常/错误日志到同一文件,符合你的需求
    log_date_format: 'YYYY-MM-DD HH:mm:ss', // 日志时间戳格式
    rotate: true,
    rotate_interval: 'daily', // 每天自动轮转
    max_size: '100M', // 可选:单天日志超过100M也轮转
    retain: 7 // 本地保留最近7天的日志文件
  }]
};

重启PM2应用生效:

pm2 reload ecosystem.config.js

方案B:用系统logrotate工具

创建/etc/logrotate.d/sqslistener配置文件:

/home/user/listener-logs/out.log {
  daily
  rotate 7
  compress
  missingok
  notifempty
  create 0644 user user
  postrotate
    pm2 reload sqsListener --update-env > /dev/null 2>&1 || true
  endscript
}

这个配置会每天将out.log重命名为out.log-YYYYMMDD,并生成新的空out.log供PM2写入。


步骤2:修改CloudWatch Agent配置

让Agent监控所有轮转后的日志文件,并以日期文件名作为Log Stream名称:

{
  "agent": {
    "run_as_user": "cwagent"
  },
  "logs": {
    "logs_collected": {
      "files": {
        "collect_list": [
          {
            "file_path": "/home/user/listener-logs/out.log-*",
            "log_group_class": "STANDARD",
            "log_group_name": "sqsListener-logs-dev.log",
            "log_stream_name": "{filename}", // 用轮转后的文件名(含日期)作为Stream名
            "retention_in_days": 1,
            "timestamp_format": "%Y-%m-%d %H:%M:%S" // 匹配PM2的日志时间戳格式,确保时间解析正确
          }
        ]
      },
      "file_fingerprint_lines": 1 // 帮助Agent快速识别新生成的日志文件
    }
  }
}

重启CloudWatch Agent生效:

sudo systemctl restart amazon-cloudwatch-agent

验证效果

  • 等待第二天,查看CloudWatch的sqsListener-logs-dev.log日志组,会生成对应日期的新Log Stream(比如out.log-20240520)
  • 若想立即测试,可以手动触发一次日志轮转,检查Agent是否自动识别新文件并创建Stream

内容的提问来源于stack exchange,提问作者Utkarsh Deep

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 02:34:52