From 60b75521cde021fddb3f7f6e17b6954527816fe8 Mon Sep 17 00:00:00 2001 From: thl-cmk <thl-cmk@outlook.com> Date: Thu, 25 Feb 2021 22:30:20 +0100 Subject: [PATCH] update project --- agent_based/checkpoint_asg_chassis.py | 215 ++++++++++++++++++++++++++ checkpoint_asg_chassis.mkp | Bin 2017 -> 2443 bytes checks/checkpoint_asg_chassis | 150 ------------------ packages/checkpoint_asg_chassis | 15 +- 4 files changed, 223 insertions(+), 157 deletions(-) create mode 100644 agent_based/checkpoint_asg_chassis.py delete mode 100644 checks/checkpoint_asg_chassis diff --git a/agent_based/checkpoint_asg_chassis.py b/agent_based/checkpoint_asg_chassis.py new file mode 100644 index 0000000..b5f79f8 --- /dev/null +++ b/agent_based/checkpoint_asg_chassis.py @@ -0,0 +1,215 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# License: GNU General Public License v2 +# +# Author: thl-cmk[at]outlook[dot]com +# URL : https://thl-cmk.hopto.org +# Date : 2020-11-08 +# +# Monitor Check Point Maestro SMO Chassis status (asg monitor) +# +# 2021-02-25: rewrite for CMK 2.x +# +# sample snmpwalk +# .1.3.6.1.4.1.2620.1.48.28.1.0 = STRING: "Multi" +# .1.3.6.1.4.1.2620.1.48.28.2.0 = STRING: "Primary Up" +# .1.3.6.1.4.1.2620.1.48.28.3.1.0 = STRING: "Enabled" +# .1.3.6.1.4.1.2620.1.48.28.3.2.0 = STRING: "Enabled" +# .1.3.6.1.4.1.2620.1.48.28.4.1.1.1.0 = Gauge32: 1 +# .1.3.6.1.4.1.2620.1.48.28.4.1.1.2.0 = Gauge32: 2 +# .1.3.6.1.4.1.2620.1.48.28.4.1.2.1.0 = Gauge32: 1 +# .1.3.6.1.4.1.2620.1.48.28.4.1.2.2.0 = Gauge32: 2 +# .1.3.6.1.4.1.2620.1.48.28.4.1.3.1.0 = STRING: "ACTIVE" +# .1.3.6.1.4.1.2620.1.48.28.4.1.3.2.0 = STRING: "STANDBY" +# .1.3.6.1.4.1.2620.1.48.28.4.1.4.1.0 = STRING: "34" +# .1.3.6.1.4.1.2620.1.48.28.4.1.4.2.0 = STRING: "28" +# .1.3.6.1.4.1.2620.1.48.28.4.1.5.1.0 = STRING: "34" +# .1.3.6.1.4.1.2620.1.48.28.4.1.5.2.0 = STRING: "28" +# .1.3.6.1.4.1.2620.1.48.28.4.1.6.1.0 = STRING: "N/A" +# .1.3.6.1.4.1.2620.1.48.28.4.1.6.2.0 = STRING: "N/A" +# .1.3.6.1.4.1.2620.1.48.28.5.1.1.1.0 = Gauge32: 1 +# .1.3.6.1.4.1.2620.1.48.28.5.1.1.2.0 = Gauge32: 2 +# .1.3.6.1.4.1.2620.1.48.28.5.1.1.3.0 = Gauge32: 3 +# .1.3.6.1.4.1.2620.1.48.28.5.1.2.1.0 = STRING: "1_01" +# .1.3.6.1.4.1.2620.1.48.28.5.1.2.2.0 = STRING: "1_02" +# .1.3.6.1.4.1.2620.1.48.28.5.1.2.3.0 = STRING: "2_01" +# .1.3.6.1.4.1.2620.1.48.28.5.1.3.1.0 = STRING: "ACTIVE" +# .1.3.6.1.4.1.2620.1.48.28.5.1.3.2.0 = STRING: "ACTIVE" +# .1.3.6.1.4.1.2620.1.48.28.5.1.3.3.0 = STRING: "ACTIVE" +# .1.3.6.1.4.1.2620.1.48.28.5.1.4.1.0 = STRING: "N/A" +# .1.3.6.1.4.1.2620.1.48.28.5.1.4.2.0 = STRING: "N/A" +# .1.3.6.1.4.1.2620.1.48.28.5.1.4.3.0 = STRING: "N/A" +# .1.3.6.1.4.1.2620.1.48.28.5.1.5.1.0 = STRING: "N/A" +# .1.3.6.1.4.1.2620.1.48.28.5.1.5.2.0 = STRING: "N/A" +# .1.3.6.1.4.1.2620.1.48.28.5.1.5.3.0 = STRING: "N/A" +# +# sample info +# [ +# [ +# [u'Multi', u'Primary Up', u'Enabled', u'Enabled'] +# ], +# [ +# [u'1', u'ACTIVE', u'34', u'34', u'N/A'], +# [u'2', u'STANDBY', u'28', u'28', u'N/A'] +# ], +# [ +# [u'1_01', u'ACTIVE'], +# [u'1_02', u'ACTIVE'], +# [u'2_01', u'ACTIVE'] +# ] +# ] +# +from pprint import pprint + +from typing import Mapping, Dict, List, Tuple, NamedTuple + +from .agent_based_api.v1.type_defs import ( + DiscoveryResult, + CheckResult, + StringTable, +) + +from .agent_based_api.v1 import ( + register, + Service, + equals, + check_levels, + Result, + State, + SNMPTree, + startswith, + all_of, + any_of, +) + + +class CheckPointASGChassisInfo(NamedTuple): + mode: str + hamode: str + synctoactive: str + synctostandby: str + +class CheckPointASGChassisParams(NamedTuple): + id: str + status: str + grade: str + maxgrade: str + uniqueip: str + +class CheckPointASGChassisSgms(NamedTuple): + id: str + status: str + + +class CheckPointASGChassis(NamedTuple): + info: CheckPointASGChassisInfo + chassis: List + sgms: List + + +def parse_checkpoint_asg_chassis(string_table: List[StringTable]): #-> CheckPointASGChassis: + chassis = CheckPointASGChassis + try: + chassis.info = CheckPointASGChassisInfo(*string_table[0][0]) + except TypeError: + return None + chassis.chassis = string_table[1] + chassis.sgms = string_table[2] + + parsed = chassis + return parsed + + +def discovery_checkpoint_asg_chassis(section: CheckPointASGChassis) -> DiscoveryResult: + yield Service(parameters={'inv_chassis_parms': section.chassis}) + + +def check_checkpoint_asg_chassis(params, section: CheckPointASGChassis) -> CheckResult: + + details = '' + details += '\n\nTo verify this output use the "asg monitor" CLI command on the Check Point SMO,\n' + details += '\nChassis Mode: %s' % section.info.mode + details += '\nH/A Mode: %s' % section.info.hamode + details += '\nSync to active: %s' % section.info.synctoactive + details += '\nSync to standby: %s' % section.info.synctostandby + + inv_chassis_parms = params['inv_chassis_parms'] + + for chassis in section.chassis: + chassis = CheckPointASGChassisParams(*chassis) + + if chassis.uniqueip != 'N/A': + details += '\nChassis %s unique IP: %s' % (chassis.id, chassis.uniqueip) + + for inv_chassis in inv_chassis_parms: + inv_chassis = CheckPointASGChassisParams(*inv_chassis) + if chassis.id == inv_chassis.id: + yield_text = 'Chassis %s: %s, grade: %s/%s' % (chassis.id, chassis.status,chassis.grade,chassis.maxgrade) + if not chassis.status.lower() in ['active', 'standby']: + yield Result(state=State.CRIT, summary=yield_text) + elif (chassis.status != inv_chassis.status) or (chassis.grade != inv_chassis.grade) or (chassis.maxgrade != inv_chassis.maxgrade): + yield Result(State.WARNING, notice=yield_text + ' (expected: %s, grade: %s/%s)' % (inv_chassis.status, inv_chassis.grade, inv_chassis.maxgrade)) + else: + yield Result(state=State.OK, summary=yield_text) + + active_sgms = 0 + for asgSgm in section.sgms: + asgSgm = CheckPointASGChassisSgms(*asgSgm) + if asgSgm.status.lower() == 'active': + active_sgms += 1 + else: + yield Result(state=State.CRIT, notice='SGM %s state: %s' % (asgSgm.id, asgSgm.status)) + + yield Result(state=State.OK, + summary='%d/%d SGMs active' % (active_sgms, len(section.sgms)), + details=details) + +register.snmp_section( + name='checkpoint_asg_chassis', + parse_function=parse_checkpoint_asg_chassis, + fetch=[ + SNMPTree( + base='.1.3.6.1.4.1.2620.1.48.28', # CHECKPOINT-MIB::asgChassisInfo + oids=[ + '1', # asgChassisMode + '2', # asgChassisHAMode + '3.1', # asgSyncToActive + '3.2', # asgSyncToStandby + ] + ), + SNMPTree( + base='.1.3.6.1.4.1.2620.1.48.28.4.1', # CHECKPOINT-MIB::asgChassisParamsEntry + oids=[ + '2', # asgChassisParamsID + '3', # asgChassisParamsStatus + '4', # asgChassisParamsGrade + '5', # asgChassisParamsMaxGrade + '6', # asgChassisParamsUniqueIP + ] + ), + SNMPTree( + base='.1.3.6.1.4.1.2620.1.48.28.5.1', # CHECKPOINT-MIB::asgSGMEntry + oids=[ + '2', # asgSGMID + '3', # asgSGMStatus + ] + ), + ], + detect=any_of( + startswith('.1.3.6.1.2.1.1.2.0', '.1.3.6.1.4.1.2620'), + all_of( + equals('.1.3.6.1.2.1.1.2.0', '.1.3.6.1.4.1.8072.3.2.10'), + equals('.1.3.6.1.4.1.2620.1.6.1.0', 'SVN Foundation'), + ) + ) +) + +register.check_plugin( + name='checkpoint_asg_chassis', + service_name='ASG Chassis', + discovery_function=discovery_checkpoint_asg_chassis, + check_function=check_checkpoint_asg_chassis, + check_default_parameters={}, + check_ruleset_name='checkpoint_asg_chassis', +) diff --git a/checkpoint_asg_chassis.mkp b/checkpoint_asg_chassis.mkp index 14565ef2dc0ed28272a091ec4348e12e15683031..66011fb9cde3dd8299317411a28dd3a8248346c7 100644 GIT binary patch delta 2442 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 IrvOj@0DGglD*ylh delta 2013 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 diff --git a/checks/checkpoint_asg_chassis b/checks/checkpoint_asg_chassis deleted file mode 100644 index dc3aad8..0000000 --- a/checks/checkpoint_asg_chassis +++ /dev/null @@ -1,150 +0,0 @@ -#!/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-08 -# -# Monitor Check Point Maestro SMO Chassis status (asg monitor) -# -# sample snmpwalk -# .1.3.6.1.4.1.2620.1.48.28.1.0 = STRING: "Multi" -# .1.3.6.1.4.1.2620.1.48.28.2.0 = STRING: "Primary Up" -# .1.3.6.1.4.1.2620.1.48.28.3.1.0 = STRING: "Enabled" -# .1.3.6.1.4.1.2620.1.48.28.3.2.0 = STRING: "Enabled" -# .1.3.6.1.4.1.2620.1.48.28.4.1.1.1.0 = Gauge32: 1 -# .1.3.6.1.4.1.2620.1.48.28.4.1.1.2.0 = Gauge32: 2 -# .1.3.6.1.4.1.2620.1.48.28.4.1.2.1.0 = Gauge32: 1 -# .1.3.6.1.4.1.2620.1.48.28.4.1.2.2.0 = Gauge32: 2 -# .1.3.6.1.4.1.2620.1.48.28.4.1.3.1.0 = STRING: "ACTIVE" -# .1.3.6.1.4.1.2620.1.48.28.4.1.3.2.0 = STRING: "STANDBY" -# .1.3.6.1.4.1.2620.1.48.28.4.1.4.1.0 = STRING: "34" -# .1.3.6.1.4.1.2620.1.48.28.4.1.4.2.0 = STRING: "28" -# .1.3.6.1.4.1.2620.1.48.28.4.1.5.1.0 = STRING: "34" -# .1.3.6.1.4.1.2620.1.48.28.4.1.5.2.0 = STRING: "28" -# .1.3.6.1.4.1.2620.1.48.28.4.1.6.1.0 = STRING: "N/A" -# .1.3.6.1.4.1.2620.1.48.28.4.1.6.2.0 = STRING: "N/A" -# .1.3.6.1.4.1.2620.1.48.28.5.1.1.1.0 = Gauge32: 1 -# .1.3.6.1.4.1.2620.1.48.28.5.1.1.2.0 = Gauge32: 2 -# .1.3.6.1.4.1.2620.1.48.28.5.1.1.3.0 = Gauge32: 3 -# .1.3.6.1.4.1.2620.1.48.28.5.1.2.1.0 = STRING: "1_01" -# .1.3.6.1.4.1.2620.1.48.28.5.1.2.2.0 = STRING: "1_02" -# .1.3.6.1.4.1.2620.1.48.28.5.1.2.3.0 = STRING: "2_01" -# .1.3.6.1.4.1.2620.1.48.28.5.1.3.1.0 = STRING: "ACTIVE" -# .1.3.6.1.4.1.2620.1.48.28.5.1.3.2.0 = STRING: "ACTIVE" -# .1.3.6.1.4.1.2620.1.48.28.5.1.3.3.0 = STRING: "ACTIVE" -# .1.3.6.1.4.1.2620.1.48.28.5.1.4.1.0 = STRING: "N/A" -# .1.3.6.1.4.1.2620.1.48.28.5.1.4.2.0 = STRING: "N/A" -# .1.3.6.1.4.1.2620.1.48.28.5.1.4.3.0 = STRING: "N/A" -# .1.3.6.1.4.1.2620.1.48.28.5.1.5.1.0 = STRING: "N/A" -# .1.3.6.1.4.1.2620.1.48.28.5.1.5.2.0 = STRING: "N/A" -# .1.3.6.1.4.1.2620.1.48.28.5.1.5.3.0 = STRING: "N/A" -# -# sample info -# [ -# [ -# [u'Multi', u'Primary Up', u'Enabled', u'Enabled'] -# ], -# [ -# [u'1', u'ACTIVE', u'34', u'34', u'N/A'], -# [u'2', u'STANDBY', u'28', u'28', u'N/A'] -# ], -# [ -# [u'1_01', u'ACTIVE'], -# [u'1_02', u'ACTIVE'], -# [u'2_01', u'ACTIVE'] -# ] -# ] -# - -def inventory_checkpoint_asg_chassis(info): - - chassis_info, chassis_params, asgsgms = info - try: - asgChassisMode, asgChassisHAMode, asgSyncToActive, asgSyncToStandby = chassis_info[0] - yield None, {'inv_state': info} - except IndexError: - pass - - -def check_checkpoint_asg_chassis(_no_item, params, info): - chassis_info, chassis_params, asgsgms = info - - asgChassisMode, asgChassisHAMode, asgSyncToActive, asgSyncToStandby = chassis_info[0] - - if params: - inv_chassis_info, inv_chassis_params, inv_asgsgms = params.get('inv_state') - - infotext = '' - longoutput = '' - state = 0 - - longoutput += '\n\nTo verify this output use the "asg monitor" CLI command on the Check Point SMO,\n' - longoutput += '\nChassis Mode: %s' % asgChassisMode - longoutput += '\nH/A Mode: %s' % asgChassisHAMode - longoutput += '\nSync to active: %s' % asgSyncToActive - longoutput += '\nSync to standby: %s' % asgSyncToStandby - - for chassis in chassis_params: - asgChassisParamsID, asgChassisParamsStatus, asgChassisParamsGrade, asgChassisParamsMaxGrade, asgChassisParamsUniqueIP = chassis - - if asgChassisParamsUniqueIP != 'N/A': - longoutput += '\nChassis %s unique IP: %s' % (asgChassisParamsID, asgChassisParamsUniqueIP) - - for inv_chassis in inv_chassis_params: - inv_asgChassisParamsID, inv_asgChassisParamsStatus, inv_asgChassisParamsGrade, inv_asgChassisParamsMaxGrade, inv_asgChassisParamsUniqueIP = inv_chassis - if asgChassisParamsID == inv_asgChassisParamsID: - yield_text = 'Chassis %s: %s, grade: %s/%s' % (asgChassisParamsID, asgChassisParamsStatus, asgChassisParamsGrade, asgChassisParamsMaxGrade) - if not asgChassisParamsStatus.lower() in ['active', 'standby']: - yield 2, yield_text - elif (asgChassisParamsStatus != inv_asgChassisParamsStatus) or (asgChassisParamsGrade != inv_asgChassisParamsGrade) or (asgChassisParamsMaxGrade != inv_asgChassisParamsMaxGrade): - yield 1, yield_text + ' (expected: %s, grade: %s/%s)' % (inv_asgChassisParamsStatus, asgChassisParamsGrade, asgChassisParamsMaxGrade) - else: - yield 0, yield_text - - active_sgms = 0 - for asgSgm in asgsgms: - asgSGMID, asgSGMStatus = asgSgm - if asgSGMStatus == 'ACTIVE': - active_sgms += 1 - else: - yield 2, 'SGM %s state: %s' % (asgSGMID, asgSGMStatus) - - yield 0, '%d/%d SGMs active' % (active_sgms, len(asgsgms)) - - yield state, infotext + longoutput + '\n' - - -check_info['checkpoint_asg_chassis'] = { - 'check_function': check_checkpoint_asg_chassis, - 'inventory_function': inventory_checkpoint_asg_chassis, - 'service_description': "ASG Chassis", - 'snmp_scan_function': scan_checkpoint, - 'group': 'checkpoint_asg_chassis', - 'snmp_info': [( - '.1.3.6.1.4.1.2620.1.48.28', # CHECKPOINT-MIB::asgChassisInfo - [ - '1', # asgChassisMode - '2', # asgChassisHAMode - '3.1', # asgSyncToActive - '3.2', # asgSyncToStandby - ]), - ('.1.3.6.1.4.1.2620.1.48.28.4.1', # CHECKPOINT-MIB::asgChassisParamsEntry - [ - '2', # asgChassisParamsID - '3', # asgChassisParamsStatus - '4', # asgChassisParamsGrade - '5', # asgChassisParamsMaxGrade - '6', # asgChassisParamsUniqueIP - ]), - ('.1.3.6.1.4.1.2620.1.48.28.5.1', # CHECKPOINT-MIB::asgSGMEntry - [ - '2', # asgSGMID - '3', # asgSGMStatus - ] - ) - ], - 'includes': ['checkpoint.include'], -} \ No newline at end of file diff --git a/packages/checkpoint_asg_chassis b/packages/checkpoint_asg_chassis index 06d8f23..789bde6 100644 --- a/packages/checkpoint_asg_chassis +++ b/packages/checkpoint_asg_chassis @@ -1,11 +1,12 @@ -{'author': u'Th.L. (thl-cmk[at]outlook[dot]com)', - 'description': u'Monitor Check Point Maestro SMO Chassis status (asg monitor)', +{'author': 'Th.L. (thl-cmk[at]outlook[dot]com)', + 'description': 'Monitor Check Point Maestro SMO Chassis status (asg ' + 'monitor)\n', 'download_url': 'http://thl-cmk.hopto.org/', - 'files': {'checks': ['checkpoint_asg_chassis']}, + 'files': {'agent_based': ['checkpoint_asg_chassis.py']}, 'name': 'checkpoint_asg_chassis', 'num_files': 1, - 'title': u'Check Point Maestro SMO ASG Chassis', - 'version': '20201107.v0.1', - 'version.min_required': '1.4.0p38', - 'version.packaged': '1.6.0p15', + 'title': 'Check Point Maestro SMO ASG Chassis', + 'version': '20210225.v0.2', + 'version.min_required': '2.0.0i1', + 'version.packaged': '2020.11.27', 'version.usable_until': None} \ No newline at end of file -- GitLab