使用 logstash 解析范围请求 header
Parsing range request header with logstah
我需要在 logstash 中将范围请求值解析为 start_range 和 end_range。数据来自 json object 并且看起来像这样:
byte_range: "bytes=10-200"
我想将开始和结束提取为单独的值,如下所示:
start_range:10
end_range:200
我还需要考虑到值可能如下所示:
byte_range: "bytes=10-"
并且仍然会导致:
start_range: 10
end_range: -
我尝试用 grok 过滤器这样做,但它不起作用:
bytes=%{NUMBER:start_range}-%{NUMBER:end_range}
有谁知道如何尽可能简单地解决这个问题?
您可以使用可选的 non-capturing 组 (?:...)?
:
bytes=(?<start_range>\d+)(?:-(?<end_range>\d+))?
其中 \d+
匹配 1+ 个数字。
或者使用 built-in Grok 模式:
bytes=%{INT:start_range}(?:-%{INT:end_range})?
我需要在 logstash 中将范围请求值解析为 start_range 和 end_range。数据来自 json object 并且看起来像这样:
byte_range: "bytes=10-200"
我想将开始和结束提取为单独的值,如下所示:
start_range:10
end_range:200
我还需要考虑到值可能如下所示:
byte_range: "bytes=10-"
并且仍然会导致:
start_range: 10
end_range: -
我尝试用 grok 过滤器这样做,但它不起作用:
bytes=%{NUMBER:start_range}-%{NUMBER:end_range}
有谁知道如何尽可能简单地解决这个问题?
您可以使用可选的 non-capturing 组 (?:...)?
:
bytes=(?<start_range>\d+)(?:-(?<end_range>\d+))?
其中 \d+
匹配 1+ 个数字。
或者使用 built-in Grok 模式:
bytes=%{INT:start_range}(?:-%{INT:end_range})?