【问题标题】:Logstash grok pattern to filter custom Log messageLogstash grok 模式过滤自定义日志消息
【发布时间】:2015-03-16 08:40:25
【问题描述】:

我是 logstash 的新手,我想从日志消息中过滤文件。这是日志消息:

[2015-03-16 13:12:05,130]  INFO - LogMediator ServiceName = TestService_v1,SystemDate = 3/16/15 1:12 PM,ServerIP = 127.0.1.1,ServerHost = Inspiron-3521,SequenceName = Validation,Message = Going to Validate Request ,MessageCode = null,ErrorMessage = null,ErrorDetail = null,ErrorException = null

我想从上面的日志消息中提取所有字段,如 ServiceName、SystemDate、SequenceName 等。此日志消息的 grok 模式或正则表达式是什么?

任何帮助将不胜感激。

【问题讨论】:

    标签: regex expression grok logstash-grok


    【解决方案1】:

    您可以首先使用以下方法将消息分成三部分(时间戳、日志级别和剩余的日志数据):

    \[%{TIMESTAMP_ISO8601:timestamp}\]\s+%{WORD:loglevel}\s+-\s+%{GREEDYDATA:logData}
    

    然后您可以将 csv 过滤器应用于 logdata 字段,如下所示:

    csv {
      columns => ["serviceName","systemDate","serverIP","serverHost","sequenceName","message","messageCode","errorMessage","errorDetail","errorException"]
      separator => ","
    }
    

    这将在每个之后拆分您的 logData,因此您将获得一个名为 message 的新字段,其中包含文本“Message = Going to Validate Request” 您现在可以编辑各个字段,例如您可以使用以下 grok 过滤器提取实际消息:

    Message = %{GREEDYDATA:messageText}
    

    我发现使用 grok 调试器来计算单个 grok 模式非常有帮助: http://grokdebug.herokuapp.com/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-28
      相关资源
      最近更新 更多