公司近期对maidian服务进行了日志告警,接到这个需求直接头皮发麻,后来看资料发现logstash不光可以收集日志进elasticsearch,还可以做到告警,瞬间思路来了,在爽歪歪的同时又跨越几个坑
监控说明:
1,首先是key等于deleteMsg
2,并且elapsedTime要大于99%的平均值
邮件本机配置postfix或者sendmail,这里不做过多赘述
监控脚本
input {
redis {
host => "127.0.0.1"
port => port
password => "password"
data_type => "list"
key => "logstash:maidian_monit"
type => "redis-input"
}
}
filter {
json {
source => "message"
}
mutate {
convert => [ "[elapsedTime]", "float" ]
#为了输出编码一致,我们这里将字节转成float
}
}
output {
#key等于deleteMsg并且elapsedTime大于60000MS
if [key] == "deleteMsg" and [elapsedTime] > 60000 {
exec {
command => "/home/zqlx/ELK/logstash/etc/shell/deleteMsg_mail.sh '%{@timestamp}: %{message}'"
}
}
}
#这里有个小坑,发现使用echo ‘内容’ |mail -s ‘标题‘ $mail无法发送也不报错,很是奇怪,怀疑是不能传参数,后来写了发送脚本,发现传一个参数可以,超过就会失败,悲了个剧具体原因也没深究
#启动如果超出设置阈值即可触发告警,并且会发送问题日志
logstash/bin/logstash -f longstash.conf >/dev/null 2>&1 &