编写CloudWatch Log Insights查询替换UUID并统计503日志数量
CloudWatch Log Insights 替换UUID并统计503错误数量
核心思路
由于日志格式不统一,依赖固定分隔符的parse函数无法适配,改用正则匹配替换处理UUID——利用UUID的固定格式(8-4-4-4-12位十六进制字符),通过regex_replace函数全局替换所有UUID为*,再分组统计503错误的出现次数。
示例日志与期望结果
原始日志
GET /api/v1/users/123e4567-e89b-12d3-a456-426614174000 HTTP/1.1 503 123
POST /api/v1/orders/98765432-1234-5678-90ab-cdef01234567 HTTP/1.1 503 456
GET /api/v1/products?traceId=abc123-def4-56gh-ijkl-mnopqrstuvwx HTTP/1.1 503 789
替换后效果
GET /api/v1/users/* HTTP/1.1 503 123
POST /api/v1/orders/* HTTP/1.1 503 456
GET /api/v1/products?traceId=* HTTP/1.1 503 789
最终查询语句
fields @timestamp, regex_replace(@message, '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}', '*') as cleaned_message | filter cleaned_message contains '503' | stats count(*) as error_count by cleaned_message | sort error_count desc
语句说明
regex_replace(@message, ...):匹配日志中所有符合标准UUID格式的字符串,替换为*,生成清理后的日志字段cleaned_messagefilter cleaned_message contains '503':筛选出包含503错误的日志stats count(*) as error_count by cleaned_message:按清理后的日志模式分组,统计每组的错误数量sort error_count desc:按错误数量降序排列,快速定位高频错误模式
内容的提问来源于stack exchange,提问作者Sumant_02
相关产品推荐
相关产品推荐

