一個用python寫的自動監控alert日誌告警資訊的小程式

lsq_008發表於2015-03-17
最近在學習python,隨手寫了一個實時監控alert日誌的小程式:
import time
ol = []
nl = []
lweek = ['Mon','Tue','Wed','Thu','Fri','Sat','Sun']
fname = '/home/db/oracle/admin/sms/bdump/alert_sms1.log'
while True:
        ol = nl[:]
        nl = []
        v = ''
        k = ''
        l = []
        f = open(fname)
        for line in f:
                tl = line.split()
#判斷是否是時間戳,如果是,將前一個時間戳和當前時間戳之間的有警告資訊的內容放到nl中
                if ( tl[0] in lweek and int(tl[2]) in range(1,32) and tl[4] == 'CST'):
#根據告警關鍵詞過濾,可以自己根據需要新增
                        if "ORA-" in v or "Errors" in v or "Deadlock" in v:
                                s = k + "|" + v
                                nl.append(s)
                        v = ''
                        k = line
#如果不是時間戳,將內容疊加到變數v中
                else:
                        v = v + '|' + line
        f.close()
        if "ORA-" in v or "Errors" in v or "Deadlock" in v:
                s = k + "|" + v
                nl.append(s)
#取前後兩次告警資訊的差集並輸出
        l = list(set(nl).difference(set(ol)))
        if l is not None:
                for x in l:
                       print x
        time.sleep(10)


測試:
oracle@bjmbsdb01[/home/db/oracle/admin/sms/bdump]python mon_alert.py
Tue Mar 17 14:15:28 CST 2015
||ORA-1119 signalled during: alter tablespace users add datafile 'a'...

Tue Mar 17 14:16:21 CST 2015
||ORA-1119 signalled during: alter tablespace users add datafile 'a'...

Tue Mar 17 14:15:53 CST 2015
||Global Enqueue Services Deadlock detected. More info in file
| /home/db/oracle/admin/sms/bdump/sms1_lmd0_6620.trc.

Tue Mar 17 14:20:00 CST 2015
||alter tablespace users add datafile 'a'
|ORA-1119 signalled during: alter tablespace users add datafile 'a'...




來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10972173/viewspace-1463041/,如需轉載,請註明出處,否則將追究法律責任。

相關文章