在我們使用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 => "[email protected]"
subject => "Ignore (test run)"
body => "log-message: %{message}"
to => "[email protected]"
codec => "plain"
contenttype => "text/plain; charset=UTF-8"
address => "smtp-mail.outlook.com"
port => "587"
authentication => "plain"
via => "sendmail"
username => "[email protected]"
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字樣時發送的郵件。
參考:
【1】https://www.elastic.co/guide/en/logstash/current/plugins-outputs-email.html