2014-10-30 27 views
3

我試圖使用突變篩選器與拆分方法來提取由json篩選器檢索到的字段的一部分。但我沒有找到如何利用分裂的結果。 這裏是我的邏輯配置(只有簡單的JSON部分效果很好):Logstash - 使用突變與拆分

filter { 
     if [type] == "phperrors" { 
       json { 
         source => "message" 
         target => "phperror_log" 
         remove_field => "message" 
         add_tag => [ "php", "error" ] 
       } 
       mutate { 
         split => ["[phperror_log][server]", "."] 
         #if [phperror_log][server][1] { 
           add_field => [ "pop", "%{[phperror_log][server][1]}" ] 
         #} 
       } 
     } 
} 

正如我所說的JSON部分運作良好,並在phperror_log.server字段存在(和值是一樣的東西node01.ny或node01.par或node02)。

但我想要的是創建一個新的字段,如果拆分創建了2個字段的數組,我想我沒有用我的[phperror_log] [server] [1]做正確的事情。

您有任何線索,建議或最佳實踐來解決這種用例嗎?

在此先感謝

編輯:我用的conf應該與拆分工作編輯......但是,如果是不正常

根據從一些提示和建議有一個很好的conf

最後編輯阿蘭:

filter { 
     if [type] == "phperrors" { 
       json { 
         source => "message" 
         target => "phperror_log" 
         remove_field => "message" 
         add_tag => [ "php", "error" ] 
       } 
       if [phperror_log][server] =~ /\./ { 
         mutate { 
           split => ["[phperror_log][server]", "."] 
           add_field => [ "pop", "%{[phperror_log][server][1]}" ] 
           add_field => [ "errorhost", "%{[phperror_log][server][0]}" ] 
         } 
       } else { 
         mutate { 
           add_field => [ "pop", "not defined" ] 
           add_field => [ "errorhost", "%{[phperror_log][server]}" ] 
         } 
       } 
       mutate { 
         remove_field => [ "[phperror_log][server]" ] 
       } 
     } 
} 

回答

2

一旦你拆分「node01.ny」,你的字段將是[「node01」,「ny」]。你的例子並沒有真正展示你想與這些拆分值做什麼,但基本的人會看到,如果一個值包含數組中:

if "ny" IN [phperror.server] { 
} 

注意add_field只運行如果過濾器成功的。因此,在添加字段之前,您不需要檢查數組。

也就是說,如果字段中包含「。」,分割只會起作用。你可以有條件的:

if phperror.server =~ /\./ { 
    mutate { 
    add_field => [ "hey", "i saw a period" ] 
    } 
} 

你的例子可能表明你想刪除原始字段的一部分值。嘗試gsub:

gsub => [ "phperror.server", "\..*", "" ] 

這將刪除「。」後面的所有內容。

希望有所幫助。

+0

非常感謝,你的解釋非常清楚。我會盡快嘗試 – Labynocle 2014-10-31 08:33:39

+0

不錯,我會在第一篇文章發佈我的最後一個配置文件,它很好用,謝謝你Alain的提示 – Labynocle 2014-10-31 09:09:22