logstash:电子邮件附件中的文件位置应该是什么?
谁能解释一下java日志异常应该如何通过logstash中的电子邮件作为附件发送?附件中要给出的文件位置是什么?请查找配置文件,其中有用于获取异常的筛选器。 输入{ 文件{ 类型=>“系统日志” 路径=>“” add_field=>[“文件”,“a.log”] }logstash:电子邮件附件中的文件位置应该是什么?,logstash,Logstash,谁能解释一下java日志异常应该如何通过logstash中的电子邮件作为附件发送?附件中要给出的文件位置是什么?请查找配置文件,其中有用于获取异常的筛选器。 输入{ 文件{ 类型=>“系统日志” 路径=>“” add_field=>[“文件”,“a.log”] } } filter { if ("INFO" in [message]){ mutate { add_field =>
}
filter {
if ("INFO" in [message]){
mutate {
add_field => [ "level", "INFO" ]
}
}
else if ("error" in [message]){
mutate {
add_field => [ "level", "ERROR" ]
}
}
else if ("Debug" in [message]){
mutate {
add_field => [ "level", "DEBUG" ]
}
}
multiline{
pattern => "^\s"
what => "previous"
add_tag => ["exception"]
}
if ("multiline" in [tags]) {
mutate {
add_field => [ "level", "exception" ]
}
}
}
output {
if [message] =~ /exception/ {
email {
type => "syslog"
body => "Triggered in: %{@message}"
attachments =>
from => "abc@xyz.com"
subject => "This is a LogStash alert"
to => "lmn@por.co.in"
}
}
}
我还没有尝试过,但似乎可以使用“file”输出创建文件,然后将其提供给“email”输出的“attachment”参数 我看不到清理已创建文件的方法,但一个简单的cron作业可以做到这一点(或者您可以修改电子邮件输出以删除附件) 编辑: 使用文件{}输出时,指定要使用的文件名:
output {
file {
path => "foo.txt"
}
}
然后将此文件名指定为电子邮件输出中的附件:
output {
email {
attachments => [ "foo.txt" ]
}
}
您也可以在文件名中使用变量:“foo-%{+YYYY-MM-dd}.txt”等
请注意,电子邮件节是伪代码,因为文档中没有附件语法的示例。恐怕这是不可能的,至少在不使用ruby筛选器将异常数据刷新到临时文件并将其传递到电子邮件输出的情况下是不可能的。这似乎不值得付出努力。我们是否可以使用上述筛选器进行弹性搜索将数据保存到一个文件中,并为电子邮件输出提供此文件位置?理论上可能,我肯定,但比仅修改电子邮件输出以满足您的需要要困难得多。我可以将输出获取到一个文件,并将此文件附加到电子邮件。但您知道如何查找磁盘上的最新文件并附加该文件吗?嗨,阿兰,我可以n创建日期文件,但问题是附件字段不使用正则表达式,因此我无法指定正则表达式来选择最新的附件文件,它应该是文件的完整名称。您是否有任何关于如何将最后一个日期文件作为附件的输入?是的,在启用变量的情况下可能会出错.您非常接近-对outputs/email.rb进行必要的更改如何?我查看了文件email.rb。但不幸的是,我无法了解如何进行更改以获取附件。您对此有何看法?