diff --git a/agent_based/checkpoint_mho_buffer.py b/agent_based/checkpoint_mho_buffer.py deleted file mode 100644 index 7fb2adcc645c229e73594232775739962bcafa02..0000000000000000000000000000000000000000 --- a/agent_based/checkpoint_mho_buffer.py +++ /dev/null @@ -1,229 +0,0 @@ -#!/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 : 2020-11-30 -# -# Monitor Check Point MHO port buffers -# -# -# -# sample snmpwalk -# -# -# sample string_table -# -# -# -# sample section -# - -import time -from typing import List, NamedTuple, Optional, Dict -from dataclasses import dataclass -from cmk.base.plugins.agent_based.agent_based_api.v1.type_defs import ( - DiscoveryResult, - CheckResult, - StringTable, -) - -from cmk.base.plugins.agent_based.agent_based_api.v1 import ( - register, - Service, - equals, - Result, - State, - SNMPTree, - startswith, - all_of, - any_of, - Metric, - GetRateError, - get_rate, - get_value_store, - IgnoreResultsError, - render, -) - - -@dataclass -class CheckPointMhoRxBuffer: - frames: int - octets: int - discard: int - - -@dataclass -class CheckPointMhoPortBuffer: - label: str - admin_state: str - link_state: str - buffer: Dict[str, CheckPointMhoRxBuffer] - - -def parse_checkpoint_mho_buffer(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 - - _i = 0 - buffer = {} - for frames, octet, discard in [ - (_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), - ]: - buffer[str(_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, - ) - _i += 1 - - section[str(index)] = CheckPointMhoPortBuffer( - label=label, - admin_state=admin_state, - link_state=link_state, - buffer=buffer, - ) - - return section - - -def discovery_checkpoint_mho_buffer(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 - if params['add_link_down'] is not True and section[item].link_state.lower() == 'down': - continue - yield Service(item=item) - - -def check_checkpoint_mho_buffer(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}') - - now = time.time() - value_store = get_value_store() - metric_prefix = 'checkpoint_mho_port_buffer' - raise_ingore_res = False - - 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 - 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 - 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 - else: - yield Metric(value=value, name=f'{metric_prefix}_{buffer}_discards') - - if raise_ingore_res: - raise IgnoreResultsError('Initializing counters') - - -register.snmp_section( - name='checkpoint_mho_buffer', - parse_function=parse_checkpoint_mho_buffer, - 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 - '3.1.6', # mhoRxBuff1Frames - '3.1.7', # mhoRxBuff1Octet - '3.1.8', # mhoRxBuff1Discard - '3.1.9', # mhoRxBuff2Frames - '3.1.10', # mhoRxBuff2Octet - '3.1.11', # mhoRxBuff2Discard - '3.1.12', # mhoRxBuff3Frames - '3.1.13', # mhoRxBuff3Octet - '3.1.14', # mhoRxBuff3Discard - '3.1.15', # mhoRxBuff4Frames - '3.1.16', # mhoRxBuff4Octet - '3.1.17', # mhoRxBuff4Discard - '3.1.18', # mhoRxBuff5Frames - '3.1.19', # mhoRxBuff5Octet - '3.1.20', # mhoRxBuff5Discard - '3.1.21', # mhoRxBuff6Frames - '3.1.22', # mhoRxBuff6Octet - '3.1.23', # mhoRxBuff6Discard - '3.1.24', # mhoRxBuff7Frames - '3.1.25', # mhoRxBuff7Octet - '3.1.26', # mhoRxBuff7Discard - - '4.1.1', # mhoStatePortIndex - '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( - 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_mho_buffer', - service_name='RX buffer port %s', - discovery_function=discovery_checkpoint_mho_buffer, - discovery_ruleset_name='discovery_checkpoint_mho_buffer', - discovery_default_parameters={ - 'add_admin_down': False, - 'add_link_down': False, - }, - check_function=check_checkpoint_mho_buffer, - check_default_parameters={}, - check_ruleset_name='checkpoint_mho_buffer', -)