【问题标题】:Logstash custom matchingLogstash 自定义匹配
【发布时间】:2016-09-19 12:00:10
【问题描述】:
  AppliedProperty_PurchaseStatus = (string) <SOLD>
  AppliedProperty_UrlText = (string) <http://www.dummyurl.com>
  MA_Number= (decimal) [123456789]

我试图弄清楚如何在为应用程序导入日志时与 grok 进行一些匹配。但坦率地说,我很迷茫,我将如何在上面进行匹配,以便我可以搜索“MA_Number”并得到“123456789”作为弹性结果

【问题讨论】:

  • 使用 MA_Number\s*=\s*\(decimal\)\s*\[%{NUMBER:num}] 之类的东西(pandaadb's solution 似乎可行,只需命名变量)。

标签: regex logstash logstash-grok logstash-configuration


【解决方案1】:

该数字的正则表达式,假设每一行都被一个接一个地处理,使用 grok,将是:

MA_Number= \(decimal\) \[%{NUMBER}\]

NUMBER 是 grok 定义的模式,还有许多可以帮助您的模式:

https://github.com/elastic/logstash/blob/v1.4.2/patterns/grok-patterns

关于您在上面提供的消息(根本不符合您的 grok (??))

这是您可以快速测试/部署它的方法:

我的测试配置:

input {
stdin{}
}


filter {

    grok {
       match => ["message", "MA_Number= \(decimal\) \[%{NUMBER:num}\]" ]
    }

}


output {
  stdout { codec => rubydebug }
}

测试:

artur@pandaadb:~/dev/logstash$ ./logstash-2.3.2/bin/logstash -f conf3/
Settings: Default pipeline workers: 8
Pipeline main started
MA_Number= (decimal) [123456789]
{
       "message" => "MA_Number= (decimal) [123456789]",
      "@version" => "1",
    "@timestamp" => "2016-09-19T13:30:56.837Z",
          "host" => "pandaadb",
           "num" => "123456789"
}

查看消息的编号是如何被提取到变量 num 中的。

【讨论】:

  • 嗯,是的,我认为修改配置会更容易。但是,如果您查看我在帖子中的编辑,我必须忍住我的骄傲并再次寻求帮助。您将如何实现该行?尝试了一些方法,但无法正常工作。
  • 您的配置中的 grok 与您提供的示例日志语句完全不匹配
  • 不,我意识到,我什至无法弄清楚如何添加您的示例。
  • @Jakodns 我根据您提供的与数字匹配的 grok 消息创建了一个最小配置
【解决方案2】:

你可以使用\[([0-9]+)\],它会匹配:

  • [字面意思
  • 1 个或多个数字
  • ] 和一个右括号

https://regex101.com/r/sP3gA7/2

示范

var re = /\[([0-9]+)\]/; 
var str = '  AppliedProperty_PurchaseStatus = (string) <SOLD>\n  AppliedProperty_UrlText = (string) <http://www.dummyurl.com>\n  MA_Number= (decimal) [123456789]';
var m;
 
if ((m = re.exec(str)) !== null) {
    if (m.index === re.lastIndex) {
        re.lastIndex++;
    }
    console.log(m[1]);
}

https://regexper.com/#%5C%5B(%5B0-9%5D%2B)%5C%5D

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多