2014-05-09 55 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

巧妙!谢谢 :) –