在我们使用 Logstash 时,有时需要在信息处理时,在收到输出时发送电子邮件, 或者检查到某个条件而发出一个邮件进行提示。详细的描述可以参阅Email output plugin。在目前的 Logstash 的安装中,已经包含这个插件,我们不需要做任何的安装。在今天的教程中,我们来运用一个例子来展示。
配置Logstash
在本例子中,我们来使用 hotmail 来展示。我们首先定义一个 Logstash 的配置文件如下:
logstash_email_output.conf
input {
stdin {}
}
filter {
if "critical" in [message] {
mutate { add_tag => "critical" }
}
else if "error" in [message] {
mutate { add_tag => "error" }
}
}
output {
if "critical" in [tags] or "error" in [tags] {
stdout { codec => "rubydebug" }
email {
from => "liu_xiao_guo@hotmail.com"
subject => "Ignore (test run)"
body => "log-message: %{message}"
to => "YourEmailAccount@yahoo.com"
codec => "plain"
contenttype => "text/plain; charset=UTF-8"
address => "smtp-mail.outlook.com"
port => "587"
authentication => "plain"
via => "sendmail"
username => "YourMailAccount@hotmail.com"
password => "YourPassword"
use_tls => true
debug => true
}
}
}
在上面我们使用 stdin 来进行输入。如果输入的信息含有 “critical” 和 “error” 中的一个,我们会在filter中加入 critical 或 error 标签(tags)。在输出的部分,我们检查 tags 中如果有 critical 或 error,那么我们向我们的邮件地址发送邮件。
我们启动 Logstash:
./bin/logstash -f ~/data/logstash_email_output.conf
等 Logstash 完全启动后,我们在 console 中输入我们的信息:
就像上面显示的那样,当我们输入 “this” 时,没有任何的输出,但是当我们输入 “this is an error” 时,我们可以看到一个输出,并可以同时看到一个添加的 error 到 tags 里去了。根据我们的设计,我们可以看出来,它应该同时发送一个邮件到我们指定的邮箱。
上面显示当信息里含有 critical 字样时发送的邮件。
上面显示当信息里含有 error 字样时发送的邮件。
参考: