diff --git a/checkpoint_asg_vsls.mkp b/checkpoint_asg_vsls.mkp index 4c5c5eb34c8732913cb961b0d3f34a6fc45ce0e0..9231e6d99b42e1bed2f2a4e42e93ac32adfcff6d 100644 Binary files a/checkpoint_asg_vsls.mkp and b/checkpoint_asg_vsls.mkp differ diff --git a/checks/checkpoint_asg_vsls b/checks/checkpoint_asg_vsls new file mode 100644 index 0000000000000000000000000000000000000000..b0f8a70ed5395f577f21eb9a4166a4604c1bd299 --- /dev/null +++ b/checks/checkpoint_asg_vsls @@ -0,0 +1,126 @@ +#!/usr/bin/python +# -*- encoding: utf-8; py-indent-offset: 4 -*- +# +# License: GNU General Public License v2 +# +# Author: thl-cmk[at]outlook[dot]com +# URL : https://thl-cmk.hopto.org +# Date : 2020-11-07 +# +# Monitor Check Point Maestro SMO Vsls Chassis status +# +# sample snmpwalk +# .1.3.6.1.4.1.2620.1.48.30.20.1.0 = Gauge32: 50 +# .1.3.6.1.4.1.2620.1.48.30.20.2.0 = STRING: "1 2 " +# .1.3.6.1.4.1.2620.1.48.30.20.10.1.1.1.0 = Gauge32: 0 +# .1.3.6.1.4.1.2620.1.48.30.20.10.1.2.1.0 = STRING: "k01001s11-017500009" +# .1.3.6.1.4.1.2620.1.48.30.20.10.1.3.1.0 = Gauge32: 1 +# .1.3.6.1.4.1.2620.1.48.30.20.10.1.4.1.0 = Gauge32: 1 +# .1.3.6.1.4.1.2620.1.48.30.20.10.1.5.1.0 = STRING: "OK" +# .1.3.6.1.4.1.2620.1.48.30.20.10.1.6.1.0 = STRING: "Primary chassis health is good." +# .1.3.6.1.4.1.2620.1.48.30.20.10.1.7.1.0 = Gauge32: 0 +# .1.3.6.1.4.1.2620.1.48.30.20.10.1.8.1.0 = Gauge32: 0 +# .1.3.6.1.4.1.2620.1.48.30.20.10.1.9.1.0 = Gauge32: 2 +# .1.3.6.1.4.1.2620.1.48.30.20.10.1.10.1.0 = Gauge32: 2 +# .1.3.6.1.4.1.2620.1.48.30.20.10.1.21.1.0 = Gauge32: 0 +# .1.3.6.1.4.1.2620.1.48.30.20.10.1.22.1.0 = Gauge32: 0 +# .1.3.6.1.4.1.2620.1.48.30.20.10.1.23.1.0 = Gauge32: 1 +# .1.3.6.1.4.1.2620.1.48.30.20.10.1.24.1.0 = Gauge32: 1 +# +# sample info +# [[[u'50', u'1 2']], [[u'0', u'k01001s11-017500009', u'1', u'1', u'OK', u'Primary chassis health is good.', u'2', u'2', u'1', u'1', u'', u'']]] +# + +def inventory_checkpoint_asg_vsls(info): + chassis_info, chassis_state = info + try: + asgVslsSgmRatio, asgVslsSystemPrimaryChassis = chassis_info[0] + yield None, {'inv_state': chassis_state[0]} + except KeyError: + pass + + +def check_checkpoint_asg_vsls(_no_item, params, info): + chassis_info, chassis_state = info + + asgVslsSgmRatio, asgVslsSystemPrimaryChassis = chassis_info[0] + + asgVslsVsid, asgVslsVsName, asgVslsVsPrimaryChassis, asgVslsVsActiveChassis, asgVslsVsHealth, asgVslsVsReason, \ + asgVslsVsChassis1FwksUp, asgVslsVsChassis1FwksTotal, \ + asgVslsVsChassis2FwksUp, asgVslsVsChassis2FwksTotal, \ + asgVslsVsChassis3FwksUp, asgVslsVsChassis3FwksTotal = chassis_state[0] + + asgVslsSystemPrimaryChassis = asgVslsSystemPrimaryChassis.strip().split(' ') + + inv_asgVslsVsActiveChassis = asgVslsVsActiveChassis + + if params: + inv_state = params.get ('inv_state') + inv_asgVslsVsActiveChassis = inv_state[3] + + + infotext = '' + longoutput = '' + state = 0 + + # longoutput += '\n\nTo verify this output use the "asg monitor" command on the Check Point SMO cli,\n' + longoutput += '\nSystem name: %s' % asgVslsVsName + longoutput += '\nHealth status: %s' % asgVslsVsHealth + longoutput += '\nHealth reason: %s' % asgVslsVsReason + + chassis_state = [ + [int(asgVslsVsChassis1FwksUp), int(asgVslsVsChassis1FwksTotal)], + [int(asgVslsVsChassis2FwksUp), int(asgVslsVsChassis2FwksTotal)], + [int(asgVslsVsChassis2FwksUp), int(asgVslsVsChassis2FwksTotal)], + ] + + if asgVslsVsHealth != "OK": + yield 1, "Health: %s, Reason: %s" % (asgVslsVsHealth, asgVslsVsReason) + + yield_text = 'Primary/Active chassis: %s/%s' % (asgVslsVsPrimaryChassis, asgVslsVsActiveChassis) + if inv_asgVslsVsActiveChassis != asgVslsVsActiveChassis: + yield 1, yield_text + else: + yield 0, yield_text + + for chassis in asgVslsSystemPrimaryChassis: + asgVslsVsChassisFwksUp, asgVslsVsChassisFwksTotal = chassis_state[int(chassis) - 1] + yield_text = 'Chassis %s: %s/%s SGMs UP' % (chassis, asgVslsVsChassisFwksUp, asgVslsVsChassisFwksTotal ) + if asgVslsVsChassisFwksUp != asgVslsVsChassisFwksTotal: + yield 2, yield_text + else: + yield 0, yield_text + + yield state, infotext + longoutput + '\n' + + +check_info['checkpoint_asg_vsls'] = { + 'check_function': check_checkpoint_asg_vsls, + 'inventory_function': inventory_checkpoint_asg_vsls, + 'service_description': "ASG VSLS", + 'snmp_scan_function': scan_checkpoint, + 'group': 'checkpoint_asg_vsls', + 'snmp_info': [( + '.1.3.6.1.4.1.2620.1.48.30.20', # CHECKPOINT-MIB::asgVslsInfo + [ + 1, # asgVslsSgmRatio + 2, # asgVslsSystemPrimaryChassis + ]), + ('.1.3.6.1.4.1.2620.1.48.30.20.10.1', # CHECKPOINT-MIB::asgVslsStateEntry + [ + 1, # asgVslsVsid + 2, # asgVslsVsName + 3, # asgVslsVsPrimaryChassis + 4, # asgVslsVsActiveChassis + 5, # asgVslsVsHealth + 6, # asgVslsVsReason + 9, # asgVslsVsChassis1FwksUp + 10, # asgVslsVsChassis1FwksTotal + 23, # asgVslsVsChassis2FwksUp + 24, # asgVslsVsChassis2FwksTotal + 33, # asgVslsVsChassis3FwksUp + 34, # asgVslsVsChassis3FwksTotal + ]) + ], + 'includes': ['checkpoint.include'], +} \ No newline at end of file diff --git a/packages/checkpoint_asg_vsls b/packages/checkpoint_asg_vsls index bba4a0014409af9a9f4d2e60c506987b10481ca8..06a26a4fef531762c34330adae574385e8cdab35 100644 --- a/packages/checkpoint_asg_vsls +++ b/packages/checkpoint_asg_vsls @@ -1,7 +1,7 @@ {'author': u'Th.L. (thl-cmk[at]outlook[dot]com)', 'description': u'Monitor Check Point Maestro SMO VSLS Chassis status', 'download_url': 'http://thl-cmk.hopto.org/', - 'files': {'checks': ['checkpoint_asg_chassis']}, + 'files': {'checks': ['checkpoint_asg_vsls']}, 'name': 'checkpoint_asg_vsls', 'num_files': 1, 'title': u'Check Point Maestro SMO ASG VSLS Chassis',