diff --git a/agent_based/checkpoint_vsx_system.py b/agent_based/checkpoint_vsx_system.py index 9c7114fb669e80b97d72c54603053ee6b1188a87..d9069908a0f13ef9cf511e07c885bb988153c7b3 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 a94a9218cc2b911170951c36ab3c2917dcbc2e67..7cf5bf2c41c8f5444e29bf36e30a7640b7ee790f 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 Binary files /dev/null and b/checkpoint_vsx_system-0.4.0-20230529.mkp differ diff --git a/checkpoint_vsx_system.mkp b/checkpoint_vsx_system.mkp index f335a03ae8961d13940c10c580473ea43cfaba67..016ade099771945f98c99a34b47b1cba44f23d7b 100644 Binary files a/checkpoint_vsx_system.mkp and b/checkpoint_vsx_system.mkp differ diff --git a/gui/metrics/checkpoint_vsx_system.py b/gui/metrics/checkpoint_vsx_system.py new file mode 100644 index 0000000000000000000000000000000000000000..55692d0d9914e8c028ecc47f1b0ed33f71ae49ad --- /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 0000000000000000000000000000000000000000..2f1e6d39a26f4bfac71dd374ef244809c87adabb --- /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 917e539eb4d5b8ca6e366a0fc6139962ad46bd1d..ee4de64a5fa57ed921fe5d0ed11345996671e18d 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