值有逗号的 Logstash kv 过滤器问题
Logstash kv filter issue with value having comma
我的 kv 过滤器的字段拆分如下所示 -
field_split => ", "
field_split 基于逗号后跟 space。但我的价值观之一是 json 字符串。而 logstash 的输出似乎在遇到第一个逗号后忽略了该值。
示例 - 日志的 mdc 字段类似于:
abc=abcvalue 请求={"key1":"value1","key2":"value2"}
它解析成的是(输出指向elasticsearch):
"abc": "abcvalue"
"request": "{"key1":"value1""
如何让请求字段变成下面这样?
"request": "{"key1":"value1","key2":"value2"}"
如果你确实有 json,你可以匹配 json 并使用 json 过滤器解析它。
例如:
filter {
grok {
match => ["request=(?<request_json>{[^}]+})"] // match from { to first } and put in request_json
}
json {
source => "request_json"
target => "request"
remove_field => ["request_json"]
}
}
我的 kv 过滤器的字段拆分如下所示 -
field_split => ", "
field_split 基于逗号后跟 space。但我的价值观之一是 json 字符串。而 logstash 的输出似乎在遇到第一个逗号后忽略了该值。 示例 - 日志的 mdc 字段类似于: abc=abcvalue 请求={"key1":"value1","key2":"value2"}
它解析成的是(输出指向elasticsearch): "abc": "abcvalue" "request": "{"key1":"value1""
如何让请求字段变成下面这样? "request": "{"key1":"value1","key2":"value2"}"
如果你确实有 json,你可以匹配 json 并使用 json 过滤器解析它。
例如:
filter {
grok {
match => ["request=(?<request_json>{[^}]+})"] // match from { to first } and put in request_json
}
json {
source => "request_json"
target => "request"
remove_field => ["request_json"]
}
}