【问题标题】:Extract substring from a log message (GROK)从日志消息中提取子字符串 (GROK)
【发布时间】:2020-12-28 18:28:13
【问题描述】:

我是 ELK 的新手,我收到以下日志消息:

[2020-07-14 13:46:40.812],[DEBUG],[PerformanceLogger],[10.11.12.13],[http-nio-8086-exec-1],[3808B7],1,[2ddf8d01-4e5b-42cf-a6d9-ac2c0a24ccf5],[],[],[],[],[],REQUEST_END,125

我想提取数字125 - 这个数字只有如果在它之前有这个确切的字符串出现:

'REQUEST_END,'

(我要称这个字段为:duration)

这是我到目前为止所做的......但它不起作用:

filter {
  grok {
    match => { 
      "message" => "^\[%{TIMESTAMP_ISO8601:alis_timestamp}\],\[%{LOGLEVEL:alis_loglevel}\s*\],\[%{DATA:alis_class}?\],\[%{IPV4:alis_clientIp}?\],\[%{DATA:alis_threadid}?\],\[%{DATA:alis_sessionid}?\],%{INT:alis_companyid}?,\[%{DATA:alis_requesttoken}?\],\[%{DATA:alis_activity}?\],\[%{DATA:alis_screen}?\],\[%{INT:alis_action}?\],\[%{INT:alis_region}?\],\[%{DATA:alis_nextscreen}?\],%{GREEDYDATA:logMessage}?" 
      "logMessage" =>["REQUEST_END, %{WORD:duration}"]
    }
  }
 

}

我怎样才能提取这个数字?

【问题讨论】:

    标签: elasticsearch logstash kibana logstash-grok


    【解决方案1】:

    您的代码看起来非常接近解决方案。 我想“logMessage”grok 行上只有一个错字。 替换这一行:

      "logMessage" =>["REQUEST_END, %{WORD:duration}"]
    

    通过这个:

      "logMessage" =>["REQUEST_END,%{INT:duration}"]
    

    WORD 模式不能捕捉整数“字符串”,使用 INT grok 模式你必须捕捉你的 duration 字段,然后是一个不存在的空间。

    您必须设置 2 个不同的 grok 过滤器才能解析 2 个步骤,以便您的过滤器部分在您的 logstash 配置文件中:

      filter{
        grok {
            match => { 
              "message" => "^\[%{TIMESTAMP_ISO8601:alis_timestamp}\],\[%{LOGLEVEL:alis_loglevel}\s*\],\[%{DATA:alis_class}?\],\[%{IPV4:alis_clientIp}?\],\[%{DATA:alis_threadid}?\],\[%{DATA:alis_sessionid}?\],%{INT:alis_companyid}?,\[%{DATA:alis_requesttoken}?\],\[%{DATA:alis_activity}?\],\[%{DATA:alis_screen}?\],\[%{INT:alis_action}?\],\[%{INT:alis_region}?\],\[%{DATA:alis_nextscreen}?\],%{GREEDYDATA:logMessage}?" 
              }
        }
        grok {
            match => {   
              "logMessage" =>["REQUEST_END,%{INT:duration}"]
            }
          }
      }
    

    【讨论】:

    • 感谢您的评论!我尝试了您的解决方案..但是根本没有创建字段持续时间...我有以下字段: alis_class alis_clientIp alis_loglevel alis_requesttoken alis_sessionid alis_threadid alis_timestamp logMessage 消息路径........有什么想法吗?谢谢
    • 是的对不起,我已经更新了我的答案,现在它必须工作,并且 logMessage 模式中有一个空格不在这里。
    猜你喜欢
    • 2021-08-01
    • 2018-08-31
    • 1970-01-01
    • 2015-04-29
    • 1970-01-01
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多