-
Notifications
You must be signed in to change notification settings - Fork 2
/
check_ns_vserver.py
59 lines (50 loc) · 2.27 KB
/
check_ns_vserver.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#!/usr/bin/env python
import sys
import time
from nsnitro import *
import argparse
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Check Netscaler vserver status')
parser.add_argument('--host', metavar='HOSTNAME', required=True, help='Netscaler hostname')
parser.add_argument('--user', metavar='USERNAME', default='nagios', help='Netscaler username')
parser.add_argument('--password', metavar='PASSWORD', default='api_user', help='Netscaler password')
parser.add_argument('--ssl', action="store_true", help='turn ssl on')
parser.add_argument('--vservername', metavar='LBVSERVERNAME', required=True, help='name of vserver; Use ALL to get a list of all vservers')
parser.add_argument('--dargs', action='store_true', help='show args')
args = parser.parse_args()
if args.dargs:
print(args)
sys.exit(3)
nitro = NSNitro(args.host, args.user, args.password, args.ssl)
try:
nitro.login()
if args.vservername == "ALL":
vservers = NSLBVServer().get_all(nitro)
for vserver in sorted(vservers, key=lambda k: k.get_name()):
print vserver.get_name() + ": " + vserver.get_effectivestate() + "; Health: " + vserver.get_health() + "%"
nitro.logout()
sys.exit(3)
if args.vservername:
vserver = NSLBVServer()
vserver.set_name(args.vservername)
vserver = NSLBVServer().get(nitro, vserver)
if (vserver.get_effectivestate() != "UP") | (int(vserver.get_health()) == 0):
print "CRITICAL: " + vserver.get_name() + " state: " + vserver.get_effectivestate() + ", Health: " + vserver.get_health() + \
"% | health=" + vserver.get_health() + "%;;;;"
nitro.logout()
sys.exit(2)
elif int(vserver.get_health()) < 100:
print "WARNING: " + vserver.get_name() + " state: " + vserver.get_effectivestate() + ", Health: " + vserver.get_health() + \
"% | health=" + vserver.get_health() + "%;;;;"
nitro.logout()
sys.exit(1)
elif (vserver.get_effectivestate() == "UP") & (int(vserver.get_health()) == 100):
print "OK: " + vserver.get_name() + " state: " + vserver.get_effectivestate() + ", Health: " + vserver.get_health() + \
"% | health=" + vserver.get_health() + "%;;;;"
nitro.logout()
sys.exit(0)
print "Oops, something went wrong"
sys.exit(3)
except NSNitroError, e:
print "Error: %s" % e.message
sys.exit(3)