簡體   English   中英

Logstash過濾器正則表達式進入字段

[英]Logstash filter Regex into Field

我在解析日志行時遇到一些問題。

我有大量的日志行,每個日志行都包含一個主機名,例如ABC123DF。我已經寫了一個正則表達式,我想將其應用於日志行,並將主機名放在“ victim”字段中,如下所示:

add_field => [ "victim", "/[a-z][a-z][a-z][0-9][0-9][0-9].."

我使用了Mutate過濾器,但結果是

受害者/ [az] [az] [az] [0-9] [0-9] [0-9]。

我想看看:

受害者ABC123DF

我該怎么做呢?

您甚至不需要復雜的正則表達式操作即可實現此目的。 您可以使用多個過濾器來提取字段。 在您的情況下, grok過濾器是一個不錯的選擇。

假設您的日志行如下所示:

20:20:20 ABC123DF 192.168.1.1

然后,像這樣的grok過濾器將正確解析主機名:

grok {
    match => { "message" => "%{TIME:timestamp} %{HOST:host} %{IP:srcip}" }
}

您還可以在grokdocs使用正則表達式 示例模式:

%{GREEDYDATA} (?<host>.*) %{GREEDYDATA}

但是,我建議避免在grok中使用正則表達式。 使用包含的模式是更好的方法。 使用grok調試器為您找到正確的模式。

我使用此網站http://grokconstructor.appspot.com/do/match#result來測試我的正則表達式。

在我的mongodb日志中,有以下文本:

2016-05-17T16:26:07.018-0300我查詢[conn50628097] getmore dataBaseName.collectionName查詢:{empresa:“ ********”} cursorid:443889850763 ntoreturn:0 keyUpdates:0 writeConflicts:0 numYields: 69 nreturned:8886 reslen:1184746鎖:{全局:{accountCount:{r:140}},數據庫:{accountCount:{r:70},acquireWaitCount:{r:66},timeAcquiringMicros:{r:98046}},集合:{AccountCount:{r:70}}} 178ms

為了獲取查詢和時間,請在配置文件中進行以下過濾:

    filter {
      if [source] == "/var/log/mongodb/mongod.log" {
        grok {
          match=> {
            "message" => [
              "(getmore|query)\s(?<mongo_database>[a-zA-Z_]+)\.(?<mongo_collection>[a-zA-Z_.]+)\s?query:\s(?<mongo_query>\{.*?\})\s(cursorid|planSummary).*?\s(?<mongo_totaltime>[0-9]+ms)"
            ]
          }
        }
      }
    }

采用:

    (?<you_new_field_name>you_regex)you_regex(?<you_new_field_name>you_regex)(?<you_new_field_name>you_regex)

之后,您可以進行以下操作:

    add_field => [ "tag_text_optional%{you_new_field_name}", "%{you_new_field_name}" ]

因此,在我的情況下,日志行是:

2015-10-20 14:45:42,156 [pool-3-thread-1]信息審核已從LLDS2Cassandra組[LOCAL]與NetworkCorruption終止abc123df

grok {
    match => { "message" => "%{TIME:timestamp} %{LOGLEVEL} %{VICTIM:victim} " }
}

在grok模式中,我輸入了以下行: VICTIM [az][az][az][0-9][0-9][0-9]

得到以下結果:

欄位:時間戳值:2015-10-20 14:45:42,156

欄位:VICTIM值:abc123df

FIELD:LOGLEVEL
VALUEE:INFO

暫無
暫無

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

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