【问题标题】:How to capture and replace string of numbers after certain text with Logstash's grok?如何使用 Logstash 的 grok 捕获和替换某些文本后的数字字符串?
【发布时间】:2015-03-25 23:06:31
【问题描述】:

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

消息:时间戳:19-02-2015 13:55:37 相关 ID: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}" ]
}

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

有谁知道如何让它工作?

【问题讨论】:

    标签: logstash logstash-grok


    【解决方案1】:

    没那么难,

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

    有效。

    【讨论】:

      【解决方案2】:

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

      例如

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

      通常这是为了去掉时间戳等内容,并保留消息文本。但我不明白为什么你不能用它来破坏帐户 ID。

      【讨论】:

        猜你喜欢
        • 2023-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-30
        • 2012-03-30
        • 2017-06-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多