#!/usr/bin/python
import socket
import sys
import argparse
parser = argparse.ArgumentParser(description='check service status for a hostgroup')
parser.add_argument('-H', '--hostgroup', help='Host group to check')
parser.add_argument('-S', '--service', required=True, help='Service to check')
parser.add_argument('-W', '--warn', required=True, help='Number of WARN services to alert on')
parser.add_argument('-C', '--critical', required=True, help='Number of CRIT services to alert on')
parser.add_argument('--socket', default='/var/spool/nagios/rw/live', help='livestatus socket location, defaults to /var/spool/nagios/rw/live')
args = parser.parse_args()
if '%' in args.warn or '%' in args.critical:
percent = True
else:
percent = False
socket_path = args.socket
s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
s.connect(socket_path)
filter = ''
if args.hostgroup is not None:
filter += 'Filter: host_groups >= %s\n' % (args.hostgroup)
filter += 'Filter: description = %s\n' % (args.service)
if percent:
query = '''GET services
Stats: last_hard_state = 0
Stats: last_hard_state = 1
Stats: last_hard_state = 2
Stats: last_hard_state = 3
Stats: state >= 0
%s
'''% (filter)
else:
query = '''GET services
Stats: last_hard_state = 0
Stats: last_hard_state = 1
Stats: last_hard_state = 2
Stats: last_hard_state = 3
%s
'''% (filter)
s.send(query)
s.shutdown(socket.SHUT_WR)
answer = s.recv(100000000).strip().split(';')
print "%s OK %s WARN %s CRIT %s on %s" % (answer[0], answer[1], answer[2], args.service, args.hostgroup)
if percent:
if int(answer[2]) >= int(float(args.critical.strip('%'))/100*int(answer[4])):
sys.exit(2)
elif int(answer[1]) >= int(float(args.warn.strip('%'))/100*int(answer[4])):
sys.exit(1)
else:
sys.exit(0)
else:
if int(answer[2]) >= int(args.critical):
sys.exit(2)
elif int(answer[1]) >= int(args.warn):
sys.exit(1)
else:
sys.exit(0)
define service{
use pager-service
host_name bumble
service_description CDH Tasktrackers
check_command check_live!-H cdh-cluster -S "HTTP - Tasktracker" -W 7% -C 7%
}
define service{
use pager-service
host_name bumble
service_description CDH Datanodes
check_command check_live!-H cdh-cluster -S "HTTP - Datanode" -W 7% -C 7%
}
define service{
use pager-service
host_name bumble
service_description IAD TS Snapshot Age
check_command check_live!-H ts-ext -S "JMX - SnapshotFileLastModified" -W 50% -C 50%
}
Return to Nagios Plugin Development
Users browsing this forum: No registered users and 4 guests