logstash監控海量日誌並報警

科技小能手發表於2017-11-12

logstash輕鬆過濾海量日誌,研究下logstash的其它外掛,可以輕鬆監控日誌並報警,爽歪歪了,直接附上指令碼

監控說明:

1
2
3
1、sonp.php son-server.php 這兩個URL小於100位元組,狀態碼非200,報警
2、所有狀態碼非200,報警
3、所有請求超過10S,報警

郵件本機配置postfix或者sendmail,


監控指令碼

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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 and [response] != "200"{
   #監控位元組數小於100和請求非200
exec {
    tags => [myurl]
   
     command => "echo `%{@timestamp}: %{message}` | mail -s `Log_error: bytes and response` urname@urdomain"       
        }
}
 
}
1
#logstash/bin/logstash agent -f log_monitor.conf &

後臺啟動指令碼,靜靜等待郵件報警吧~~

本文轉自 jackjiaxiong 51CTO部落格,原文連結:http://blog.51cto.com/xiangcun168/1652252


相關文章