2017-02-02 8 views
1

Мне нужно проанализировать значение запроса диапазона в start_range и end_range в logstash. Данные поступают из объекта JSON и выглядит следующим образом:Заголовок запроса диапазона Parsing с logstah

byte_range: "bytes=10-200" 

, и я хочу, чтобы извлечь начало и конец на отдельные ценности, как это:

start_range:10 
end_range:200 

Я также необходимо учитывать, что значение может выглядеть следующим образом:

byte_range: "bytes=10-" 

и должны еще привести:

start_range: 10 
end_range: - 

Я пытался делать это, как это с ГРОК фильтр, но он не работает:

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

Кто-нибудь есть идеи, как решить эту проблему как можно проще?

ответ

3

Вы можете использовать опциональный, не захватив группу (?:...)?:

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

где \d+ спичек 1+ цифры.

Или, используя встроенный в шаблонах ГРОК:

bytes=%{INT:start_range}(?:-%{INT:end_range})? 
+0

Это работало, спасибо так много! –

 Смежные вопросы

  • Нет связанных вопросов^_^