From 80391d28fd69dfeef5738b1ef077ceea008c1bd9 Mon Sep 17 00:00:00 2001 From: "th.l" <thl-cmk@outlook.com> Date: Fri, 27 Aug 2021 00:09:51 +0200 Subject: [PATCH] update project --- agent_based/checkpoint_securexl.py | 141 +++++++++++++++++++++ checkpoint_securexl.mkp | Bin 2057 -> 2374 bytes packages/checkpoint_securexl | 17 ++- web/plugins/metrics/checkpoint_securexl.py | 49 +++---- 4 files changed, 176 insertions(+), 31 deletions(-) create mode 100644 agent_based/checkpoint_securexl.py diff --git a/agent_based/checkpoint_securexl.py b/agent_based/checkpoint_securexl.py new file mode 100644 index 0000000..fc69fa1 --- /dev/null +++ b/agent_based/checkpoint_securexl.py @@ -0,0 +1,141 @@ +#!/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 : 2018-03-14 +# +# Monitor status of Check Point SecureXL +# +# 2020-06-08: changed snmp-scan function +# renamed from checkpoint_securexl_status to checkpoint_securexl +# 2021-08-26: rewritten for CMK 2.0 +# +# snmpwalk sample +# +# CHECKPOINT-MIB::fwSXLStatus.0 = INTEGER: enabled(1) +# CHECKPOINT-MIB::fwSXLConnsExisting.0 = Wrong Type (should be INTEGER): Gauge32: 51 +# CHECKPOINT-MIB::fwSXLConnsAdded.0 = Wrong Type (should be INTEGER): Gauge32: 630 +# CHECKPOINT-MIB::fwSXLConnsDeleted.0 = Wrong Type (should be INTEGER): Gauge32: 578 +# +# .1.3.6.1.4.1.2620.1.36.1.1.0 = INTEGER: 1 +# .1.3.6.1.4.1.2620.1.36.1.2.0 = Gauge32: 40 +# .1.3.6.1.4.1.2620.1.36.1.3.0 = Gauge32: 645 +# .1.3.6.1.4.1.2620.1.36.1.4.0 = Gauge32: 604 +# +# sample info +# +# [[u'1', u'48', u'7932', u'7986']] +# +import time +from dataclasses import dataclass +from typing import Optional + +from cmk.base.plugins.agent_based.agent_based_api.v1 import ( + register, + Service, + check_levels, + SNMPTree, + all_of, + startswith, + any_of, + equals, + get_rate, + GetRateError, + get_value_store, + Result, + State, +) +from cmk.base.plugins.agent_based.agent_based_api.v1.type_defs import ( + DiscoveryResult, + CheckResult, + StringTable, +) + + +@dataclass +class CheckpointSecurexl: + fwSXLStatus: int + fwSXLConnsExisting: int + fwSXLConnsAdded: int + fwSXLConnsDeleted: int + + +def parse_checkpoint_securexl(string_table: StringTable) -> Optional[CheckpointSecurexl]: + try: + wSXLStatus, fwSXLConnsExisting, fwSXLConnsAdded, fwSXLConnsDeleted = string_table[0] + except (ValueError, IndexError): + return + + return CheckpointSecurexl( + fwSXLStatus=int(wSXLStatus), + fwSXLConnsExisting=int(fwSXLConnsExisting), + fwSXLConnsDeleted=int(fwSXLConnsDeleted), + fwSXLConnsAdded=int(fwSXLConnsAdded), + ) + + +def discovery_checkpoint_securexl(section: CheckpointSecurexl) -> DiscoveryResult: + yield Service() + + +def check_checkpoint_securexl(section: CheckpointSecurexl) -> CheckResult: + if section.fwSXLStatus == 1: + + now_time = time.time() + value_store = get_value_store() + + yield from check_levels( + value=section.fwSXLConnsExisting, + label='Connections active', + metric_name='checkpoint_securexl_active', + render_func=lambda v: f'{v:.0f}' + ) + + for label, metric, value in [ + ('added', 'added', section.fwSXLConnsAdded), + ('deleted', 'deleted', section.fwSXLConnsDeleted), + ]: + try: + value = get_rate(value_store, f'checkpoint_securexl_{metric}', now_time, value, raise_overflow=True) + except GetRateError: + value = 0 + yield from check_levels( + value=value, + label=label, + metric_name=f'checkpoint_securexl_{metric}', + render_func=lambda v: f'{v:0.2f}/s', + ) + else: + yield Result(state=State.WARN, notice='SXL not enabled') + + +register.snmp_section( + name='checkpoint_securexl', + parse_function=parse_checkpoint_securexl, + fetch=SNMPTree( + base='.1.3.6.1.4.1.2620.1.36.1', # + oids=[ + '1', # fwSXLStatus + '2', # fwSXLConnsExisting + '3', # fwSXLConnsAdded + '4', # fwSXLConnsDeleted + ] + ), + 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_securexl', + service_name='SecureXL', + discovery_function=discovery_checkpoint_securexl, + check_function=check_checkpoint_securexl, +) diff --git a/checkpoint_securexl.mkp b/checkpoint_securexl.mkp index 7e7251bf3e12ecfbb3731529633b84ac046d57f2..1753e24eb19995802998ab032a43ef5b8493a5eb 100644 GIT binary patch literal 2374 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 literal 2057 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 diff --git a/packages/checkpoint_securexl b/packages/checkpoint_securexl index 7741455..266afe9 100644 --- a/packages/checkpoint_securexl +++ b/packages/checkpoint_securexl @@ -1,11 +1,14 @@ -{'author': u'Th.L. (thl-cmk[at]outlook[dot]com)', - 'description': u'Monitors Check Point SecureXL status\nhas Perfdata for: active, added and deleted connections\nWarning if status not enabled\n', +{'author': 'Th.L. (thl-cmk[at]outlook[dot]com)', + 'description': 'Monitors Check Point SecureXL status\n' + 'has Perfdata for: active, added and deleted connections\n' + 'Warning if status not enabled\n', 'download_url': 'https://thl-cmk.hopto.org', - 'files': {'checks': ['checkpoint_securexl'], + 'files': {'agent_based': ['checkpoint_securexl.py'], 'web': ['plugins/metrics/checkpoint_securexl.py']}, 'name': 'checkpoint_securexl', 'num_files': 2, - 'title': u'Check Point SecureXL status', - 'version': '20200608.v.0.0.2', - 'version.min_required': '1.2.8b8', - 'version.packaged': '1.4.0p38'} \ No newline at end of file + 'title': 'Check Point SecureXL status', + 'version': '20210826.v.0.0.3', + '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/metrics/checkpoint_securexl.py b/web/plugins/metrics/checkpoint_securexl.py index 8b6e2ed..8634597 100644 --- a/web/plugins/metrics/checkpoint_securexl.py +++ b/web/plugins/metrics/checkpoint_securexl.py @@ -1,5 +1,5 @@ -#!/usr/bin/python -# -*- encoding: utf-8; py-indent-offset: 4 -*- +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- # # License: GNU General Public License v2 # @@ -10,48 +10,49 @@ # Check Point SecureXL staus metrics plugin # checkpoint_securexl # -metric_info['checkpoint_securexl_connections_active'] = { +from cmk.gui.i18n import _ + +from cmk.gui.plugins.metrics import ( + metric_info, + graph_info, + perfometer_info, +) + +metric_info['checkpoint_securexl_active'] = { 'title': _('Connections active'), 'unit': 'count', 'color': '26/a', } -metric_info['checkpoint_securexl_connections_added'] = { +metric_info['checkpoint_securexl_added'] = { 'title': _('Connections added'), 'unit': '1/s', 'color': '21/a', } -metric_info['checkpoint_securexl_connections_deleted'] = { +metric_info['checkpoint_securexl_deleted'] = { 'title': _('Connections deleted'), 'unit': '1/s', 'color': '31/a', } -check_metrics['check_mk-checkpoint_securexl'] = { - 'connections_active': {'name': 'checkpoint_securexl_connections_active', }, - 'connections_added': {'name': 'checkpoint_securexl_connections_added', }, - 'connections_deleted': {'name': 'checkpoint_securexl_connections_deleted', }, -} - -graph_info.append({ +graph_info['checkpoint_securexl_connections_active'] = { 'title': _('Check Point SecureXL Connections active'), 'metrics': [ - ('checkpoint_securexl_connections_active', 'area'), + ('checkpoint_securexl_active', 'area'), ], -}) +} -graph_info.append({ +graph_info['checkpoint_securexl_connections_rate'] = { 'title': _('Check Point SecureXL Connections added/deleted'), 'metrics': [ - ('checkpoint_securexl_connections_deleted', '-area'), - ('checkpoint_securexl_connections_added', 'area'), + ('checkpoint_securexl_deleted', '-area'), + ('checkpoint_securexl_added', 'area'), ], -}) - +} perfometer_info.append({ - 'type': 'logarithmic', - 'metric': 'checkpoint_securexl_connections_active', - 'half_value': 2000.0, - 'exponent': 2, - },) \ No newline at end of file + 'type': 'logarithmic', + 'metric': 'checkpoint_securexl_active', + 'half_value': 2000.0, + 'exponent': 2, +}, ) -- GitLab