elasticsearch logstash中对多个已定义模式的Grok过滤,elasticsearch,logstash,logstash-grok,elasticsearch,Logstash,Logstash Grok" /> elasticsearch logstash中对多个已定义模式的Grok过滤,elasticsearch,logstash,logstash-grok,elasticsearch,Logstash,Logstash Grok" />

elasticsearch logstash中对多个已定义模式的Grok过滤

elasticsearch logstash中对多个已定义模式的Grok过滤,elasticsearch,logstash,logstash-grok,elasticsearch,Logstash,Logstash Grok,我正在尝试筛选与我的一些模式匹配的日志。e、 g: E/vincinity/dholland_view_sql_global/IN/Cluster_Node/SSL-CACHE/Dsal1 F/vincinity/dholland_view_sql_local/IN/Cluster_Node3/SSL-CACHE/Dsal4 R/vincity/dholland\u view\u sql\u bran/IN/Cluster\u Node/Sample/vr1.log 现在,我想从一堆日志中gr

我正在尝试筛选与我的一些模式匹配的日志。e、 g:

E/vincinity/dholland_view_sql_global/IN/Cluster_Node/SSL-CACHE/Dsal1
F/vincinity/dholland_view_sql_local/IN/Cluster_Node3/SSL-CACHE/Dsal4
R/vincity/dholland\u view\u sql\u bran/IN/Cluster\u Node/Sample/vr1.log

现在,我想从一堆日志中grep这3条路径:基本上,我想提取的模式是包含“vincinity”“sql”和“IN”的日志,因此对于regex,它将是简单的
*vincinity*sql*IN*
我试过这个grok过滤器:

grok {

    match => { "Vinc" => "%{URIPATHPARAM:*vincinity*sql*IN*}" }

  }
然后我在kibana得到了grokparsefailure——我是grok的新手,所以也许我没有正确地处理这个问题

grok模式的语法是%{syntax:SEMANTIC}

grok过滤器的工作方式是

grok {
  match => {
    "message" => "%{PATTERN:named_capture}"
  }
}
其中,
message
是要解析的字段,这是大多数输入将未解析的日志线放在其中的默认字段

URIPATHPARAM
模式是通过名为Onigurama的正则表达式语言实现的。它可能会匹配您的整个日志消息,但不会为您捕获其中的某些部分


有关构造grok模式的帮助,请查看,他们链接到两个有用的模式构造工具。

在grok块中使用的正确格式是:

(?<field_name>the pattern here)
将其保存在
/patterns
目录中,然后按以下方式使用:

grok {
     patterns_dir => "./patterns"
     match => ["message" , "%{MYPATH_MUST_BE_UPPERCAS:path}"]
}
就你而言:

(?<vincinity>(?>/\s*.*?vincinity.*?\s*)+)
(?<sql>(?>/\s*.*?sql.*?/\s*)+)
(?<in>(?>\s*.*?(IN).*?\s*)+)
(?(?>/\s*?vincinity.*?\s*)+)
(?(?>/\s*?sql.*/\s*)+)
(?(?>\s*?(英寸)。*?\s*)+)

这是有用的,但是我得到了_grokParseeException检查您的正则表达式在表达式中不应该有任何新行(\n或enter)现在这很奇怪正则表达式正在筛选,但不在。*Vincity.*sql.*in.*您的表达式已关闭<代码>(?*?vincinity.*?sql.*?IN.*)可能适合您。
*?
构造是
*
的非贪婪等价物,因此应该使其性能更好。更少的子字符串搜索。
(?<vincinity>(?>/\s*.*?vincinity.*?\s*)+)
(?<sql>(?>/\s*.*?sql.*?/\s*)+)
(?<in>(?>\s*.*?(IN).*?\s*)+)