From b9b5fa8b2a9a73117e121e3aeb00ccc48db9d6fe Mon Sep 17 00:00:00 2001 From: "th.l" <thl-cmk@outlook.com> Date: Mon, 29 May 2023 16:46:17 +0200 Subject: [PATCH] update project --- agent_based/checkpoint_vsx_system.py | 1 + checkman/checkpoint_vsx_system | 9 +- checkpoint_vsx_system-0.4.0-20230529.mkp | Bin 0 -> 6360 bytes checkpoint_vsx_system.mkp | Bin 5731 -> 6360 bytes gui/metrics/checkpoint_vsx_system.py | 138 +++++++++++++++++++++++ gui/wato/checkpoint_vsx_system.py | 131 +++++++++++++++++++++ packages/checkpoint_vsx_system | 12 +- 7 files changed, 280 insertions(+), 11 deletions(-) create mode 100644 checkpoint_vsx_system-0.4.0-20230529.mkp create mode 100644 gui/metrics/checkpoint_vsx_system.py create mode 100644 gui/wato/checkpoint_vsx_system.py diff --git a/agent_based/checkpoint_vsx_system.py b/agent_based/checkpoint_vsx_system.py index 9c7114f..d906990 100644 --- a/agent_based/checkpoint_vsx_system.py +++ b/agent_based/checkpoint_vsx_system.py @@ -22,6 +22,7 @@ # the active connections (suggested by raulcurro[at]gmail[dot]com) # moved Main IP to details, if it is not an IPv4 address # 2022-10-23: fixed warning on upgrade "non-empty params vanished" for policyname and ha_state +# 2023-05-29: moved gui files to ~/local/lib/check_mk/gui/plugins/... # # snmpwalk sample # diff --git a/checkman/checkpoint_vsx_system b/checkman/checkpoint_vsx_system index a94a921..7cf5bf2 100644 --- a/checkman/checkpoint_vsx_system +++ b/checkman/checkpoint_vsx_system @@ -6,11 +6,11 @@ license: GPL distribution: check_mk description: This plugin monitors the state of Check Point VSX gateways. - With default settings the VSX system gets {critical} if the H/A state is other than activ/standby, - the SIC trust is not established or the policy type is not active. The monitoring state becomes - {warning} if the policy name or the H/A state is differnet from discovery time. All this states are + With default settings the VSX system gets {critical} if the H/A state is other than activ/standby, + the SIC trust is not established or the policy type is not active. The monitoring state becomes + {warning} if the policy name or the H/A state is differnet from discovery time. All this states are configurable via WATO. - + item: The system name. @@ -41,4 +41,3 @@ Here you can define all the monitoring states. 'state_policy_changed': 1, # policy name changed 'state_ha_changed': 1, # H/A state changed } - diff --git a/checkpoint_vsx_system-0.4.0-20230529.mkp b/checkpoint_vsx_system-0.4.0-20230529.mkp new file mode 100644 index 0000000000000000000000000000000000000000..016ade099771945f98c99a34b47b1cba44f23d7b GIT binary patch literal 6360 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 literal 0 HcmV?d00001 diff --git a/checkpoint_vsx_system.mkp b/checkpoint_vsx_system.mkp index f335a03ae8961d13940c10c580473ea43cfaba67..016ade099771945f98c99a34b47b1cba44f23d7b 100644 GIT binary patch literal 6360 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 delta 5706 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 diff --git a/gui/metrics/checkpoint_vsx_system.py b/gui/metrics/checkpoint_vsx_system.py new file mode 100644 index 0000000..55692d0 --- /dev/null +++ b/gui/metrics/checkpoint_vsx_system.py @@ -0,0 +1,138 @@ +#!/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-13 +# +# Check Point VSX status metrics plugin +# checkpoint_vsx +# +from cmk.gui.i18n import _ + +from cmk.gui.plugins.metrics.utils import ( + metric_info, + graph_info, + perfometer_info, + check_metrics, +) + +metric_info['checkpoint_vsx_connections'] = { + 'title': _('Connections active'), + 'unit': 'count', + 'color': '26/a', +} +metric_info['checkpoint_vsx_connections_peak'] = { + 'title': _('Connections peak'), + 'unit': 'count', + 'color': '21/a', +} +metric_info['checkpoint_vsx_connections_limit'] = { + 'title': _('Connections limit'), + 'unit': 'count', + 'color': '31/a', +} + +metric_info['checkpoint_vsx_packets_processed'] = { + 'title': _('Packets processed'), + 'unit': '1/s', + 'color': '12/a', +} +metric_info['checkpoint_vsx_packets_dropped'] = { + 'title': _('Packets dropped'), + 'unit': '1/s', + 'color': '22/a', +} +metric_info['checkpoint_vsx_packets_accepted'] = { + 'title': _('Packets accepted'), + 'unit': '1/s', + 'color': '32/a', +} +metric_info['checkpoint_vsx_packets_rejected'] = { + 'title': _('Packets rejected'), + 'unit': '1/s', + 'color': '42/a', +} + +metric_info['checkpoint_vsx_bytes_accepted'] = { + 'title': _('Bytes accepted'), + 'unit': 'bytes/s', + 'color': '13/a', +} +metric_info['checkpoint_vsx_bytes_dropped'] = { + 'title': _('Bytes dropped'), + 'unit': 'bytes/s', + 'color': '23/a', +} +metric_info['checkpoint_vsx_bytes_rejected'] = { + 'title': _('Bytes rejected'), + 'unit': 'bytes/s', + 'color': '33/a', +} + +metric_info['checkpoint_vsx_loggs_send'] = { + 'title': _('Loggs send'), + 'unit': '1/s', + 'color': '14/a', +} + +check_metrics['check_mk-checkpoint_vsx_system'] = { + 'checkpoint_vsx_connections_peak': {'auto_graph': False}, + 'checkpoint_vsx_connections_limit': {'auto_graph': False}, +} + +graph_info['checkpoint_vsx_connections'] = { + 'title': _('Check Point VSX: Connections'), + 'metrics': [ + ('checkpoint_vsx_connections', 'area'), + ], + 'scalars': [ + ('checkpoint_vsx_connections:crit', _('crit')), + ('checkpoint_vsx_connections:warn', _('warn')), + ('checkpoint_vsx_connections_limit', _('limit')), + ('checkpoint_vsx_connections_peak', _('peak')), + ], +} + +graph_info['checkpoint_vsx_packets'] = { + 'title': _('Check Point VSX: Packets'), + 'metrics': [ + ('checkpoint_vsx_packets_rejected', 'stack'), + ('checkpoint_vsx_packets_dropped', 'stack'), + ('checkpoint_vsx_packets_accepted', 'stack'), + ('checkpoint_vsx_packets_processed', 'line'), + ] +} + +graph_info['checkpoint_vsx_bytes'] = { + 'title': _('Check Point VSX: Bytes'), + 'metrics': [ + ('checkpoint_vsx_bytes_rejected', 'line'), + ('checkpoint_vsx_bytes_dropped', 'line'), + ('checkpoint_vsx_bytes_accepted', 'line'), + ] +} + +graph_info['checkpoint_vsx_loggs_send'] = { + 'title': _('Check Point VSX: Logs'), + 'metrics': [ + ('checkpoint_vsx_loggs_send', 'area'), + ] +} + +perfometer_info.append(('stacked', [ + { + 'type': 'logarithmic', + 'metric': 'checkpoint_vsx_connections', + 'half_value': 50000.0, + 'exponent': 2, + }, + { + 'type': 'logarithmic', + 'metric': 'checkpoint_vsx_packets_processed', + 'half_value': 50000.0, + 'exponent': 2, + }, +])) diff --git a/gui/wato/checkpoint_vsx_system.py b/gui/wato/checkpoint_vsx_system.py new file mode 100644 index 0000000..2f1e6d3 --- /dev/null +++ b/gui/wato/checkpoint_vsx_system.py @@ -0,0 +1,131 @@ +#!/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 : 2021-09-07 +# +from cmk.gui.i18n import _ +from cmk.gui.valuespec import ( + Dictionary, + TextAscii, + Tuple, + Integer, + MonitoringState, + ListChoice, + TextUnicode, +) + +from cmk.gui.plugins.wato.utils import ( + CheckParameterRulespecWithItem, + rulespec_registry, + RulespecGroupCheckParametersNetworking, + RulespecGroupCheckParametersDiscovery, + HostRulespec, +) + + +def _parameter_valuespec_checkpoint_vsx_system(): + return Dictionary( + elements=[ + ('levels_upper_absolute', + Tuple( + title=_('Maximum number of firewall connections'), + help=_('This rule sets upper limits to the current number of connections through ' + 'a Checkpoint firewall.'), + elements=[ + Integer(title=_('Warning at'), minvalue=0, unit=_('connections')), + Integer(title=_('Critical at'), minvalue=0, unit=_('connections')), + ])), + ('levels_lower_absolute', + Tuple( + title=_('Minimum number of firewall connections'), + help=_('This rule sets lower limits to the current number of connections through ' + 'a Checkpoint firewall.'), + elements=[ + Integer(title=_('Warning blow'), minvalue=0, unit=_('connections')), + Integer(title=_('Critical below'), minvalue=0, unit=_('connections')), + ])), + ('state_sic_not_established', + MonitoringState( + title=_('State if SIC is not established'), + help=_('Monitoring state if SIC is not established'), + default_value=2, + )), + ('state_ha_not_act_stb', + MonitoringState( + title=_('State if H/A state not active/standby'), + help=_('Monitoring state if H/A state not active or standby'), + default_value=2, + )), + ('state_policy_not_installed', + MonitoringState( + title=_('State if no policy is installed'), + help=_('Monitoring state if no policy is installed'), + default_value=2, + )), + ('state_policy_changed', + MonitoringState( + title=_('State on policy name change'), + help=_('Monitoring status on policy name change'), + default_value=1, + )), + ('state_ha_changed', + MonitoringState( + title=_('State on H/A state change'), + help=_('Monitoring status on H/A state change'), + default_value=1, + )), + ('policyname', # added by plugin discovery function + TextUnicode()), + ('ha_state', # added by plugin discovery function + TextUnicode()), + ], + hidden_keys=['policyname', 'ha_state'], + ) + + +rulespec_registry.register( + CheckParameterRulespecWithItem( + check_group_name='checkpoint_vsx_system', + group=RulespecGroupCheckParametersNetworking, + match_type='dict', + parameter_valuespec=_parameter_valuespec_checkpoint_vsx_system, + title=lambda: _('Check Point VSX system'), + item_spec=lambda: TextAscii(title=_('VSX System name'), ), + )) + + +def _valuespec_discovery_checkpoint_vsx_system(): + _vs_types = [ + ('virtual system', 'Virtual System'), + ('vsx gateway', 'VSX Gateway'), + ('virtual switch', 'Virtual Switch'), + ('virtual router', 'Virtual Router'), + ] + return Dictionary( + title=_('Check Point VSX system'), + elements=[ + ('vs_type', + ListChoice( + title=_('VS types to discover'), + help=_('Virtual system types to discover. Note: if you select "VSX Gateway", ' + 'this will also discover ClusterXL systems.'), + choices=_vs_types, + default_value=[ + 'virtual system', + ], + )), + ], + ) + + +rulespec_registry.register( + HostRulespec( + group=RulespecGroupCheckParametersDiscovery, + match_type='dict', + name='discovery_checkpoint_vsx_system', + valuespec=_valuespec_discovery_checkpoint_vsx_system, + )) diff --git a/packages/checkpoint_vsx_system b/packages/checkpoint_vsx_system index 917e539..ee4de64 100644 --- a/packages/checkpoint_vsx_system +++ b/packages/checkpoint_vsx_system @@ -13,12 +13,12 @@ 'checkpoint_vsx_status\n', 'download_url': 'https://thl-cmk.hopto.org/gitlab/checkmk/check-point/gateway/checkpoint_vsx_system', 'files': {'agent_based': ['checkpoint_vsx_system.py'], - 'web': ['plugins/metrics/checkpoint_vsx_system.py', - 'plugins/wato/checkpoint_vsx_system.py']}, + 'checkman': ['checkpoint_vsx_system'], + 'gui': ['metrics/checkpoint_vsx_system.py', + 'wato/checkpoint_vsx_system.py']}, 'name': 'checkpoint_vsx_system', - 'num_files': 3, 'title': 'Check Point VSX system status and counter', - 'version': '20221023.v.0.3c', - 'version.min_required': '2.0.0', - 'version.packaged': '2021.09.20', + 'version': '0.4.0-20230529', + 'version.min_required': '2.1.0b1', + 'version.packaged': '2.1.0p21', 'version.usable_until': None} \ No newline at end of file -- GitLab