From b1103ce5b0c52af61d9debaad2df289aac45b835 Mon Sep 17 00:00:00 2001 From: "th.l" <thl-cmk@outlook.com> Date: Sat, 11 Sep 2021 23:21:49 +0200 Subject: [PATCH] update project --- agent_based/checkpoint_asg_diag.py | 186 +++++++++++++----------- checkpoint_asg_diag.mkp | Bin 3384 -> 3587 bytes packages/checkpoint_asg_diag | 8 +- web/plugins/wato/checkpoint_asg_diag.py | 38 +++-- 4 files changed, 130 insertions(+), 102 deletions(-) diff --git a/agent_based/checkpoint_asg_diag.py b/agent_based/checkpoint_asg_diag.py index 42fd392..328335e 100644 --- a/agent_based/checkpoint_asg_diag.py +++ b/agent_based/checkpoint_asg_diag.py @@ -34,45 +34,45 @@ # sample section # [ # [ -# [u'On 2020-10-23, At 01:00:02, Passed: 28/30 tests. Failed tests: 11,28'] +# ['On 2020-10-23, At 01:00:02, Passed: 28/30 tests. Failed tests: 11,28'] # ], # [ -# [u'1', u'System Health', u'2020-10-23 01:00:02', u'Passed', u''], -# [u'2', u'Resources', u'2020-10-23 01:00:02', u'Passed', u''], -# [u'3', u'Software Provision', u'2020-10-23 01:00:02', u'Passed', u''], -# [u'4', u'Media Details', u'2020-10-23 01:00:02', u'Passed', u''], -# [u'5', u'SSD Health', u'2020-10-23 01:00:02', u'Passed', u''], -# [u'6', u'Firmware Verifier', u'2020-10-23 01:00:02', u'Passed', u''], -# [u'7', u'Distribution Mode', u'2020-10-23 01:00:02', u'Passed', u''], -# [u'8', u'DXL Balance', u'2020-10-23 01:00:02', u'Passed', u''], -# [u'9', u'Policy', u'2020-10-23 01:00:02', u'Passed', u''], -# [u'10', u'AMW Policy', u'2020-10-23 01:00:02', u'Passed', u'Not configured'], -# [u'11', u'SWB Updates', u'2020-10-23 01:00:02', u'Failed (!)', u''], -# [u'12', u'Installation', u'2020-10-23 01:00:02', u'Passed', u''], -# [u'13', u'Security Group', u'2020-10-23 01:00:02', u'Passed', u''], -# [u'14', u'Cores Distribution', u'2020-10-23 01:00:02', u'Passed', u''], -# [u'15', u'Clock', u'2020-10-23 01:00:02', u'Passed', u''], -# [u'16', u'Licenses', u'2020-10-23 01:00:02', u'Passed', u''], -# [u'17', u'IPS Enhancement', u'2020-10-23 01:00:02', u'Passed', u''], -# [u'18', u'Configuration Files', u'2020-10-23 01:00:02', u'Passed', u''], -# [u'19', u'MAC Setting', u'2020-10-23 01:00:02', u'Passed', u''], -# [u'20', u'ARP Consistency', u'2020-10-23 01:00:02', u'Passed', u''], -# [u'21', u'Bond', u'2020-10-23 01:00:02', u'Passed', u''], -# [u'22', u'IPv4 Route', u'2020-10-23 01:00:02', u'Passed', u''], -# [u'23', u'IPv6 Route', u'2020-10-23 01:00:02', u'Passed', u'Not configured'], -# [u'24', u'Dynamic Routing', u'2020-10-23 01:00:02', u'Passed', u'Not configured'], -# [u'25', u'Local ARP', u'2020-10-23 01:00:02', u'Passed', u'Not configured'], -# [u'26', u'IGMP Consistency', u'2020-10-23 01:00:02', u'Passed', u'Not configured'], -# [u'27', u'PIM Neighbors', u'2020-10-23 01:00:02', u'Passed', u'Not configured'], -# [u'28', u'Core Dumps', u'2020-10-23 01:00:02', u'Failed (!)', u''], -# [u'29', u'Processes', u'2020-10-23 01:00:02', u'Passed', u''], -# [u'30', u'Performance hogs', u'2020-10-23 01:00:02', u'Passed', u''] +# ['1', 'System Health', '2020-10-23 01:00:02', 'Passed', ''], +# ['2', 'Resources', '2020-10-23 01:00:02', 'Passed', ''], +# ['3', 'Software Provision', '2020-10-23 01:00:02', 'Passed', ''], +# ['4', 'Media Details', '2020-10-23 01:00:02', 'Passed', ''], +# ['5', 'SSD Health', '2020-10-23 01:00:02', 'Passed', ''], +# ['6', 'Firmware Verifier', '2020-10-23 01:00:02', 'Passed', ''], +# ['7', 'Distribution Mode', '2020-10-23 01:00:02', 'Passed', ''], +# ['8', 'DXL Balance', '2020-10-23 01:00:02', 'Passed', ''], +# ['9', 'Policy', '2020-10-23 01:00:02', 'Passed', ''], +# ['10', 'AMW Policy', '2020-10-23 01:00:02', 'Passed', 'Not configured'], +# ['11', 'SWB Updates', '2020-10-23 01:00:02', 'Failed (!)', ''], +# ['12', 'Installation', '2020-10-23 01:00:02', 'Passed', ''], +# ['13', 'Security Group', '2020-10-23 01:00:02', 'Passed', ''], +# ['14', 'Cores Distribution', '2020-10-23 01:00:02', 'Passed', ''], +# ['15', 'Clock', '2020-10-23 01:00:02', 'Passed', ''], +# ['16', 'Licenses', '2020-10-23 01:00:02', 'Passed', ''], +# ['17', 'IPS Enhancement', '2020-10-23 01:00:02', 'Passed', ''], +# ['18', 'Configuration Files', '2020-10-23 01:00:02', 'Passed', ''], +# ['19', 'MAC Setting', '2020-10-23 01:00:02', 'Passed', ''], +# ['20', 'ARP Consistency', '2020-10-23 01:00:02', 'Passed', ''], +# ['21', 'Bond', '2020-10-23 01:00:02', 'Passed', ''], +# ['22', 'IPv4 Route', '2020-10-23 01:00:02', 'Passed', ''], +# ['23', 'IPv6 Route', '2020-10-23 01:00:02', 'Passed', 'Not configured'], +# ['24', 'Dynamic Routing', '2020-10-23 01:00:02', 'Passed', 'Not configured'], +# ['25', 'Local ARP', '2020-10-23 01:00:02', 'Passed', 'Not configured'], +# ['26', 'IGMP Consistency', '2020-10-23 01:00:02', 'Passed', 'Not configured'], +# ['27', 'PIM Neighbors', '2020-10-23 01:00:02', 'Passed', 'Not configured'], +# ['28', 'Core Dumps', '2020-10-23 01:00:02', 'Failed (!)', ''], +# ['29', 'Processes', '2020-10-23 01:00:02', 'Passed', ''], +# ['30', 'Performance hogs', '2020-10-23 01:00:02', 'Passed', ''] # ] # ] # - -from typing import Mapping, Dict, List, Tuple, NamedTuple +import time +from typing import List, NamedTuple from cmk.base.plugins.agent_based.agent_based_api.v1.type_defs import ( DiscoveryResult, @@ -90,92 +90,102 @@ from cmk.base.plugins.agent_based.agent_based_api.v1 import ( startswith, all_of, any_of, + check_levels, ) -class CheckPointASGDiagSummary(NamedTuple): +class CheckpointAsgDiagSummary(NamedTuple): date: str time: str + days_ago: int passed: int maxtest: int failed: list -class CheckPointASGDiag(NamedTuple): - summary: CheckPointASGDiagSummary - tests: List +class CheckpointAsgDiagTest(NamedTuple): + index: str + name: str + lastrun: str + result: str + comment: str -def parse_checkpoint_asg_diag(string_table: List[StringTable]) -> CheckPointASGDiag: - asgSummary, asgTests = string_table +class CheckpointAsgDiag(NamedTuple): + summary: CheckpointAsgDiagSummary + tests: List[CheckpointAsgDiagTest] - # ToDo: change date to real date string, and add warn/crit if last run to old +def parse_checkpoint_asg_diag(string_table: List[StringTable]) -> CheckpointAsgDiag: + asgSummary, asgTests = string_table + + # sample asgSummary [['On 2020-10-23, At 01:00:02, Passed: 28/30 tests. Failed tests: 11,28']] if len(asgSummary) != 0: asgSummary = asgSummary[0][0] - return CheckPointASGDiag( - summary=CheckPointASGDiagSummary( + passed, max = asgSummary[28:].split('.')[0].split(' ')[1].split('/') + return CheckpointAsgDiag( + summary=CheckpointAsgDiagSummary( date=asgSummary[3:13], time=asgSummary[18:26], - passed=int(asgSummary[28:].split(".")[0].split(' ')[1].split('/')[0]), - maxtest=int(asgSummary[28:].split(".")[0].split(' ')[1].split('/')[1]), + days_ago=int((time.time() - time.mktime(time.strptime(asgSummary[3:13], '%Y-%m-%d'))) / 86400), + passed=int(passed), + maxtest=int(max), failed=list(map(int, asgSummary.split(':')[-1].strip(' ').split(','))) ), - tests=asgTests + tests=[CheckpointAsgDiagTest(*test) for test in asgTests] ) -def discovery_checkpoint_asg_diag(section: CheckPointASGDiag) -> DiscoveryResult: +def discovery_checkpoint_asg_diag(section: CheckpointAsgDiag) -> DiscoveryResult: yield Service(parameters={}) -def check_checkpoint_asg_diag(params, section: CheckPointASGDiag) -> CheckResult: - class CheckPointASGDiagTest(NamedTuple): - index: str - name: str - lastrun: str - result: str - comment: str - - summary = '' - summary += 'Last run on: %s at: %s' % (section.summary.date, section.summary.time) - summary += ' Passed %d/%d tests' % (section.summary.passed, section.summary.maxtest) - if len(section.summary.failed) > 0: - summary += ' Failed: %s' % ','.join(map(str, section.summary.failed)) - - details = '\n\nTo verify this output use the "asg diag verify" command on the Check Point SMO cli,\n' - - for test in section.tests: - test = CheckPointASGDiagTest(*test) - if test.comment == '': - details += '\nIndex: %s, Name: %s, LastRun: %s, Restult: %s' % ( - test.index, test.name, test.lastrun, test.result) - else: - details += '\nIndex: %s, Name: %s, LastRun: %s, Restult: %s, Comment: %s' % ( - test.index, test.name, test.result, test.result, test.comment) - - state = State.OK - - asg_diag_ignore = [] - asg_diag_warning = [] - - if params: - asg_diag_ignore = params.get('asg_diag_ignore', []) - asg_diag_warning = params.get('asg_diag_warning', []) +def check_checkpoint_asg_diag(params, section: CheckpointAsgDiag) -> CheckResult: + state = 0 + asg_diag_ignore = params['asg_diag_ignore'] + asg_diag_warning = params['asg_diag_warning'] asg_diag_ignore.sort() + asg_diag_warning.sort() + + yield Result(state=State.OK, summary=f'Last run on: {section.summary.date} at: {section.summary.time}') + yield from check_levels( + value=section.summary.days_ago, + label='Days ago', + levels_upper=params['levels_upper_last_run'], + render_func=lambda v: str(v) + ) + summary = f'Tests Passed {section.summary.passed}/{section.summary.maxtest},' + if len(section.summary.failed) > 0: + summary += f' Failed: {",".join(map(str, section.summary.failed))}' if len(asg_diag_ignore) > 0: - summary += ', Ignored tests: %s' % ','.join(map(str, asg_diag_ignore)) + summary += f', Ignored: {",".join(map(str, asg_diag_ignore))}' for test in section.summary.failed: - if not test in asg_diag_ignore: + if test not in asg_diag_ignore: if test in asg_diag_warning: - if state == State.OK: - state = State.WARN + state = max(state, 1) else: - state = State.CRIT + state = 2 + + yield Result(state=State(state), summary=summary) - yield Result(state=state, summary=summary, details=details) + yield Result( + state=State.OK, + notice='\nTo verify this output use the "asg diag verify" command on the Check Point SMO CLI.\n' + ) + + for test in section.tests: + result = test.result + if result.lower().startswith('failed'): + if int(test.index) in asg_diag_ignore: + result = result.replace(' (!)', '') + elif int(test.index) not in asg_diag_warning: + result = result.replace(' (!)', ' (!!)') + notice = f'Index: {test.index}, Name: {test.name}, LastRun: {test.lastrun}, Restult: {result}' + if test.comment != '': + notice += f', Comment: {test.comment}' + yield Result(state=State.OK, notice=notice) register.snmp_section( @@ -213,6 +223,10 @@ register.check_plugin( service_name='ASG Diag', discovery_function=discovery_checkpoint_asg_diag, check_function=check_checkpoint_asg_diag, - check_default_parameters={}, + check_default_parameters={ + 'levels_upper_last_run': (3, 5), + 'asg_diag_ignore': [], + 'asg_diag_warning': [], + }, check_ruleset_name='checkpoint_asg_diag', ) diff --git a/checkpoint_asg_diag.mkp b/checkpoint_asg_diag.mkp index cbfad34e8bd7a552d20c4cf805a2a5440bef81e6..171cfa571e614c1ad2a223fd023adce8f2502954 100644 GIT binary patch literal 3587 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 HNJ8>Idvfv3 literal 3384 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 OKKu^|CTMp6cmM#+gO^YM diff --git a/packages/checkpoint_asg_diag b/packages/checkpoint_asg_diag index 6b01fc2..4077643 100644 --- a/packages/checkpoint_asg_diag +++ b/packages/checkpoint_asg_diag @@ -1,16 +1,14 @@ {'author': 'Th.L. (thl-cmk[at]outlook[dot]com)', 'description': 'Monitor Check Point Maestro SMO Test status (asg diag ' 'verify)\n' - '\n' - '- 2020-11-03: initial release for CMK 1.6.x\n' - '- 2021-03-01: rewrite for CMK 2.x\n', + '\n', 'download_url': 'http://thl-cmk.hopto.org/', 'files': {'agent_based': ['checkpoint_asg_diag.py'], 'web': ['plugins/wato/checkpoint_asg_diag.py']}, 'name': 'checkpoint_asg_diag', 'num_files': 2, 'title': 'Check Point Maestro SMO ASG Diag', - 'version': '20210301.v0.1', - 'version.min_required': '2.0.0b8', + 'version': '20210911.v0.2', + 'version.min_required': '2.0.0', 'version.packaged': '2021.07.14', 'version.usable_until': None} \ No newline at end of file diff --git a/web/plugins/wato/checkpoint_asg_diag.py b/web/plugins/wato/checkpoint_asg_diag.py index f2257df..70ec267 100644 --- a/web/plugins/wato/checkpoint_asg_diag.py +++ b/web/plugins/wato/checkpoint_asg_diag.py @@ -6,8 +6,8 @@ from cmk.gui.i18n import _ from cmk.gui.valuespec import ( Dictionary, Integer, - TextAscii, ListOfStrings, + Tuple, ) from cmk.gui.plugins.wato import ( @@ -19,24 +19,41 @@ from cmk.gui.plugins.wato import ( def _parameter_valuespec_checkpoint_asg_diag(): return Dictionary(elements=[ + ('levels_upper_last_run', + Tuple( + title=_('Maximum days no run "asg diag verify"'), + elements=[ + Integer( + title=_('Warning at'), + unit='days', + default_value=3, + minvalue=1, + ), + Integer( + title=_('Critical at'), + unit='days', + default_value=5, + minvalue=1, + ) + ], + )), ('asg_diag_ignore', ListOfStrings( - title=_('Index list of ASG Diag tests to ignore'), + title=_('Index list of ignored failde tests'), orientation='horizontal', allow_empty=False, valuespec=Integer(minvalue=1, maxvalue=99), - help=_('there will be no warning/critical if this tests are not "Passed"'), - ) - ), + help=_('This tests will be ignored if the are not "Passed". The monitoring state will stay OK'), + )), ('asg_diag_warning', ListOfStrings( - title=_('Set monitoring state to warining if ASG Diag state is "Failed" for the following tests'), + title=_('Indix list of WARNING only failed tests'), orientation='horizontal', allow_empty=False, valuespec=Integer(minvalue=1, maxvalue=99), - help=_('there will be only warning if this tests are not "Passed", else there will be a critical.'), - ) - ), + help=_('For this tests the monitoring state will be WARNING if the test result is not "Passed", ' + 'all other failed tests set the monitoring state to CRITICAL.'), + )), ]) @@ -44,8 +61,7 @@ rulespec_registry.register( CheckParameterRulespecWithItem( check_group_name='checkpoint_asg_diag', group=RulespecGroupCheckParametersNetworking, - item_spec=lambda: TextAscii(title=_('Check Point ASG Diag'), ), match_type='dict', parameter_valuespec=_parameter_valuespec_checkpoint_asg_diag, title=lambda: _('Check Point ASG Diag'), - )) \ No newline at end of file + )) -- GitLab