我们在日志中有一条消息,其中包含以下结构,我们希望使用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}" ]
}
返回表达式不返回布尔值。
有谁知道如何让它发挥作用?
答案 0 :(得分:0)
有一种方法可以替换grok中的东西。您需要在过滤器中使用overwrite
。 http://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"]
作品。