From 517fc0e8050ec210a964ce57a26a2886e1ca812f Mon Sep 17 00:00:00 2001 From: "th.l" <thl-cmk@outlook.com> Date: Thu, 2 Dec 2021 21:14:10 +0100 Subject: [PATCH] update project --- agent_based/checkpoint_mho_buffers.py | 101 ++++++++++-------- checkpoint_mho_buffers.mkp | Bin 3007 -> 3775 bytes packages/checkpoint_mho_buffers | 5 +- web/plugins/metrics/checkpoint_mho_buffers.py | 21 ++++ web/plugins/wato/checkpoint_mho_buffers.py | 89 +++++++++++++++ 5 files changed, 172 insertions(+), 44 deletions(-) create mode 100644 web/plugins/wato/checkpoint_mho_buffers.py diff --git a/agent_based/checkpoint_mho_buffers.py b/agent_based/checkpoint_mho_buffers.py index db478d9..45607f0 100644 --- a/agent_based/checkpoint_mho_buffers.py +++ b/agent_based/checkpoint_mho_buffers.py @@ -45,6 +45,7 @@ from cmk.base.plugins.agent_based.agent_based_api.v1 import ( get_rate, get_value_store, IgnoreResultsError, + check_levels, render, ) @@ -61,16 +62,25 @@ class CheckPointMhoPortBuffer: label: str admin_state: str link_state: str - buffer: Dict[str, CheckPointMhoRxBuffer] + sum_frames: int + sum_octets: int + sum_discards: int + buffer: Dict[int, CheckPointMhoRxBuffer] -def parse_checkpoint_mho_buffer(string_table: StringTable) -> Dict[str, CheckPointMhoPortBuffer]: +def parse_checkpoint_mho_buffers(string_table: StringTable) -> Dict[str, CheckPointMhoPortBuffer]: section = {} for line in string_table: _0_frames, _0_octet, _0_discard, _1_frames, _1_octet, _1_discard, _2_frames, _2_octet, _2_discard, _3_frames,\ _3_octet, _3_discard, _4_frames, _4_octet, _4_discard, _5_frames, _5_octet, _5_discard, _6_frames, _6_octet,\ _6_discard, _7_frames, _7_octet, _7_discard, index, label, link_state, admin_state = line + if len(string_table) < 100: + index = f'{int(index):02}' + else: + index = f'{int(index):03}' + + sum_frames = sum_octets = sum_discards = 0 _i = 0 buffer = {} for frames, octet, discard in [ @@ -83,24 +93,30 @@ def parse_checkpoint_mho_buffer(string_table: StringTable) -> Dict[str, CheckPoi (_6_frames, _6_octet, _6_discard), (_7_frames, _7_octet, _7_discard), ]: - buffer[str(_i)] = CheckPointMhoRxBuffer( + buffer[_i] = CheckPointMhoRxBuffer( frames=int(frames) if frames.isdigit() else 0, octets=int(octet) if octet.isdigit() else 0, discard=int(discard) if discard.isdigit() else 0, ) + sum_frames += buffer[_i].frames + sum_octets += buffer[_i].octets + sum_discards += buffer[_i].discard _i += 1 - section[str(index)] = CheckPointMhoPortBuffer( + section[index] = CheckPointMhoPortBuffer( label=label, admin_state=admin_state, link_state=link_state, + sum_frames=sum_frames, + sum_octets=sum_octets, + sum_discards=sum_discards, buffer=buffer, - ) + ) return section -def discovery_checkpoint_mho_buffer(params, section: Dict[str, CheckPointMhoPortBuffer]) -> DiscoveryResult: +def discovery_checkpoint_mho_buffers(params, section: Dict[str, CheckPointMhoPortBuffer]) -> DiscoveryResult: for item in section.keys(): if params['add_admin_down'] is not True and section[item].admin_state.lower() in ['down', 'na']: continue @@ -109,56 +125,71 @@ def discovery_checkpoint_mho_buffer(params, section: Dict[str, CheckPointMhoPort yield Service(item=item) -def check_checkpoint_mho_buffer(item, params, section: Dict[str, CheckPointMhoPortBuffer]) -> CheckResult: +def check_checkpoint_mho_buffers(item, params, section: Dict[str, CheckPointMhoPortBuffer]) -> CheckResult: try: port = section[item] except KeyError: yield Result(state=State.UNKNOWN, notice='Item not found in SNMP data.') return - yield Result(state=State.OK, summary=f'Label: {port.label}') - yield Result(state=State.OK, summary=f'Admin state: {port.admin_state}') - yield Result(state=State.OK, summary=f'Link state: {port.link_state}') + yield Result(state=State.OK, notice=f'Label: {port.label}') + yield Result(state=State.OK, notice=f'Admin state: {port.admin_state}') + yield Result(state=State.OK, notice=f'Link state: {port.link_state}') now = time.time() value_store = get_value_store() metric_prefix = 'checkpoint_mho_port_buffer' - raise_ingore_res = False + raise_ignore_res = False + + for metric, value, label in [ + ('sum_octets', port.sum_octets, 'Octets'), + ('sum_frames', port.sum_frames, 'Frames'), + ('sum_discards', port.sum_discards, 'Discards'), + ]: + try: + value = get_rate(value_store, metric, now, value, raise_overflow=True, ) + except GetRateError: + raise_ignore_res = True + else: + yield from check_levels( + value=value, + label=label, + metric_name=f'{metric_prefix}_{metric}', + render_func=lambda x: f'{x:.2f}/s', + ) for buffer in port.buffer.keys(): try: value = get_rate(value_store, f'{buffer}_frames', now, port.buffer[buffer].frames, raise_overflow=True, ) except GetRateError: - raise_ingore_res = True + raise_ignore_res = True else: yield Metric(value=value, name=f'{metric_prefix}_{buffer}_frames') try: value = get_rate(value_store, f'{buffer}_octets', now, port.buffer[buffer].octets, raise_overflow=True, ) except GetRateError: - raise_ingore_res = True + raise_ignore_res = True else: yield Metric(value=value, name=f'{metric_prefix}_{buffer}_octets') try: value = get_rate(value_store, f'{buffer}_discards', now, port.buffer[buffer].discard, raise_overflow=True, ) except GetRateError: - raise_ingore_res = True + raise_ignore_res = True else: yield Metric(value=value, name=f'{metric_prefix}_{buffer}_discards') - if raise_ingore_res: + if raise_ignore_res: raise IgnoreResultsError('Initializing counters') register.snmp_section( - name='checkpoint_mho_buffer', - parse_function=parse_checkpoint_mho_buffer, + name='checkpoint_mho_buffers', + parse_function=parse_checkpoint_mho_buffers, fetch=SNMPTree( base='.1.3.6.1.4.1.2620.1.55.1', # CHECKPOINT-MIB::mhoPortsStatus oids=[ - # '3.1.1', # mhoRxBuffPortIndex - # '3.1.2', # mhoRxBuffPortLabel '3.1.3', # mhoRxBuff0Frames '3.1.4', # mhoRxBuff0Octet '3.1.5', # mhoRxBuff0Discard @@ -188,21 +219,6 @@ register.snmp_section( '4.1.2', # mhoStatePortLabel '4.1.3', # mhoStateLinkState '4.1.4', # mhoStateAdminState - # '4.1.5', # mhoStateSpeed - - # '5.1.1', # mhoSummaryPortIndex - # '5.1.2', # mhoSummaryPortLabel - # '5.1.3', # mhoSummaryLinkState - # '5.1.4', # mhoSummaryAdminState - # '5.1.5', # mhoSummarySpeed - # '5.1.6', # mhoSummaryRxFcsErr - # '5.1.7', # mhoSummaryRxErr - # '5.1.8', # mhoSummaryRxFrames - # '5.1.9', # mhoSummaryRxBytes - # '5.1.10', # mhoSummaryTxErr - # '5.1.11', # mhoSummaryTxFrames - # '5.1.12', # mhoSummaryTxBytes - ] ), detect=any_of( @@ -215,15 +231,16 @@ register.snmp_section( ) register.check_plugin( - name='checkpoint_mho_buffer', + name='checkpoint_mho_buffers', service_name='RX buffers port %s', - discovery_function=discovery_checkpoint_mho_buffer, - discovery_ruleset_name='discovery_checkpoint_mho_buffer', + discovery_function=discovery_checkpoint_mho_buffers, + discovery_ruleset_name='discovery_checkpoint_mho_buffers', discovery_default_parameters={ - 'add_admin_down': False, - 'add_link_down': False, + 'add_admin_down': True, + 'add_link_down': True, + }, + check_function=check_checkpoint_mho_buffers, + check_default_parameters={ }, - check_function=check_checkpoint_mho_buffer, - check_default_parameters={}, - check_ruleset_name='checkpoint_mho_buffer', + check_ruleset_name='checkpoint_mho_buffers', ) diff --git a/checkpoint_mho_buffers.mkp b/checkpoint_mho_buffers.mkp index e55967d7afff3677883e55211f90fc2ec9207547..8ed18242dbb00d354baea41e8187c146a775a903 100644 GIT binary patch delta 3765 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 delta 2991 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 diff --git a/packages/checkpoint_mho_buffers b/packages/checkpoint_mho_buffers index f75b7df..4ade262 100644 --- a/packages/checkpoint_mho_buffers +++ b/packages/checkpoint_mho_buffers @@ -4,9 +4,10 @@ 'Tested on Orchestrator MHO-140 with R8020.SP HFA_317\n', 'download_url': 'https://thl-cmk.hopto.org', 'files': {'agent_based': ['checkpoint_mho_buffers.py'], - 'web': ['plugins/metrics/checkpoint_mho_buffers.py']}, + 'web': ['plugins/metrics/checkpoint_mho_buffers.py', + 'plugins/wato/checkpoint_mho_buffers.py']}, 'name': 'checkpoint_mho_buffers', - 'num_files': 2, + 'num_files': 3, 'title': 'Check Point MHO port RX buffers', 'version': '20211130.v0.0.1', 'version.min_required': '2.0.0', diff --git a/web/plugins/metrics/checkpoint_mho_buffers.py b/web/plugins/metrics/checkpoint_mho_buffers.py index 9723e49..3c19faa 100644 --- a/web/plugins/metrics/checkpoint_mho_buffers.py +++ b/web/plugins/metrics/checkpoint_mho_buffers.py @@ -32,9 +32,28 @@ while _i < 8: _i += 1 +metric_info['checkpoint_mho_port_buffer_sum_frames'] = { + 'title': _('RX buffer frames summary'), + 'unit': '1/s', + 'color': '15/a', +} +metric_info['checkpoint_mho_port_buffer_sum_octets'] = { + 'title': _('RX buffer octets summary'), + 'unit': '1/s', + 'color': '25/a', +} + +metric_info['checkpoint_mho_port_buffer_sum_discards'] = { + 'title': _('RX buffer discards summary'), + 'unit': '1/s', + 'color': f'35/a', +} + + graph_info['checkpoint_mho_port_buffer_frames'] = { 'title': _('Check Point MHO RX buffer frames'), 'metrics': [ + ('checkpoint_mho_port_buffer_sum_frames', 'line'), ('checkpoint_mho_port_buffer_0_frames', 'line'), ('checkpoint_mho_port_buffer_1_frames', 'line'), ('checkpoint_mho_port_buffer_2_frames', 'line'), @@ -49,6 +68,7 @@ graph_info['checkpoint_mho_port_buffer_frames'] = { graph_info['checkpoint_mho_port_buffer_octets'] = { 'title': _('Check Point MHO RX buffer octets'), 'metrics': [ + ('checkpoint_mho_port_buffer_sum_octets', 'line'), ('checkpoint_mho_port_buffer_0_octets', 'line'), ('checkpoint_mho_port_buffer_1_octets', 'line'), ('checkpoint_mho_port_buffer_2_octets', 'line'), @@ -63,6 +83,7 @@ graph_info['checkpoint_mho_port_buffer_octets'] = { graph_info['checkpoint_mho_port_buffer_discards'] = { 'title': _('Check Point MHO RX buffer discards'), 'metrics': [ + ('checkpoint_mho_port_buffer_sum_discards', 'line'), ('checkpoint_mho_port_buffer_0_discards', 'line'), ('checkpoint_mho_port_buffer_1_discards', 'line'), ('checkpoint_mho_port_buffer_2_discards', 'line'), diff --git a/web/plugins/wato/checkpoint_mho_buffers.py b/web/plugins/wato/checkpoint_mho_buffers.py new file mode 100644 index 0000000..7fddc2a --- /dev/null +++ b/web/plugins/wato/checkpoint_mho_buffers.py @@ -0,0 +1,89 @@ +#!/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-12-02 +# +from cmk.gui.i18n import _ +from cmk.gui.valuespec import ( + Dictionary, + TextAscii, + MonitoringState, + FixedValue, +) + +from cmk.gui.plugins.wato import ( + CheckParameterRulespecWithItem, + rulespec_registry, + RulespecGroupCheckParametersNetworking, + RulespecGroupCheckParametersDiscovery, + HostRulespec, +) + + +# def _parameter_valuespec_checkpoint_mho_buffers(): +# return Dictionary( +# elements=[ +# ('state_admin_down', +# MonitoringState( +# title=_('State if port is Admin down'), +# help=_('Monitoring state if port is Admin down'), +# default_value=1, +# )), +# ('state_link_down', +# MonitoringState( +# title=_('State if port Link state is down'), +# help=_('Monitoring state if port link state is down'), +# default_value=2, +# )), +# ('state_speed_changed', +# MonitoringState( +# title=_('State if port speed has changed'), +# help=_('Monitoring state if port speed has changed from discovery'), +# default_value=1, +# )), +# ], +# ) +# +# +# rulespec_registry.register( +# CheckParameterRulespecWithItem( +# check_group_name='checkpoint_mho_buffers', +# group=RulespecGroupCheckParametersNetworking, +# match_type='dict', +# parameter_valuespec=_parameter_valuespec_checkpoint_mho_buffers, +# title=lambda: _('Check Point MHO buffers'), +# item_spec=lambda: TextAscii(title=_('Port index'), ), +# )) + + +def _valuespec_discovery_checkpoint_mho_buffers(): + return Dictionary( + title=_('Check Point MHO buffers'), + elements=[ + ('add_admin_down', + FixedValue( + False, + title=_('Do not add Admin down ports'), + totext=_('If enabled the plugin will not add ports in Admin down state'), + )), + ('add_link_down', + FixedValue( + False, + title=_('Do not add Link down ports'), + totext=_('If enabled the plugin will not add ports in Link down state'), + )), + ], + ) + + +rulespec_registry.register( + HostRulespec( + group=RulespecGroupCheckParametersDiscovery, + match_type='dict', + name='discovery_checkpoint_mho_buffers', + valuespec=_valuespec_discovery_checkpoint_mho_buffers, + )) -- GitLab