2016-12-05 30 views
0

我正在嘗試使用logstash爲項目解析appache accesslogs。Logstash在分割後以特定順序加入字段值。

要讓elasticsearch搜索效率,我想要反轉域名。 因此,例如:

www.example.com變爲com.example.www

我試圖分裂域名和反向使用logstash變異插件。當分析爲是我得到一個場

  • 域名: 「www.example.com」

使用設置下我得到如下結果:

設置:

mutate{ 
     split => {"domainname" => "."} 
     add_field => {"reversed_domainname" => ["%{[domainname][-1]}","%{[domainname][-2]}"]} 
     join => {"reversed_domainname" => "."} 
} 

結果:

domainname = [「www」,「example」,「com」]

reversed_domainname =「COM」,「例如」]

一切都會按計劃,直到聯接功能的結果我不明白com。示例

看到如果我取下逆轉加入(將域名拆分爲「。」並將它們與「。」結合。我得到相同的結果。

www.example.com成爲www.example.com

我如何加入以相反的順序,因爲它清楚應該工作領域。

回答

0

超級derpy,但使用中間變量解決了這個問題。不知道這是更新還是錯誤。我使用下面的插件來解決我的問題。

mutate { 
     split => {"domainname" => "."} 
    } 
    ruby { 
     code => " 
       x = event['domainname'] 
       event['reversed_domainname'] = x.reverse.join('.') 
       " 
    } 

    mutate{ 
     join => {"domainname" => "."} 
    } 
0

對於logstash預5.x的,嘗試:

mutate{ 
    split => {"domainname" => "."} 
} 

ruby { 
    code => "event['domainname'] = event['domainname'].reverse" 
} 

紅寶石過濾器,可以執行紅寶石代碼,用內置的功能扭轉陣列。

+0

但是這應該工作,我得到了以下錯誤:出現 紅寶石例外:未定義的方法'反」對零:NilClass {:水平=>:錯誤} – JasperFennet

+0

@JasperFennet你確定了'domainname'領域存在?另外,如果您使用LS 5,請使用'event.get('domainname')' – baudsp

+0

我確定字段域名存在。爲了測試pupose,我嘗試了下面的代碼: x = event ['domainname']。reverse print x 這會打印按預期顛倒的數組。但只要我把它分配給一個字段,我得到了ruby異常(logstash 2.4.1) – JasperFennet