2014-05-09 101 views
1

我正在配置logstash以收集來自多個主機上多個工作人員的日誌。目前,我正在添加字段主持人:從logstash中的路徑提取字段

input { 
    file { 
      path => "/data/logs/box-1/worker-*.log" 
      add_field => { 
       "original_host" => "box-1" 
      } 
    } 
    file { 
      path => "/data/logs/box-2/worker-*.log" 
      add_field => { 
       "original_host" => "box-2" 
      } 
    } 

但是,我還想添加一個字段{'worker': 'A'}等。我有很多工人,所以我不想爲主人和工人的每個組合寫一個file { ... }塊。

我有其他的方法嗎?

回答

2

你應該可以做一個path => "/data/logs/*/worker-*.log"然後添加一個grok過濾器來提取你需要的東西。

filter { grok { match => [ "path", "/(?<original_host>[^/]+)/worker-(?<worker>.*).log" ] } }

或某事非常接近....可能要與if [path] =~ /worker/包圍它取決於還有什麼你在你的配置文件。

+0

巧妙!謝謝 :) –