2017-10-20 17 views
0

J'essaie de laisser l'un des motifs comme vide lorsque l'étiquette correspondante n'est pas trouvée. Mais d'une manière ou d'une autre, le prochain match est remplacé.motif logstash grok pour laisser les étiquettes vides

J'ai un logline comme ci-dessous

[2017-10-19 09:41:07,204: INFO/Worker-5] <test id = '123:4567', name = 'example_testcase'><TID:0b46030ee6f14055b41b796a4eebfef2><RID:>POST some url to post 

J'ai essayé ci-dessous motif grok correspondant

^\[%{TIMESTAMP_ISO8601:timestamp}%{DATA}%{LOGLEVEL:log_level}/%{DATA:work_id}\]%{SPACE}(?:<%{DATA:message_headers}>)?(<TID:%{DATA:tid}>)?(<RID:%{BASE10NUM:rid}>)?%{GREEDYDATA:log_message} 

Cela fonctionne bien comme le long que message_headers se trouve, si elle ne se trouve pas, puis les en-têtes de message est en train de se substituer à TID. ex:

[2017-10-19 09:41:07,204: INFO/Worker-5] <TID:0b46030ee6f14055b41b796a4eebfef2><RID:>POST some url to post 

alors le modèle de grok, devrait laisser message_headers comme vide. Au lieu de cela TID est assis dans message_headers. Quelqu'un peut-il aider à réaliser cette fonctionnalité.

Répondre

1

J'ai supprimé l'expression facultative "?" après Tid et ça marche. Merci