根据文件名的md5为logstash事件添加标签

时间:2013-12-11 06:49:34

标签: amazon-s3 logstash

我正在尝试将logstash事件与AWS S3上的最终文件位置相关联。我们直接将logstash代理索引文件,当文件写完后,我们将其发送给S3。

为了提高S3性能,我们通过存储文件来扇出文件:

hex(md5(filename.log))[0..2]/filename.log

这将获取md5 hexdigest的前3个字符,并将该文件存储在具有该前缀的文件夹中,从文件中提供相当可靠的扇形。不幸的是,我无法弄清楚如何用这些信息标记每个日志事件。

ruby filter type允许你执行ruby代码,但我认为它不允许你使用计算结果。

filter {
  ruby {
    code => "require 'digest/md5'; Digest::MD5.hexdigest("mylong.file.name")[0..2]"
    # now what?
  }
}

有没有办法根据md5的前缀附加标签或字段?

2 个答案:

答案 0 :(得分:3)

您的代码将有variable event which is the event itself

要添加值为“bar”的字段“foo”,您可以编写如下内容:

event["foo"] = "bar"

例如,查看file input does it的方式。

如果您发现代码有点笨拙,在配置文件中,您可以write your own input or filter plugin

答案 1 :(得分:3)

试试这个:

filter {
    ruby {
       code => "require 'digest/md5';    
       event['md5'] = Digest::MD5.hexdigest("mylong.file.name")[0..2]"
  }
}

“md5”字段是您想要的。