2016-07-07 3 views
2

Logstash 2.3.3에서는 grok 필터가 마지막 필드에서 작동하지 않습니다. Logstash 그루크 필터가 마지막 필드에서 작동하지 않습니다.

이 문제를 재현 다음과 같이 test.conf을 만들려면이 시작된 후 다른 터미널 실행 echo "1,2,3,4,5" >> test.log

에,

input { 
    file { 
    path => "/Users/izeye/Applications/logstash-2.3.3/test.log" 
    } 
} 

filter { 
    grok { 
    match => { "message" => "%{DATA:id1},%{DATA:id2},%{DATA:id3},%{DATA:id4},%{DATA:id5}" } 
    } 
} 

output { 
    stdout { 
    codec => rubydebug 
    } 
} 

실행 ./bin/logstash -f test.conf

을하고 난 다음과 같은 결과를 얻었다 :

Johnnyui-MacBook-Pro:logstash-2.3.3 izeye$ ./bin/logstash -f test.conf 
Settings: Default pipeline workers: 8 
Pipeline main started 
{ 
     "message" => "1,2,3,4,5", 
     "@version" => "1", 
    "@timestamp" => "2016-07-07T07:57:42.830Z", 
      "path" => "/Users/izeye/Applications/logstash-2.3.3/test.log", 
      "host" => "Johnnyui-MacBook-Pro.local", 
      "id1" => "1", 
      "id2" => "2", 
      "id3" => "3", 
      "id4" => "4" 
} 

누락 된 id5을 볼 수 있습니다.

이 버그가 잘못되었거나 잘못 구성되어 있는지 확실하지 않습니다.

힌트를 보내 주시면 감사하겠습니다.

답변

1

DATA 패턴이 정의되어 있기 때문에라고 생각합니다. 그것의 정규식은 .*?이므로 게으른 일치입니다. 이것은 버그가 아니며, 정규식이 작동하는 방식입니다 (example).
그러나 정확한 답을 얻기 위해 정규식 질문을하고 싶을 수도 있습니다.

해결책으로 마지막 DATANUMBER (또는 상황에 따라 적절한 것으로)으로 바꿀 수 있습니다. 또한 GREEDYDATA가 작동합니다.

+0

감사합니다. 나는 값을 확인하지 않았다 : https://github.com/logstash-plugins/logstash-patterns-core/blob/master/patterns/grok-patterns –

관련 문제