2016-03-15 90 views
0

在我的日志中,我能够看到数据库的密码。我想删除字段,当它匹配一个特定的方法。下面是样本日志格式。Logstash变种过滤器

日期= 2016年2月23日:00:36:29:242,级别= INFO,类= abc_class,方法= abc_method,行= 266,名称= dataSourceUser,消息=返回属性,值=密码

下面

是样品logstashclient滤波器正在使用,但仍是能够看到值字段(密码)

filter { 
    grok { 
      match => {"message"=>"Date=(?<LogTime>%{YEAR:Year}-%{MONTHNUM:Month}-%{MONTHDAY:Day}:%{TIME:Time}), (Level=)(?<SeverityLevel>[A-Z]*)(\s)?, %{GREEDYDATA:message}"} 
      break_on_match => false 
    } 
    date { 
      match => ["LogTime", "YYYY-MM-dd:HH:mm:ss:SSS"] 
      target => "@timestamp" 
    } 
    if[method=="abc_method"]{ 
     mutate { 
      remove_field => ["%{Value}"] 
     } 
    } 

ETA:当过它方法相匹配= abc_method它不应该传递值字段,用于其它metods它应该通过

+0

GSUB解决了问题: –

回答

0

尝试:

remove_field => [ "value" ] 
+0

我们可以使用gsub过滤器:gsub => [“message”,“value =%{Value}”,“”] –

+0

删除字段只是将字段从传递中删除。在我的情况下,我需要值字段,但应该被屏蔽 –

+0

然后使用mutate-> replace来更改该字段的值。 –

0

发现我们可以使用GSUB过滤答案

例如:
GSUB => [ “消息”, “值=%{值}”, “”]

+0

你说你想“删除字段”。你不是删除一个字段,而是删除[message]字段的一部分。 –

+0

是的,我们可以屏蔽该值,而不是删除字段。我们可以隐藏存在的实际值。 –