从logstash中的路径中提取字段

时间:2014-05-09 09:56:09

标签: 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 { ... }块。

我有其他选择吗?

1 个答案:

答案 0 :(得分:3)

您应该可以执行path => "/data/logs/*/worker-*.log",然后添加一个grok过滤器来提取您需要的内容。

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

或非常接近的内容....可能希望用if [path] =~ /worker/包围它,具体取决于配置文件中的其他内容。