Logstash grok过滤器从路径中提取子字符串并添加到主机字段

时间:2015-04-23 08:51:14

标签: path logstash grok

我通过将路径定义为* .log等,

来读取文件中的数据

文件名称类似于app1a_test2_heep.log,cdc2a_test3_heep.log等

如何配置logstash,以便在下划线(app1a,cdc2a ..)之前的字符串部分应该被grepped并添加到主机字段并删除默认主机。

例如:

fileName:app1a_test2_heep.log

host => app1a

提前致谢, 拉维

2 个答案:

答案 0 :(得分:5)

Ruby过滤器可以做你想要的。

input {
       file {
               path => "/home/benlim/app1a_test2_heep.log"
       }
}

filter {
        ruby {
                code => "
                        filename = event['path'].split('/').last
                        event['host'] = filename.split('_').first
                "
        }
}

output {
        stdout { codec => rubydebug }
}

首先,从路径中获取文件名。然后,获取主机名。

答案 1 :(得分:-2)

您可以在mutate过滤器中使用gsub(替换)。它需要3个参数 - 字段,什么分和什么。你可以在这里使用regexp。

filter {
  mutate {
    gsub => [
      # replace all after slashes with nothing
      "host", "[_.*]", ""
    ]
  }
}