From 28b52e156099b4bc0844554bc9a6175e51c903fc Mon Sep 17 00:00:00 2001 From: "th.l" <thl-cmk@outlook.com> Date: Sat, 11 Sep 2021 21:18:05 +0200 Subject: [PATCH] update project --- agent_based/checkpoint_asg_chassis.py | 114 +++++++++++++-------- checkpoint_asg_chassis.mkp | Bin 2967 -> 3698 bytes packages/checkpoint_asg_chassis | 7 +- web/plugins/wato/checkpoint_asg_chassis.py | 81 +++++++++++++++ 4 files changed, 155 insertions(+), 47 deletions(-) create mode 100644 web/plugins/wato/checkpoint_asg_chassis.py diff --git a/agent_based/checkpoint_asg_chassis.py b/agent_based/checkpoint_asg_chassis.py index 3295b0f..919ac7d 100644 --- a/agent_based/checkpoint_asg_chassis.py +++ b/agent_based/checkpoint_asg_chassis.py @@ -12,8 +12,7 @@ # 2021-02-25: rewrite for CMK 2.x # added warning/critical is chassis grade not equeal maxGrade # 2021-09-10: rewrite parse function -# -# ToDo: add warning if SGM/Chassis is missing compared to inventory time +# 2021-09-11: added WATO, cleanup # # sample snmpwalk # .1.3.6.1.4.1.2620.1.48.28.1.0 = STRING: "Multi" @@ -48,25 +47,24 @@ # .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 +# sample string_table # [ # [ -# [u'Multi', u'Primary Up', u'Enabled', u'Enabled'] +# ['Multi', 'Primary Up', 'Enabled', 'Enabled'] # ], # [ -# [u'1', u'ACTIVE', u'34', u'34', u'N/A'], -# [u'2', u'STANDBY', u'28', u'28', u'N/A'] +# ['1', 'ACTIVE', '34', '34', 'N/A'], +# ['2', 'STANDBY', '28', '28', 'N/A'] # ], # [ -# [u'1_01', u'ACTIVE'], -# [u'1_02', u'ACTIVE'], -# [u'2_01', u'ACTIVE'] +# ['1_01', 'ACTIVE'], +# ['1_02', 'ACTIVE'], +# ['2_01', 'ACTIVE'] # ] # ] # -from pprint import pprint -from typing import Mapping, Dict, List, Tuple, NamedTuple, Optional +from typing import List, NamedTuple, Optional from cmk.base.plugins.agent_based.agent_based_api.v1.type_defs import ( DiscoveryResult, @@ -117,55 +115,74 @@ def parse_checkpoint_asg_chassis(string_table: List[StringTable]) -> Optional[Ch try: return CheckPointASGChassis( info=CheckPointASGChassisInfo(*string_table[0][0]), - chassis=string_table[1], - sgms=string_table[2] + chassis=[CheckPointASGChassisParams(*chassis) for chassis in string_table[1]], + sgms=[CheckPointASGChassisSgms(*sgm) for sgm in string_table[2]] ) except (TypeError, IndexError): pass def discovery_checkpoint_asg_chassis(section: CheckPointASGChassis) -> DiscoveryResult: - yield Service(parameters={'inv_chassis_parms': section.chassis}) + yield Service(parameters={ + 'discovery_chassis': len(section.chassis), + 'discovery_sgms': len(section.sgms), + }) def check_checkpoint_asg_chassis(params, section: CheckPointASGChassis) -> CheckResult: - details = '' - details += '\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 + notice = '' + notice += '\nTo verify this output use the "asg monitor" CLI command on the Check Point SMO,\n' + notice += f'\nChassis Mode: {section.info.mode}' + notice += f'\nH/A Mode: {section.info.hamode}' + notice += f'\nSync to active: {section.info.synctoactive}' + notice += f'\nSync to standby: {section.info.synctostandby}' - inv_chassis_parms = params['inv_chassis_parms'] + yield Result(state=State.OK, notice=notice) 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'] or chassis.grade != chassis.maxgrade: - 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=State.WARN, 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) + yield Result(state=State.OK, notice=f'\nChassis {chassis.id} unique IP: {chassis.uniqueip}') + + if not chassis.status.lower() in ['active', 'standby']: + yield Result( + state=State(params['state_chassis_not_active_standby']), + summary=f'Chassis {chassis.id}: {chassis.status}' + ) + elif chassis.id == params['desired_chassis_active'] and chassis.status.lower() != 'active': + yield Result( + state=State(params['state_chassis_not_desired_active']), + notice=f'Chassis {chassis.id}: {chassis.status} should be active' + ) + else: + yield Result(state=State.OK, summary=f'Chassis {chassis.id}: {chassis.status}') + + summary = f'grade: {chassis.grade}/{chassis.maxgrade}' + details = f'Chassis {chassis.id} grade: {chassis.grade}/{chassis.maxgrade}' + if chassis.grade != chassis.maxgrade: + yield Result(state=State(params['state_chassis_not_max_grade']), summary=summary, details=details) + else: + yield Result(state=State.OK, summary=summary, details=details) + + if len(section.chassis) != params['discovery_chassis']: + yield Result( + state=State(params['state_chassis_number_changed']), + notice=f'Number of chassis changed ({len(section.chassis)}/{params["discovery_chassis"]}' + ) active_sgms = 0 - for asgSgm in section.sgms: - asgSgm = CheckPointASGChassisSgms(*asgSgm) - if asgSgm.status.lower() == 'active': + for sgm in section.sgms: + if sgm.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(params['state_sgm_not_active']), notice=f'SGM {sgm.id} state: {sgm.status}') - yield Result(state=State.OK, - summary='%d/%d SGMs active' % (active_sgms, len(section.sgms)), - details=details) + yield Result(state=State.OK, summary=f'{active_sgms}/{len(section.sgms)} SGMs active') + + if len(section.sgms) != params['discovery_sgms']: + yield Result( + state=State(params['state_sgms_number_changed']), + notice=f'Number of SGMs changed ({len(section.sgms)}/{params["state_sgms_number_changed"]}' + ) register.snmp_section( @@ -213,5 +230,14 @@ register.check_plugin( service_name='ASG Chassis', discovery_function=discovery_checkpoint_asg_chassis, check_function=check_checkpoint_asg_chassis, - check_default_parameters={}, -) \ No newline at end of file + check_default_parameters={ + 'state_chassis_number_changed': 2, + 'desired_chassis_active': '1', + 'state_chassis_not_desired_active': 1, + 'state_chassis_not_active_standby': 2, + 'state_chassis_not_max_grade': 2, + 'state_sgm_not_active': 2, + 'state_sgms_number_changed': 2, + }, + check_ruleset_name='checkpoint_asg_chassis', +) diff --git a/checkpoint_asg_chassis.mkp b/checkpoint_asg_chassis.mkp index a2106c38776678c9d46049dedfdde96fa06e9c70..8f4289ccd901f69457f4758bf2883f3e4e4028b0 100644 GIT binary patch literal 3698 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∋a3i~%97*)IU{ox zsx`&`!!bUA4|>U+9VO|5!kHiCh&16&W$G3b23M<bqjRv3#qBhC{3&uJdS_s2eZLT2 z`4hi<dpmI*ZhDzesxVM5MitAv4SHhhr%@`vMo(SgY}W?KR_ZvKsXft?4q%OnU?wqF zrnz0=8KO$lPq`*?C<B+?lx*p2a-3n}ZJd5?Pzd?VUXNWbh&Y@7cDFwuBgd`xWt`?f z?IAe`s_QKIl5!3eK&(q%Hk||JS6wlO>L+sQkGV%rSlqH~LIw<>2hX6krdAEt$vtgT zd$X<v!iiX}{n6%1`sC7~rO=Z}zz-{;OZfSsKz6ntknyXzH}8&JDp_#(P{93>50G#- z<-D=%Mh4?X{)~s}Y^ELa)O5BO3!fb@{9vp3j~<`6Q}jr4BI2T_tGu{WK5FAO^HGy_ zuIQ&_dk(qLVZfkF8kcG0-Qo9`w;B<(wNme<>`gz&y_Px2DGPTyk4cQRo_&X$X_Itz zl6+a+8Q0pxFnpx>x<qE|L)E$%tNA_E4M=n~Wdr|s$N>15;;jP0M?uQ&q^m2ELGE4m z`wt9XFVxT|gT&{+_{7C*z2!dsQ{TE;uas{TJwUISfR`?Sr~pcPwVfC&NEkFhfF5Sa zFRNR<wDgHy0=ziXGST<z=*?m;^I<s^>YxtcCp%>m3uZH%u89IqI>zS$!Hh-+`>Q;- z+$FgG@3uh`_tu^ZSX4Ui!%Nu@=|tJ?>PYdvQ^N=umKat&N4?wGB`#zhV54cr_D_Lt laCni*YDbJaec3OrgC&!Q1$yBB1($g2zx0lZl%SY^;6Fq2GgSZp literal 2967 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 CVbt>g diff --git a/packages/checkpoint_asg_chassis b/packages/checkpoint_asg_chassis index 1fde3a6..0cff472 100644 --- a/packages/checkpoint_asg_chassis +++ b/packages/checkpoint_asg_chassis @@ -3,11 +3,12 @@ 'monitor)\n', 'download_url': 'http://thl-cmk.hopto.org/', 'files': {'agent_based': ['checkpoint_asg_chassis.py'], - 'checkman': ['checkpoint_asg_chassis']}, + 'checkman': ['checkpoint_asg_chassis'], + 'web': ['plugins/wato/checkpoint_asg_chassis.py']}, 'name': 'checkpoint_asg_chassis', - 'num_files': 2, + 'num_files': 3, 'title': 'Check Point Maestro SMO ASG Chassis', - 'version': '20210225.v0.2', + 'version': '20210911.v0.3', 'version.min_required': '2.0.0b8', 'version.packaged': '2021.07.14', 'version.usable_until': None} \ No newline at end of file diff --git a/web/plugins/wato/checkpoint_asg_chassis.py b/web/plugins/wato/checkpoint_asg_chassis.py new file mode 100644 index 0000000..70dea0e --- /dev/null +++ b/web/plugins/wato/checkpoint_asg_chassis.py @@ -0,0 +1,81 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# +from cmk.gui.i18n import _ +from cmk.gui.valuespec import ( + Dictionary, + TextAscii, + DropdownChoice, + MonitoringState, + Transform, +) + +from cmk.gui.plugins.wato import ( + CheckParameterRulespecWithItem, + rulespec_registry, + RulespecGroupCheckParametersNetworking, +) + + +def _parameter_valuespec_checkpoint_asg_chassis(): + return Transform( + Dictionary(elements=[ + ('desired_chassis_active', + DropdownChoice( + title=_('Desired active chassis'), + help=_('Select witch chassis should be active'), + sorted=True, + default_value='1', + choices=[ + ('1', _('Chassis ID 1')), + ('2', _('Chassis ID 2')), + ], + )), + ('state_chassis_not_desired_active', + MonitoringState( + default_value=1, + title=_('State if desired chassis not active'), + help=_('Monitoring state if the desired chassis not active'), + )), + ('state_chassis_number_changed', + MonitoringState( + default_value=2, + title=_('State if number of chassis has changed'), + help=_('Monitoring state if number of chassis differs from discovery time'), + )), + ('state_chassis_not_active_standby', + MonitoringState( + default_value=2, + title=_('State if chassis not active/standby'), + help=_('Monitoring state if the chassis not active or standby'), + )), + ('state_chassis_not_max_grade', + MonitoringState( + default_value=2, + title=_('State if chassis is not optimal'), + help=_('Monitoring state if the chassis grade is less than max grade'), + )), + ('state_sgm_not_active', + MonitoringState( + default_value=2, + title=_('State if SGM is not active'), + help=_('Monitoring state if the SGM state is not active'), + )), + ('state_sgms_number_changed', + MonitoringState( + default_value=2, + title=_('State if number of SGMs has canged'), + help=_('Monitoring state if number of SGMs differs from discovery time'), + )), + ])) + + +rulespec_registry.register( + CheckParameterRulespecWithItem( + check_group_name='checkpoint_asg_chassis', + group=RulespecGroupCheckParametersNetworking, + match_type='dict', + parameter_valuespec=_parameter_valuespec_checkpoint_asg_chassis, + title=lambda: _('Check Point ASG Monitor'), + )) -- GitLab