如何使用Logstash的grok捕获并替换某些文本后的数字串?

时间:2015-03-25 14:27:22

标签: logstash logstash-grok

我们在日志中有一条消息,其中包含以下结构,我们希望使用Logstash的grok隐藏accountId信息:

  

消息:时间戳:19-02-2015 13:55:37   CorrelationId:xx999-9999-99999-9999-xxxxxxxx   数据:RequestMessageId - sdgersc-345frh-346yfh-34563sd-345634d   数据:ReplyMessageId - 1123223-xx235-xx234-x46sdg-654segsdg   数据:-100 - NameOfTheService_020:错误消息   数据:accountId - 1324235234   数据:caseNumber - 123235345

我们希望过滤掉accountId信息,最好将其替换为“隐藏”字样。

我们找不到在grok中替换数据的方法,所以我们尝试在过滤器中使用grok,如下所示:

grok { 
    drop_if_match => "message", "Data: accountId - ${NUMBER}" ]
}

返回表达式不返回布尔值。

有谁知道如何让它发挥作用?

2 个答案:

答案 0 :(得分:0)

有一种方法可以替换grok中的东西。您需要在过滤器中使用overwritehttp://logstash.net/docs/1.4.2/filters/grok

E.g。

grok { 
    overwrite => "message"
    match [ "message", "%{SYSLOGBASE} %{GREEDYDATA:message}" ]
}

通常用于切断时间戳之类的内容,并保留消息文本。但我不明白为什么你不能用它来破坏账户ID。

答案 1 :(得分:0)

不是那么困难,

gsub => ["message", "Data: accountId - \d+", "Data: accountId - hidden"]

作品。