使用logstash解析范围请求标头

问题描述 投票:1回答:1

我需要将范围请求值解析为logstash中的start_range和end_range。数据来自json对象,如下所示:

byte_range: "bytes=10-200"

我想将start和end提取为单独的值,如下所示:

start_range:10
end_range:200

我还需要考虑到值可能如下所示:

byte_range: "bytes=10-"

并且仍然应该导致:

start_range: 10
end_range: -

我尝试使用grok过滤器这样做,但它不起作用:

bytes=%{NUMBER:start_range}-%{NUMBER:end_range}

有没有人知道如何尽可能简单地解决这个问题?

regex elasticsearch logstash logstash-grok
1个回答
3
投票

您可以使用可选的非捕获组(?:...)?

bytes=(?<start_range>\d+)(?:-(?<end_range>\d+))?

其中\d+匹配1+位数。

或者使用内置的Grok模式:

bytes=%{INT:start_range}(?:-%{INT:end_range})?
© www.soinside.com 2019 - 2024. All rights reserved.