使用CloudWatch Agent报Invalid Sequence Token如何定位故障采集文件
定位CloudWatch Agent SequenceToken报错对应采集文件的方法
方法1:调高Agent日志级别到Trace(最精准)
debug级别日志不会打印日志流和sequence token的关联关系,需要调整到trace级别:
- 修改
/opt/aws/amazon-cloudwatch-agent/bin/config.json的agent配置块,添加log_level参数:
{ "metrics_collection_interval": 60, "debug": true, "log_level": "trace", "run_as_user": "root" }
- 重启CloudWatch Agent生效:
systemctl restart amazon-cloudwatch-agent - 待警告再次出现后,用报错中的sequence token搜索agent日志,即可匹配到对应上报的日志组、日志流,再对应
collect_list里的配置就能找到关联的本地日志文件。trace级别日志会打印类似内容:
[outputs.cloudwatchlogs] Writing to log group <目标日志组名> log stream <目标日志流名> with sequence token 49619410836690261519535138406911035003981074860446093650
方法2:调用CloudWatch Logs API批量匹配(无需修改Agent配置)
报错中给出的next expected sequenceToken就是对应日志流当前的最新上传序列号,可以直接通过AWS CLI批量匹配:
- 先整理
collect_list中所有条目对应的日志组名、日志流名、本地文件路径的映射表 - 对每个日志组执行查询命令,获取该组下所有日志流的当前sequence token:
aws logs describe-log-streams --log-group-name <替换为你的日志组名> --query 'logStreams[*].[logStreamName, uploadSequenceToken]' --output text - 将返回结果里的
uploadSequenceToken和报错给出的期望token对比,完全匹配的日志流对应的本地文件就是触发报错的采集文件。
补充说明
Invalid SequenceToken属于常规警告,是Agent并发上报或者上一次请求异常导致的token校验失败,Agent会自动用返回的新token重试,不会丢失日志,如无特殊需求可以直接忽略该警告。
内容的提问来源于stack exchange,提问作者RubenLaguna
相关产品推荐
相关产品推荐

