我正在尝试将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的前缀附加标签或字段?
答案 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”字段是您想要的。