簡體   English   中英

Logstash中的Grok過濾以定義多個模式

[英]Grok filtering in logstash for multiple defined patterns

我正在嘗試過濾與我所擁有的幾種模式匹配的日志。 例如:

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 / vincinity / dholland_view_sql_bran / IN / Cluster_Node /樣品/ vr1.log

現在,我想從一堆日志中復制這3條路徑:基本上,我要提取的模式是包含“ vincinity”,“ sql”和“ IN”的日志,因此使用正則表達式將僅僅是*vincinity*sql*IN*嘗試了這個grok過濾器:

grok {

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

  }

然后我在kibana中得到_grokparsefailure-我是grok的新手,所以也許我沒有正確地解決這個問題。

grok過濾器文檔中

grok模式的語法為%{SYNTAX:SEMANTIC}

grok過濾器的工作方式是

grok {
  match => {
    "message" => "%{PATTERN:named_capture}"
  }
}

其中message是要解析的字段,這是大多數輸入將未解析的日志行放入其中的默認字段。

URIPATHPARAM模式是通過稱為Onigurama的正則表達式語言在logstash中預定義URIPATHPARAM模式。 它可能與您的整個日志消息匹配,但不會為您捕獲其中的某些塊。

為了幫助構建grok模式,請查看docs ,它們鏈接到幾個有用的模式構建工具。

在grok塊中使用自定義模式的正確格式為:

(?<field_name>the pattern here)

或者您可以在單獨的文件(my-pattern.txt)中定義自己的自定義模式(使用正則表達式),如下所示:

MYPATH_MUST_BE_UPPERCASE Regex_Pattern

將其保存在./patterns目錄中,然后以這種方式使用:

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

在您的情況下:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM