From 83f712c17df9b1208f97b71428cd53ef2d8dc093 Mon Sep 17 00:00:00 2001 From: "th.l" <thl-cmk@outlook.com> Date: Thu, 2 Dec 2021 19:05:39 +0100 Subject: [PATCH] update project --- agent_based/checkpoint_mho_buffers.py | 229 ++++++++++++++++++ checkpoint_mho_buffers.mkp | Bin 3003 -> 3007 bytes packages/checkpoint_mho_buffers | 8 +- web/plugins/metrics/checkpoint_mho_buffers.py | 75 ++++++ 4 files changed, 308 insertions(+), 4 deletions(-) create mode 100644 agent_based/checkpoint_mho_buffers.py create mode 100644 web/plugins/metrics/checkpoint_mho_buffers.py diff --git a/agent_based/checkpoint_mho_buffers.py b/agent_based/checkpoint_mho_buffers.py new file mode 100644 index 0000000..db478d9 --- /dev/null +++ b/agent_based/checkpoint_mho_buffers.py @@ -0,0 +1,229 @@ +#!/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 buffers 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', +) diff --git a/checkpoint_mho_buffers.mkp b/checkpoint_mho_buffers.mkp index 11e6a4ad70817b57404a7e4f39d8a73991a8a6cd..e55967d7afff3677883e55211f90fc2ec9207547 100644 GIT binary patch delta 2948 zcmV-~3w!jt7rz$<ABzYG@(Pg#F@Jk++qxCc-~JR_iVNAhjv~pjof`A7K5pBfc_B@= z0l9{t*mTTAmOMR@W<kFD4j+;z$#NW_&29%CAhsm`4iC?RhldnH{CTkRgUJ9I*f#qH zDu0`1&)hL>vu{~Ozc;XU3=^IWc96020+d9t8$wsUhmx{#KM6f(ZW1qoP=6aC?P8%H z>8KqqyuIo2=F*KPK@xjGaC12e;>k2vcC>B_X)_#6L$ZoV;8U*Sz$bAKM(EuFPjAp! zK>QdTe>z30AdJ!ZKhae(pW`t4-Pc;EMB3Vi7dVRX3<W+q4W|pZ30)9C+uSp41Kp8$ zfzA&M%h11^p-&&)I6ZR+4S%t|1$Vv|xHBgSJ=(cN9Iv9${=U#jUj(Z-(1Y-rq36WI z5x~F**VvDpD>uS3xWCk<RF@T1#aS)_N2s8$?zKr*?yz=;uNcG1ORk9@?Jsd0l4-QR zp@By#+IN?jc5pq8_0CV0PTE6@K8Q)|F{URh&A4yjLU_nBEE5Kqp?}{Rx}lr$&-#-1 zPKf`VkdSGvS%5GKh?P6N0rSk#mUQE_ZWSR(<X(B$N&J{ltDgiue%w*?GZ2CNum39w z{QqJ8H+q9o{x^-GrSkua<o{is|93}d_v!q<+eN!l`ln3Wr~lvmW{I5%mGU~3TASA? zm?cd>fo^$Phx^Oj+JCIPI{`k(<qWlTF5iV*j&^A(r+r!vqa9+2n?jzj5ygs}O3|gf zE&W<Z+YCz6whTzKcG?cl+A=~;+JN#C&!ftulMXzxR1*KcCuxM}G!edh{<my;UCjS* zWvl%E5>%VpevJRkp*`f^{k|}jIiSu?{SU4O|HIdduKy6)xqnKCH`{=F>i3_NUj1o5 ziNgIW;_qYs7On1~81Q?oS7`6gduSTWh<`moNj%>>pif$_;FlvZ#eRfG=;O&(^bz|w zbUk#ITzO=g{)TQX27SY7ixH|XDFF2K{0LT3BUC%51LnOOV~T;P%-A!{y`I6^7sbc= z+C#)L1G10EU4O1Tj3R%zx^ul7_E35Zlf8fK#B^5VzevB~DXn+lQHv~D<1ty{);tWB zD863-9}>@xNECO`36uo0iv(D^=#-U8E=;cP$u#CXGdFgpo*P9tN*S|996=30v$8IV z5nWEy(zWBRh<<D8&<pI$@H}g;&6cU}Ni+>$#=k$uQGepaeC^7tB|rGWRKK8_cUzrS zqaGCHhWHu`fkV+g4sRha_zhGot{3s^Vkf}I;_~G9>>|YCjt<Z`qQxP<cRkMu=HlAF z&#sSIxyG+Q;`khz`z;Iu(T8gsJ7Fe)-rc%hf}IHBM?5^d_TifMDUw)2?9ZqwV42q6 zazC+8ZhuS`dB=<3{M%a=bR)($4<QVq5rW^?eK3u2EZxt*Ic_-P51wlJ42&x`?zvak z8_}rchM3WkFrqfhA9}>UDL><*V#I>+5*~KfYcPQhK{%n68%Ee!J4>|X5i^p5sDt+Y zS|=daW5N{?V+)PZ!y`8v3~1;%2D20f<tW>DaeoYl+qO$DnOWJDFeqG`Il#;SrUbBZ zfRzC(3D8Rczvp6m8L}rK?Yt>F1K1Lvp9A_Cpf3RiIba|FlGK5O9OlSj*3>Wu5Qx-o zT^<}=$^TtBK)}@0zO7sYfk#Gm%iWthBy~zETF4bbshchfn|SRf{L|@{;G4Zwfp7L* z1%KYl;cFaNfp2za1-{w275ExgOCGMkH~U+HPeuh!?m{~J+79VVz?W-BdAqXt%EgTV z*5;QTMCRhDPNEsPCULuium_X8(XFua6vx=vCF5pSTQCc)7<Z~6<rmjaw9qNsK}i2P zMrI!4BF!+9uu)RAN}igEc44Dw%*RyW2Y+cyjiu`%C?AAlX*{m+)|h{lwGvZMoP>T> zhw$7yODFf5{0zC<T|(#xuF)1LS!C`)(J;!gGKuk$Wo6!=euM9$b|;TK!sZK*d8xTG zC=8fM=+=!kK_o(c5TlDQ!7yvjGJnuEC%R-k-3#uZ^BtB~*oMB=rTgVtDa5CNAAb`+ z!FAG^v9}VQyCsu79`knz+7mMG3HD}bebc7Rjp;{6c!>F>#yb?(MNNGq)o{Fvad@Bi zl~rQnqME$;`ZmR@7=6a~tiBnQ6yXiFd9<>EO#gcF`Q-E;CtYel&~dCC(jcJLoCk@| zvOg`?SpBMN`5@#G%cHlp@zc+sd4IB8y5aqJt{w4`=7IKJXT$ALG`M90Z)g-DQSk6) zq`-P+V@D7b#kTS|p-r*2{NN7kOcw(>{b+LuQe_FhmTFCb;hT%jD#Ua04N&DbK~$m$ z75<7WbO}^qPz^yFP6!K!G5P?7w3x=}@D%eln1FSc-&O``AyBg3ihj}xxqmGe#%QiR z@P;16RHV^Rxa-O?F8S9)PbVwhSDHiSFrvnE+;yb{Euv5^(u-YMqbqGAZvgZza&V{e zB>-1o%s!#B&?Ru^L&4yWPFbr?>pNJ8Pk);%#1TK2g@jh$#X@2(-)N((n*EuKlqn|6 z1hY|Dd@hRpvSz*6)((9V6Mxqu|Dk&dQ^>F}eW6R|lXOX~)BOuaq;_7Yu)eK-m8|h{ zf-mFdiO;yk8&-83KgaQOF;3Uvc{xN^{9{cw^`1U}PaFQMfn~r~zfa#RBlHTr`}Etp z&u6EHCl`Cihi^xtC7-<_nq-qGYbqeKXk1)4yh2(JniB0S(>j%MAAi!4Z5`NJ17;IR z0nDJi64dy>hJF=jmw~5r1XOYTGVVPOf+})QLYj4=hh<=m=z}t@R`lx<(y9|}8f9dS zY_sejt5&#Kc2BQXdf7X@I_YKa^y;OT9c0%^FFVMtlU{a^T`#@tqkgUQvXA;T(yg+K z`nA%nvXcgN(yg+O27h(Z%Ptz!OD{WVSS!8kqhX!&vWteP^di<SWDr)_txq5fX;qPH zvWH#B9t=s#Lv~R`+C?O*N~_RU9NaI0zpOAWX#~K2Q72xb)~3aNQLh|b)l8s!W%PRO z1llg6>ox2bHRN!v;~M0kj6DDLVM=Glb>LwYT!TDV(`+>w1%LQ;75w%-UXPVBrT|~m z^}#f&(E3i8Ru#>Ak#G30E3pGK!!gtYW4;@n&(`_Qc{`u8E!sYO(!N(`a!uM(;v4P7 zy%4^8zg2Sw#?XRWi<+slu~lhBDkSJFYwXM4PtXUt#&p?HL#YW~0(R(zd{!0lr8a+8 zv29fp@pZeyk$?F)48DH;B@(cFpCv1xp4fUR^M#3rBPflzpeL9sQfGMXLW$_Gy#h=N z!tq09i}Fs(h_4E}ML@n8QuzIme{tJo%5B)Skn!ufRcNrNb)BxAmO6!@NRc8%iWDhQ z^m25EuYTCM&*tYpjlR`a=RaS9wm$3r!_I#ieZ%ZC|9_kI(C!(4vkYrstMi|K$n&51 z;lS&J=)^qm)02Nr>9_RUpa`wv0YUK^h5q}IIFT2+tA%vG!r?q%%S!Q(z5@{lmF^bA z!}N&9U(ms*+}!1S!>d&1!6DfzKY9Q}T1cn=Ugxyu`Cb5`3@Cj^D6Og!pTzWE;>`VY zn}9u@27ey=XUe%|0w>zvM;7`OnUDJq(?!^RJ%k&0{0p)=kAm&7fdb-<-1Z8jukfCu zfVH&(4K&DJmu;^@{)X*2TJ)Z$MRsl|kH^bR%2Yy0(xCExnz=&7fYQVeq5nym>CoOJ z*2rJRYxFFiY?F<QW>ZG1DPylGqurFT-;{CClv;6E!#L@-9=8sq%AnpZl!`;UNhoEf z7M>eQ4H>PbjJ>9ec2mZFQ^rA4#$gTPvqEW2cHJ(R$~m@4I7vr5o*Ph&S*_-*z2>ZT ubJl)y)<JXDVJ#~QFSQ(2laC7^lbs6^5{eWlQl#h)MgIjiClWgVcmM!vg47ZK delta 2940 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 diff --git a/packages/checkpoint_mho_buffers b/packages/checkpoint_mho_buffers index 1055a92..f75b7df 100644 --- a/packages/checkpoint_mho_buffers +++ b/packages/checkpoint_mho_buffers @@ -1,10 +1,10 @@ -{'author': 'cmkadmin', +{'author': 'Th.L. (thl-cmk[at]outlook[dot]com)', 'description': 'Monitors Check Point MHO port RX buffers\n' '\n' 'Tested on Orchestrator MHO-140 with R8020.SP HFA_317\n', - 'download_url': '', - 'files': {'agent_based': ['checkpoint_mho_buffer.py'], - 'web': ['plugins/metrics/checkpoint_mho_buffer.py']}, + 'download_url': 'https://thl-cmk.hopto.org', + 'files': {'agent_based': ['checkpoint_mho_buffers.py'], + 'web': ['plugins/metrics/checkpoint_mho_buffers.py']}, 'name': 'checkpoint_mho_buffers', 'num_files': 2, 'title': 'Check Point MHO port RX buffers', diff --git a/web/plugins/metrics/checkpoint_mho_buffers.py b/web/plugins/metrics/checkpoint_mho_buffers.py new file mode 100644 index 0000000..9723e49 --- /dev/null +++ b/web/plugins/metrics/checkpoint_mho_buffers.py @@ -0,0 +1,75 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# + +from cmk.gui.i18n import _ + +from cmk.gui.plugins.metrics import ( + metric_info, + graph_info, + perfometer_info, +) + + +_i = 0 +while _i < 8: + metric_info[f'checkpoint_mho_port_buffer_{_i}_frames'] = { + 'title': _(f'RX buffer {_i} frames'), + 'unit': '1/s', + 'color': f'1{_i // 2 + 1}/{chr(97 + _i % 2)}', + } + metric_info[f'checkpoint_mho_port_buffer_{_i}_octets'] = { + 'title': _(f'RX buffer {_i} octets'), + 'unit': '1/s', + 'color': f'2{_i // 2 + 1}/{chr(97 + _i % 2)}', + } + + metric_info[f'checkpoint_mho_port_buffer_{_i}_discards'] = { + 'title': _(f'RX buffer {_i} discards'), + 'unit': '1/s', + 'color': f'3{_i // 2 + 1}/{chr(97 + _i % 2)}', + } + + _i += 1 + +graph_info['checkpoint_mho_port_buffer_frames'] = { + 'title': _('Check Point MHO RX buffer frames'), + 'metrics': [ + ('checkpoint_mho_port_buffer_0_frames', 'line'), + ('checkpoint_mho_port_buffer_1_frames', 'line'), + ('checkpoint_mho_port_buffer_2_frames', 'line'), + ('checkpoint_mho_port_buffer_3_frames', 'line'), + ('checkpoint_mho_port_buffer_4_frames', 'line'), + ('checkpoint_mho_port_buffer_5_frames', 'line'), + ('checkpoint_mho_port_buffer_6_frames', 'line'), + ('checkpoint_mho_port_buffer_7_frames', 'line'), + ], +} + +graph_info['checkpoint_mho_port_buffer_octets'] = { + 'title': _('Check Point MHO RX buffer octets'), + 'metrics': [ + ('checkpoint_mho_port_buffer_0_octets', 'line'), + ('checkpoint_mho_port_buffer_1_octets', 'line'), + ('checkpoint_mho_port_buffer_2_octets', 'line'), + ('checkpoint_mho_port_buffer_3_octets', 'line'), + ('checkpoint_mho_port_buffer_4_octets', 'line'), + ('checkpoint_mho_port_buffer_5_octets', 'line'), + ('checkpoint_mho_port_buffer_6_octets', 'line'), + ('checkpoint_mho_port_buffer_7_octets', 'line'), + ], +} + +graph_info['checkpoint_mho_port_buffer_discards'] = { + 'title': _('Check Point MHO RX buffer discards'), + 'metrics': [ + ('checkpoint_mho_port_buffer_0_discards', 'line'), + ('checkpoint_mho_port_buffer_1_discards', 'line'), + ('checkpoint_mho_port_buffer_2_discards', 'line'), + ('checkpoint_mho_port_buffer_3_discards', 'line'), + ('checkpoint_mho_port_buffer_4_discards', 'line'), + ('checkpoint_mho_port_buffer_5_discards', 'line'), + ('checkpoint_mho_port_buffer_6_discards', 'line'), + ('checkpoint_mho_port_buffer_7_discards', 'line'), + ], +} -- GitLab