nagios監視が止まっていることを監視する
下記サイトでnagiosのstatus.datをパースするライブラリを作っている人が居たので、それを使って監視が止まっていることを監視するスクリプトを作ってみた
http://heartbeats.jp/hbblog/2013/05/nagios-parser-python.html
# -*- coding:utf-8 -*-
import sys
import smtplib
from parseFile import parseFile
from email.header import Header
from email.mime.text import MIMETextmail_subject = 'アラートが停止しています'
mail_from = 'from'
mail_to = 'to'
cset = 'utf-8'# parse status
nagios = {}
if parseFile( "/usr/local/nagios/var/status.dat", nagios) != 0:
print "status get error"
sys.exit(1)# check service
alert_host = []
for host in nagios["service"].items():
for service in host[1].items():
if service[1]["notifications_enabled"] == '0' or service[1]["active_checks_enabled"] == '0':
#alert_host = {host[0], service[0]}
alert_host.append( '%s: %s' % (host[0], service[0]) )# send alert mail if disable check or notice for service
if len(alert_host) != 0:
msg = MIMEText( '下記のサービス監視が停止しています\n%s' % "\n".join(alert_host), 'plain', cset )
msg['Subject'] = Header(mail_subject, cset)
msg['From'] = mail_from
msg['To'] = mail_to
s = smtplib.SMTP()
s.connect()
s.sendmail(mail_from, mail_to, msg.as_string())
s.close()sys.exit(0)