2
多行神交过滤器我有一个很长的logstash神交过滤器:定义了在logstash
match => { 'message' => '%{MONTH:month} %{NUMBER:day} %{TIME:time} %{WORD:log_host} %{WORD:generator}\[%{NUMBER:unknown}\]: %{IP:connIP}:%{NUMBER:connPort} \[.*\] %{WORD:namespace}\~? %{NOTSPACE:unknown} %{NOTSPACE:unknown} %{NUMBER:res_statuscode} %{NUMBER:unknown} (?<unknown>\-.*\-) %{NOTSPACE:unknown} %{NOTSPACE:unknown} \"%{WORD:method} %{PATH:path} %{DATA:httpversion}\"' }
任何方式多行打破这个吗?我试过如下:
match => { 'message' => '%{MONTH:month} %{NUMBER:day} %{TIME:time} %{WORD:log_host}'
' %{WORD:generator}\[%{NUMBER:unknown}\]: %{IP:connIP}:%{NUMBER:connPort}'
' \[.*\] %{WORD:namespace}\~? %{NOTSPACE:unknown} %{NOTSPACE:unknown}'
' %{NUMBER:res_statuscode} %{NUMBER:unknown} (?<unknown>\-.*\-) %{NOTSPACE:unknown}'
' %{NOTSPACE:unknown} \"%{WORD:method} %{PATH:path} %{DATA:httpversion}\"' }
但它给我的错误,甚至使用逗号分隔字符串不起作用:{:timestamp=>"2016-09-30T08:38:50.549000+0000", :message=>"fetched an invalid config" ...
有没有提及的官方文件在处理这样的:
- https://www.elastic.co/guide/en/logstash/current/filter-plugins.html
- https://www.elastic.co/guide/en/logstash/current/config-examples.html
激活换行,在你喜欢的编辑器? – baudsp
另一种解决方案是将grok模式分成两部分,第一个过滤器将消息的末尾留给第二个过滤器进行解析。但要小心你的表演(查看[博客文章](https://www.elastic.co/blog/do-you-grok-grok))。 – baudsp
@baudsp(1)无论每个人如何设置编辑器,它都应该是一个提高团队可见性的解决方案,所以这个解决方案不会。 (2)这不是一个理想的解决方案,因为我真的想匹配整个模式(如果不匹配会失败),但如果我需要像这样管道来增加可见性,我会牢记它。 –