如何使用Logstash的Pattern正确过滤提取句首字符串的全部字段值
Grok模式提取问题解决方案
错误原因
你调整后的模式=%{DATA:action} =%{DATA:type}\s和原始字符串结构不匹配:原始字符串中Received之后是空格接type=,不存在模式要求的「空格后直接跟等号」的结构,因此完全无法匹配返回空结果。
字段全提取Pattern
你可以直接使用如下规则匹配全部三个字段,如果你确认字段值不含空格,推荐用NOTSPACE代替DATA避免贪食匹配异常:
action=%{NOTSPACE:action}\stype=%{NOTSPACE:type}\sIdService=%{NOTSPACE:IdService}
提取结果示例:
{ "action": "Received", "type": "Event", "IdService": "45221" }
通用键值对匹配方案
如果不想硬编码键名,需要匹配任意键=值格式的空格分隔内容,可以使用如下规则:
(?:%{NOTSPACE:key}=%{NOTSPACE:value}(?:\s|$))+
这个规则会自动提取所有键和对应的值。
内容的提问来源于stack exchange,提问作者Hakyon
相关产品推荐
相关产品推荐

