• 日志报警脚本


    脚本介绍:

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

    脚本运行的环境:

    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() 函数主要定义多久查询一次

    脚本运行的结果如下

  • 相关阅读:
    java集合
    struts2的OGNL表达式
    struts2 result type
    struts2在Action中访问WEB资源
    03异或^
    02自加自减运算机制
    原码,补码,反码
    Java基础50题test10—自由落体
    Java基础50题test9—求完数
    Java基础50题test8—输入数字求和
  • 原文地址:https://www.cnblogs.com/yubenliu/p/5773101.html
Copyright © 2020-2023  润新知