如何通过命令行获取指定LogStream中最近30分钟的AWS CloudWatch日志
获取最近30分钟的AWS CloudWatch日志
1. 提取指定LogGroup最近30分钟的日志
使用AWS CLI的filter-log-events命令,结合时间范围参数筛选最近30分钟的日志。首先通过命令行生成UTC时区的毫秒级时间戳(CloudWatch要求时间戳以毫秒为单位):
# 计算30分钟前的UTC毫秒时间戳 START_TIME=$(date -u -d '-30 minutes' +%s000) # 当前UTC时间的毫秒时间戳 END_TIME=$(date -u +%s000) # 替换为你的LogGroup名称 aws logs filter-log-events \ --log-group-name "/aws/ec2/instance-logs" \ --start-time $START_TIME \ --end-time $END_TIME
如果需要简化输出,只查看日志内容,可添加--query参数过滤字段:
aws logs filter-log-events \ --log-group-name "/aws/ec2/instance-logs" \ --start-time $START_TIME \ --end-time $END_TIME \ --query 'events[*].message' \ --output text
2. 提取指定LogStream最近30分钟的新增日志
在上述命令基础上,添加--log-stream-names参数指定目标LogStream(支持多个流,空格分隔):
START_TIME=$(date -u -d '-30 minutes' +%s000) END_TIME=$(date -u +%s000) # 替换为你的LogGroup和LogStream名称 aws logs filter-log-events \ --log-group-name "/aws/ec2/instance-logs" \ --log-stream-names "i-1234567890abcdef0-logs" "i-0987654321fedcba0-logs" \ --start-time $START_TIME \ --end-time $END_TIME
关键说明
- 确保AWS CLI已配置有效凭证(通过
aws configure完成配置),且当前用户拥有logs:FilterLogEvents权限。 - 时间参数必须使用UTC时区,
date -u命令确保生成正确的UTC时间戳,避免时区差异导致日志范围错误。 - 若返回结果过多,可使用
--limit <数量>限制单次返回条数,或通过--next-token参数分页获取剩余日志。
内容的提问来源于stack exchange,提问作者kkkk
相关产品推荐
相关产品推荐

