日志报警脚本

脚本介绍:

   主要是监控服务器的日志,如果在一段时间内没有收到服务器的日志,说明服务器存在日志丢弃或者服务器死机,此时就会通过邮件发送信息给管理员

脚本运行的环境:

  1.   python 3以下
  2.   安装了mailx邮件报警
  3. Rsyslog+LogAnalyzer+MySQL

脚本的代码:

   

 1 #!/usr/bin/python
 2 #coding:utf8
 3 
 4 import os
 5 import time
 6 import  MySQLdb
 7 y=None
 8 print 'weclome to  ddoslog  system'
 9 def mysql():
10  conn=MySQLdb.connect (passwd='ybl8651073',host='127.0.0.1',user='root')
11  cur=conn.cursor()
12  conn.select_db('Syslog')
13  cur.execute('select  count(FromHost) from  SystemEvents')
14  rows=cur.fetchall()
15  for i in rows:
16    for n in i:
17     global h
18     
19     h=n
20      
21 def xuhan():
22    
23    while 1:
24       mysql()
25       print h, y         
26       if h>y:
27             
28           print  '当前的日志条数为:', h 
29           print  '上次的日志条数为:' ,y
30       else:
31          print '系统日志一直没有更新,上次日志的条数为' ,y
32          print '真在发送邮件给管理员用户'
33          os.system('echo 系统日志停止更新请及时检查 |mailx -s xxxx  1014425308@qq.com')
34       try:
35        global y
36       except  SyntaxWarning:
37         pass  
38       y=h       
39       time.sleep(2)  
40 
41 xuhan()

脚本的介绍:

  1.          主要的模块有os,为了执行mailx邮件报警  time 为了让脚本多久执行一次查询日志条数   MySQLdb主要的作用是为了连接数据库得到数据
  2.          首先定义一个函数mysql,主要的作用是获得数据库日志条数,前面主要是连接数据库, 得到一个  元组 rows=cur.fetchall(),循环这个元组,获取日志条数h
  3.          定义一个循环函数,比较当前的日志条数,和上次的日志条数,如果现在的日志条数大于上次的日志条数,说明日志一直在更新,如果是其他则说明日志没有一直在更新。就会发送报警给管理员
  4.  time.sleep() 函数主要定义多久查询一次

脚本运行的结果如下

posted @ 2016-08-15 15:26  下丶雨天  阅读(272)  评论(0编辑  收藏  举报