CloudWatch Log Agent配置更新后日志无法导出至CloudWatch求助
CloudWatch日志代理配置更新后日志停止导出排查方案
核对配置文件细节
尽管/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json -s返回配置成功,仍需手动校验:- 确认
file_path路径完全正确,包括文件名、层级目录,且代理运行用户cwagent拥有该文件的读取权限(执行ls -l /path/to/target/log查看权限) - 检查
log_group_name和log_stream_name是否符合CloudWatch命名规范,避免特殊字符或格式错误 - 确认配置中的变量(如
{instance_id})能正常解析,未出现拼写错误 - 核对
region字段与EC2实例所在AWS区域一致
- 确认
验证代理运行状态与IAM权限
- 执行
systemctl status amazon-cloudwatch-agent确认代理处于running状态,若异常则重启:systemctl restart amazon-cloudwatch-agent - 检查EC2实例关联的IAM角色是否具备CloudWatch日志写入权限,需包含
logs:CreateLogGroup、logs:CreateLogStream、logs:PutLogEvents操作权限,可通过aws iam get-role-policy --role-name <your-iam-role> --policy-name <policy-name>核对 - 测试代理与CloudWatch服务的连通性:执行
curl -v https://logs.<your-region>.amazonaws.com,确认无连接超时或SSL证书错误
- 执行
深度分析代理日志
查看完整代理日志(默认路径/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log),重点搜索:ERROR/WARN级别的日志,定位配置解析、权限或连接类错误Successfully parsed config确认配置已被正确加载Start tailing file确认代理已开始监听目标日志文件
若日志中无读取记录,大概率是file_path未匹配到有效文件,可尝试使用绝对路径、通配符测试,或确认目标日志文件有新内容写入(无新内容时代理不会主动发送)
测试最小化配置
创建简化配置文件test-config.json:{ "logs": { "logs_collected": { "files": { "collect_list": [ { "file_path": "/tmp/test-cloudwatch.log", "log_group_name": "test-log-group", "log_stream_name": "test-stream-{instance_id}" } ] } } }, "metrics": { "metrics_collected": {} } }加载配置:
/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/tmp/test-config.json -s,手动向/tmp/test-cloudwatch.log写入测试内容,再检查CloudWatch控制台和代理日志是否有新日志流入排查系统级限制
- 执行
df -h确认EC2实例磁盘空间充足,日志目录未被占满 - 检查安全组和系统防火墙是否允许443端口出站访问
logs.<region>.amazonaws.com - 验证SELinux/AppArmor是否阻止代理读取日志文件,可临时执行
setenforce 0测试,若恢复正常则需配置对应规则放行
- 执行
内容的提问来源于stack exchange,提问作者Keshav Maheshwari
相关产品推荐
相关产品推荐

