logstash轻松过滤海量日志,研究下logstash的其它插件,可以轻松监控日志并报警,爽歪歪了,直接附上脚本
监控说明:1、sonp.php son-server.php 这两个URL小于100字节,状态码非200,报警
2、所有状态码非200,报警
3、所有请求超过10S,报警
邮件本机配置postfix或者sendmail,
监控脚本input {
redis {
host => "127.0.0.1"
port => "6379"
data_type => "list"
key => "logstash"
type => "redis-input"
codec => "json"
}
#我这里直接是从redis取出日志,上篇有介绍,当然也可以直接从日志文件取
}
filter{
mutate {
convert => [ "[bytes_read]", "float" ]
#为了输出编码一致,我们这里将字节转成float
}
grok {
match => [ "message" ,"sonp\.php|son-server\.php" ]
#日志中匹配的内容,
add_tag => [myurl]
}
}
output {
if [response] != "200" or [request_time] >= 10 {
#监控状态码非200 或者 请求时间大于10s
exec {
command => "echo '%{@timestamp}: %{message}' | mail -s 'Log_error: request time or response' urname@urdomain"
}
}
if [bytes_read]
#监控字节数小于100和请求非200
exec {
tags => [myurl]
command => "echo '%{@timestamp}: %{message}' | mail -s 'Log_error: bytes and response' urname@urdomain"
}
}
}#logstash/bin/logstash agent -f log_monitor.conf &
后台启动脚本,静静等待邮件报警吧~~