J'ai des lignes de journaux dans le format suivant et que vous souhaitez extraire les champs:filtre Logstash de grok - champs de nom dynamique
[field1: content1] [field2: content2] [field3: content3] ...
Je ne connais les noms de champs, ni le nombre de champs.
Je l'ai essayé avec des backreferences et le format sprintf mais obtenu aucun résultat:
match => [ "message", "(?:\[(\w+): %{DATA:\k<-1>}\])+" ] # not working
match => [ "message", "(?:\[%{WORD:fieldname}: %{DATA:%{fieldname}}\])+" ] # not working
Cela semble fonctionner pour un seul domaine, mais pas plus:
match => [ "message", "(?:\[%{WORD:field}: %{DATA:content}\] ?)+" ]
add_field => { "%{field}" => "%{content}" }
Le filtre kv est pas non plus approprié car le contenu des champs peut contenir des espaces.
Existe-t-il un plugin/stratégie pour résoudre ce problème?