如何使用 Logstash 的 grok 捕获和替换某些文本后的数字字符串?
How to capture and replace string of numbers after certain text with Logstash's grok?
我们在日志中有一条消息具有以下结构,我们想使用 Logstash 的 grok 隐藏 accountId
信息:
Message: Timestamp: 19-02-2015 13:55:37
CorrelationId: xx999-9999-99999-9999-xxxxxxxx
Data: RequestMessageId - sdgersc-345frh-346yfh-34563sd-345634d
Data: ReplyMessageId - 1123223-xx235-xx234-x46sdg-654segsdg
Data: -100 - NameOfTheService_020: Error message
Data: accountId - 1324235234
Data: caseNumber - 123235345
我们要过滤掉accountId
的信息,最好用"hidden".
的文字代替
我们找不到在grok中替换数据的方法,所以我们尝试在过滤器中使用grok如下:
grok {
drop_if_match => "message", "Data: accountId - ${NUMBER}" ]
}
这 return 表达式不是 return 布尔值。
有人知道如何让它工作吗?
有一种方法可以替换 grok 中的内容。您需要在过滤器中使用 overwrite
。 http://logstash.net/docs/1.4.2/filters/grok
例如
grok {
overwrite => "message"
match [ "message", "%{SYSLOGBASE} %{GREEDYDATA:message}" ]
}
通常这是为了砍掉时间戳之类的东西,并保留消息文本。但我不明白为什么你不能用它来破坏帐户 ID。
没那么难,
gsub => ["message", "Data: accountId - \d+", "Data: accountId - hidden"]
有效。
我们在日志中有一条消息具有以下结构,我们想使用 Logstash 的 grok 隐藏 accountId
信息:
Message: Timestamp: 19-02-2015 13:55:37 CorrelationId: xx999-9999-99999-9999-xxxxxxxx Data: RequestMessageId - sdgersc-345frh-346yfh-34563sd-345634d Data: ReplyMessageId - 1123223-xx235-xx234-x46sdg-654segsdg Data: -100 - NameOfTheService_020: Error message Data: accountId - 1324235234 Data: caseNumber - 123235345
我们要过滤掉accountId
的信息,最好用"hidden".
我们找不到在grok中替换数据的方法,所以我们尝试在过滤器中使用grok如下:
grok {
drop_if_match => "message", "Data: accountId - ${NUMBER}" ]
}
这 return 表达式不是 return 布尔值。
有人知道如何让它工作吗?
有一种方法可以替换 grok 中的内容。您需要在过滤器中使用 overwrite
。 http://logstash.net/docs/1.4.2/filters/grok
例如
grok {
overwrite => "message"
match [ "message", "%{SYSLOGBASE} %{GREEDYDATA:message}" ]
}
通常这是为了砍掉时间戳之类的东西,并保留消息文本。但我不明白为什么你不能用它来破坏帐户 ID。
没那么难,
gsub => ["message", "Data: accountId - \d+", "Data: accountId - hidden"]
有效。