目标:分析存储在文件中的大量电子邮件。 我使用 offlineimap 工具将电子邮件下载到本地文件。
我熟悉ELK但不确定如何正确配置Logstash以存储每个文件一个事件。
我还没有尝试过多行插件,因为我没有完整的开始/结束文件规则。我只是想解析所有文件并为每个文件存储一个事件,无论它是如何开始/结束的。
注意:无法使用Logstash imap 插件,因为它只提取和存储新电子邮件,但不会从服务器加载所有邮件。
针对不同用例的类似问题:Logstash Multiline filter 遗憾的是,几年来没有任何答案。
答案 0 :(得分:0)
在Logstash Multiline filter的评论中提出了解决方案并且它有效。基本上我必须在所有文件的末尾添加一些字符串,然后使用多行插件。
创建shell脚本以使用额外的行更新所有文件:
for file in **/**/*; do
echo 'ENDOFMAILFILE' >> "$file"
done
之后我在logstash中使用了多行插件
input {
file {
type => "logmail"
path => [ "/var/log/mail/**/*" ]
start_position => "beginning"
codec => multiline {
pattern => "^ENDOFMAILFILE$"
negate => "true"
what => "previous"
}
}
}