grok模式的正则表达式

时间:2018-02-11 20:02:18

标签: logstash logstash-grok

我在尝试从下线打印第二个字符串时遇到问题。

输入:

Severity: error

我期待的输出是错误。有人可以帮忙吗?我是regex的新手并尝试了很多选项,不知怎的,我在修完线上的所有其他东西并且卡在这里之后就到了这里。

3 个答案:

答案 0 :(得分:0)

希望这有帮助

的Regex => ^Severity: \K\w+

答案 1 :(得分:0)

Severity:\s(?<log_severity>[^\s|\r|\n|\r\n]*)

以上正则表达式符合我的要求。实际上,我希望在logstash.conf文件中实现它以将日志输入到Kibana。完整的模式如下,

input {
    file {
        path => ["your input log file path"]
        start_position => beginning
        ignore_older => 0
        sincedb_path => "NUL"
    }
}

filter{

grok {

match => ["message","Severity:\s(?<log_severity>[^\s|\r|\n|\r\n]*)"]
#You can add more as per your requirement. It display in Kibana as 
#Severity: Error
}
}


output {
   elasticsearch {
    hosts => "localhost:9200"
    }
}

答案 2 :(得分:0)

您的过滤器过于复杂。由于您需要匹配单个单词,因此可以使用WORD模式,如下所示,

filter {
  grok {
    match => { "message" => "Severity: %{WORD:Severity}" }
  }
}

将输出,

{
  "Severity": [
    [
      "error"
    ]
  ]
}

你可以在这里测试, https://grokdebug.herokuapp.com/