def parsertime(s):
month, day, t = s.split()
hour, minute, second = [int(i) for i in t.split(':')]
return datetime.datetime(2014,MONTH_MAPPING[month],int(day),hour,minute,second)
def count(metric, counter):
if metric in counter:
counter[metric] += 1
else:
counter[metric] = 1
def getMessages():
starttime = datetime.datetime.now() - DELTA
logfile = '/var/log/messages'
with open(logfile) as fd:
for line in fd:
logmatch = REG_SYSLOG.match(line)
if logmatch:
logdict = logmatch.groupdict()
logtime = parsertime(logdict['logtime'])
if logtime >= starttime:
count(logdict['progname'], PROG_COUNTER)
for k in KEYWORD:
if k in logdict['msg'].lower():
count(k, KEYWORD_COUNTER)
def check_counter():
msgs = []
status = 0
if PROG_COUNTER:
for c in PROG_COUNTER:
if PROG_COUNTER[c] > 2:
msgs.append("prog %s has reached %s " % ( c, PROG_COUNTER[c]))
status = 2
elif PROG_COUNTER[c] <= 2:
msgs.append("prog %s has reached %s " % ( c, PROG_COUNTER[c]))
status = 1
if KEYWORD_COUNTER:
status = 2
msgs.append("keywords have reached %s" % ','.join(['%s:%s'%(k,KEYWORD_COUNTER[k]) for k in KEYWORD_COUNTER]))
print_msgs(status, msgs)
if __name__ == '__main__':
getMessages()
check_counter()