我将logstash配置为发送电子邮件警报,以防日志消息中存在某些单词组合。我收到警报但没有收到警报中的消息字段值,我得到“@message”字样。 我该如何解决这个问题?
这是我的logstash配置文件:
root@srv-syslog:~# cat /etc/logstash/conf.d/central.conf
input {
syslog {
type => "syslog"
port => 5144
}
tcp {
type => "cisco_asa"
port => 5145
}
tcp {
type => "cisco_ios"
port => 5146
}
}
output {
elasticsearch {
bind_host => "127.0.0.1"
port => "9200"
protocol => http
}
if "executed the" in [message] {
email {
from => "logstash_alert@company.local"
subject => "logstash alert"
to => "myemail@company.local"
via => "smtp"
body => "Here is the event line that occured: %{@message}"
}
}
}
答案 0 :(得分:3)
在这种情况下,字段名称为message
,而不是@message
。
参见演示:
input {
generator {
count => 1
lines => ["Example line."]
}
}
filter {
mutate {
add_field => {
"m1" => "%{message}"
"m2" => "%{@message}"
}
}
}
output {
stdout {
codec => rubydebug{}
}
}
在您的情况下,您只需要修复一行:
body => "Here is the event line that occured: %{message}"
答案 1 :(得分:0)
删除@符号。该字段是消息,而不是@message。