aşağıdaki biçimde günlük hatları var ve alanları elde etmek istiyorum ettik:Logstash grok filtresi - isim alanları dinamik
[field1: content1] [field2: content2] [field3: content3] ...
ben alan adlarını biliyorum, ne de alanların sayısı.
Ben geribaşvuruların ve sprintf formatı ile denedim ama hiçbir sonuç var:
match => [ "message", "(?:\[(\w+): %{DATA:\k<-1>}\])+" ] # not working
match => [ "message", "(?:\[%{WORD:fieldname}: %{DATA:%{fieldname}}\])+" ] # not working
Bu yalnızca bir alan için iş gibi görünüyor ama değil daha:
match => [ "message", "(?:\[%{WORD:field}: %{DATA:content}\] ?)+" ]
add_field => { "%{field}" => "%{content}" }
kv filtre de değil Uygun, çünkü alanların içeriği whitespaces içerebilir.
Bu sorunu gidermek için herhangi bir eklenti/strateji var mı?