如何在Logs Insights中正确解析Lambda空格分隔格式日志
问题原因
你使用的*通配符属于glob匹配模式,该模式下通配符默认按最长/最短匹配规则跨空格错位匹配,无法精准识别带空格的可变长字段。你的日志中message字段包含多处空格,原写法的4个*不会按预期在第三个空格后将剩余内容全部分配给message,最终导致字段取值错位。
修正方案
改用正则表达式模式做解析,明确匹配规则:前3个字段为无空格的固定格式段,最后一个字段捕获行尾所有剩余内容(包含空格),修正后的查询语句如下:
fields @timestamp, @message, @requestId | parse @message /^(\S+)\s+(\S+)\s+(\S+)\s+(.*)$/ as timestamp, requestId, type, message | display @timestamp, @requestId, type, message
正则规则说明
^标记日志行起始位置,避免前置多余字符干扰匹配(\S+)匹配连续非空白字符,依次对应timestamp、requestId、type三个不含空格的字段\s+匹配字段间的一个或多个分隔空格,兼容多空格分隔的日志格式(.*)$匹配到行尾的所有剩余字符(包含任意空格),对应完整的message字段
执行该查询即可得到正确的字段拆分结果。
内容的提问来源于stack exchange,提问作者Emanuele
相关产品推荐
相关产品推荐

