From ab7f1f3aca527f288aba8bbc7098f5afe3d0b5a8 Mon Sep 17 00:00:00 2001 From: "th.l" <thl-cmk@outlook.com> Date: Tue, 10 Aug 2021 22:28:09 +0200 Subject: [PATCH] update project --- agent_based/checkpoint_powersupply.py | 115 +++++++++++++++++++++ checkpoint_powersupply.mkp | Bin 1434 -> 3093 bytes packages/checkpoint_powersupply | 22 ++-- web/plugins/wato/checkpoint_powersupply.py | 41 ++++++++ 4 files changed, 170 insertions(+), 8 deletions(-) create mode 100644 agent_based/checkpoint_powersupply.py create mode 100644 web/plugins/wato/checkpoint_powersupply.py diff --git a/agent_based/checkpoint_powersupply.py b/agent_based/checkpoint_powersupply.py new file mode 100644 index 0000000..5a65d5c --- /dev/null +++ b/agent_based/checkpoint_powersupply.py @@ -0,0 +1,115 @@ +#!/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-07-31 +# +# Monitor status of Check Point appliance power supply +# +# 2020-06-08: changed snmp-scan function +# 2021-08-10: rewritten for CMK 2.0 +# added WATO +# +# +# ToDo: remove VSX... +# +# sample snmpwalk (two power supplys) +# +# CHECKPOINT-MIB::powerSupplyIndex.1.0 = INTEGER: 1 +# CHECKPOINT-MIB::powerSupplyIndex.2.0 = INTEGER: 2 +# CHECKPOINT-MIB::powerSupplyStatus.1.0 = STRING: Up +# CHECKPOINT-MIB::powerSupplyStatus.2.0 = STRING: Up +# +# +# .1.3.6.1.4.1.2620.1.6.7.9.1.1.1.1.0 = INTEGER: 1 +# .1.3.6.1.4.1.2620.1.6.7.9.1.1.1.2.0 = INTEGER: 2 +# .1.3.6.1.4.1.2620.1.6.7.9.1.1.2.1.0 = STRING: Up +# .1.3.6.1.4.1.2620.1.6.7.9.1.1.2.2.0 = STRING: Up + +# +# +# sample section +# smart-1 5150 +# {'1': 'Present', '2': 'Present'} +# 23800 appliance +# {'1': 'Up', '2': 'Up'} + +from typing import Dict, Optional + +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, +) + + +def parse_checkpoint_powersupply(string_table: StringTable) -> Dict[str, str]: + powersupplys = {} + for psindex, psstatus in string_table: + if psindex.isdigit(): + powersupplys.update({psindex: psstatus}) + + return powersupplys + + +def discovery_checkpoint_powersupply(section: Dict[str, str]) -> DiscoveryResult: + for key in section.keys(): + yield Service(item=key) + + +def check_checkpoint_powersupply(item, params, section: Dict[str, str]) -> Optional[CheckResult]: + try: + psstatus = section[item] + except KeyError: + return + + if psstatus.lower() in ['up', 'present']: + yield Result(state=State.OK, summary=f'Status: {psstatus}') + else: + yield Result(state=State(params['ps_not_up']), summary=f'Status: {psstatus}') + + +register.snmp_section( + name='checkpoint_powersupply', + parse_function=parse_checkpoint_powersupply, + fetch=SNMPTree( + base='.1.3.6.1.4.1.2620.1.6.7.9.1.1', # CHECKPOINT-MIB::powerSupplyEntry + oids=[ + '1', # powerSupplyIndex + '2', # powerSupplyStatus + ] + ), + 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_powersupply', + service_name='Power Supply %s', + discovery_function=discovery_checkpoint_powersupply, + check_function=check_checkpoint_powersupply, + check_default_parameters={ + 'ps_not_up': 2 + }, + check_ruleset_name='checkpoint_powersupply', +) diff --git a/checkpoint_powersupply.mkp b/checkpoint_powersupply.mkp index b2633f067d99ebb4deb896c616024b283e1161c2..8911bbf6b847123e369b5bb27d0105bf049a5f2c 100644 GIT binary patch literal 3093 zcmZvcc{mde1IJy7q=a8c3?awHjESFfBG;0zkSNVLHzRW`70J!q#~eAQA#&yxCM0uY zScJ$>Ipzv`pXc|yf4%STukZ7GzJGr{fH)2g+i$#%EDWTZGt$G?$K4zK(AVdQvwuLK zudgQt1OY>oz-mfhg&?p3SOKEo<>AY;X&>q{OS-f_&vq=*c<!7rQQvZ+x0<P;*@3KL zv?%y0z*<*{E%t%29qvKK`!or`)1UcNDOrm~&(-8+HFN|fCMlbO+4Pl4ngTlfehoN( z7JTLWuKXiL!)juPVLNP8=)B>l+IbEC5MSaG{k+$%y3!??&*bKNNd&)6zB!e4cy;j1 zRou$=j}fl8j0aKnI<5GS?O0dH@^Q!&U(ENN3hIVUiIDlXa$rjQK<v6!Quea!A;#du z!@t`W_$pIUeCKgN>I)w?6Mc4pMz#ka<t-`i`%V`}LKS<!sfP|m(|S7=yaC2n3UK|# zOA@8e`s>ETI|Oj*QrbxZp4p`;Vje3gp&w3;#=oBxG@R|a;YVtJlu=p)c`W5D(SQAV z%jRC}_0(BSdlc;qS0xj~cZ#<^Z$t~ms#c&H?u;(>#Jig&6b03JIRw7Rk&Oj!FP?4Q zvsFb`SK`2SbvAjPnuB*l1%KbGyb^i|!7d`GhjSWxQ(IA^U?hEW#EScyR^<4cM{>I1 z*T6Y^z*N9S15%^WuHDNJh%epM5i)Hk&rvW}gT{W?sp-y#i4O*uZGJ7hmCETOO18ah zT2_qygbWFNae#kh&e+6qi83y(V{3G#s~B3V6WvD)AidL(hDE}!Bz?hFG$xoFTEjbw zj<K(PDQ-M0ti!tJg~_7+WIpesTKN-imnO>xUbyUU@TN-CJaX*)-xpTL`@8FAnprxE zgLQNXYlV+JQp*t=>{gy+^D}m`5xPM0AKPz?L}f=~RcrEMLu&rE{y7y}FOBGHF)^Q5 z(MzlxLByim*$HY~H=W^IZjq+pz{yTlE9qy%bKiEpV4oBwuG8lO^R=fKt6kl+-S#CN za`jsN1+$TLUz=u>8tpyi_~p&u^|M=m*5|GXI^u>q@loBZ=p-s5f3Xi>21&sW+lJ{a zL5&-01!Mk9agk3f1@NuRahb@}L4$p`{ac5w{3pZZZwryzN5{&T+sK@r=f@JcFNYO> zrZiL;W62(IO6qMTOvR&s`R>_#CG~?J>^YgJ1SXa0agFuA%c&7}h7>OYR+x<r7CDD_ zMmR1)%h%&uKT)y{<Q1b`MK1ZJp`-5m0_&!&*M)CRvl6^Vg>Y%!kEjx|JQZg~|1`0Q z=IL5S39yNo5brERi_%g%mt$`%dYD8U?kdhU(gVL47#q<mgcaMO1HVM$a>|N{oY>RV zs)Biku;73QN;qTX*V0?*!xGuAADB;2y-V3}jyWv-XmUVlO)F}ExYK-bCyabLa`p&) zxHWRPu5_5E`D(Dew}i;z7#_;TxVTWD;V%*_L@D2UxG;I#f}B7C_osKkaiIkUNpI)g zUcXTha~))1sP7>6UJJ6pjmVf&38fLeI~u)$7VLfK$M>Y{7{h)+?(dODd1<@8!5+48 zX@>gVd|CJx2Ap@KFoR(falmfR99IA@G-;xj`YE#{h>m%vj>mA;f6)@wC)?@@6erJ+ z0mf}kJui1}HvuY1dhXigpDl?Y-*9kPfoTJH!)9~73>H3@rjVViGV*;K%}wvi>)M{= zic+tZXD*e{(Zpi?vdPErNsO#2yn47rAX>SDl(a<DW-kTR;w2sAer%k&B2C?tT`ef; z)mNy})J_^09$CW5T4s#|b@YJ5o_KrH5eR+W?g{ip7tEp8299D)18{cRmFCU3NIWu? zw%hdEyje{H2W7A=#7y1(q^w}reCAq$k8?&pv~2FEFlG;SG3zSemr(BPL(_CWcN&z6 zS~_3DU0#gp$`}L7=*>M&y~QUc%ToN8dP$<h&x$Ne%8%riY4R=u?^54m;+<NlvX-}y z7BRU5ST%elobE0$XxAE^UiKR;-x6<_@FehEJdcJ|YvatvBX{L-OZ7q5lgSR&cr(yR zS#WUx<@EPuAW5P^dUmkbogmlt60}6|6mHOi0Wzl`-Z`p#O3(M_l+9NOClz5saxTS0 zymkGYtV=54NiFWIwy)Lc#7<@K8#B=yhiFGwX=e^UUo#@7)TFQE@X;&w{nWDsrZtaa z0%cR`b>U?Vn2BNM4IPzr{huNdORcFNolIv1`OP`CbF=j7>s_tW?rT)dExMOMz9$k# z_I@HCTlU_E_Q4&)Qk#`mC!#FHDvaB$O-3fQu5FAft}X*K<BG@?NiXCj;3ka-7)W_w z*l|ZN*nfq?lE)=_SFa{9zG)C(U{+sc?HsLjujl;hu?nY<3X+vjp%?~CbP17zJ+M@2 zkp<PjfembTGrg;Z-7oh{WY!yc`q&*%*jOTU#dtXWXBKDgzEfq?u8h8(Co?F*t<wxf z*jDEbD+$2E=shV2Z<<#;(#h|3W7`76<8PcYI!_9YhRz_jA#ugTLr!QUN|)Ei*f`Va z8T$u5eX<NEf~yR*{A$g`u(Fj6NbQ&Emvr*mYq+Tjyl`*}9W$^1|NYriD38b+7(fg` zUzRNmxP(UUzy2Od<~sC;vz1CNMjmk<8b^$oHJ06t<?3D$m-0{?uBh#)<D@U<{{^0e zKu6*8Nr&p8XfH%ZC8UvL8m?OIWMH}AL7#D|-<C{~&&gdn<Q?X0l3d_V^K9`-?PI<j znRqB4cL1c<b8JiPRf@q=r9P)5WcC9c@ci@c%>5CwwaHHjD`#MBX*9eU-sFmnQwKHS z-175Al)%hd3Kq&b-F1yH$dnbcmMf;&5VNc)Nmz$=+D2&HYI5W`sB(hcSFDtjS19qa zC4^Vf*bKxQ-|lwsDqb+s*K&SAD+JNq<b>TzPMmRZX*IUGh@n>o6HWc(3c*A@lh3*` z*Wd$S8E=bgH;m{_$-?14Qo;2m0v}C!+s4!IOH-qPLp_uuk@JKQD&wX1)#`-VR)&;t zx>sOw%SeU*UAKvqkrt;vEpU~~fTxMLWTX%AJv!i0Hu5uAwW4|<^8Ir??!VD2`Y@3_ zl|0irKjv2VCcfz9)2bF$P#;iC471PS)?OwK2br-aCU%p=Id6*-5#w{ucIrkylxSw_ zmZ^z|d3e}548uY~bj5Ms<t#jSNC=<vMh|MuS%zM~jaj!-%6#vJSCy*;2`_)FoA6^A zugOs~HVKz@bA#OYRIE;-3|$4WlJx=~2!wD{E$YFRblsYImLr3uviT)fptqpDs~yev z)4MY6O|C%af4u#eYrqx@Twa65pH|_s<*>TT(NRSfF3eKvK6DDR`UP)mxh;btEQ^^9 zcz!0}sQQvoRDBt%j0Tn3QP(xdm2r;p?7DX-{249gsNXE>g1Gxz14IWwawzR)+cSFs z!SlJW{)TjPK0hW275G%bp0=1C0=0V=?YxqG710_LbGI2i23Zb(cK;gH?jZfq#wewu z?P|`paQ~(M6epwRAjFN+0O>VNuB?4Es<3TVGyH$2{wvzztLe{&NuDPY2YaV?Tz_1s zW$dW`en*V$v^)N_&OnDgmpJY1{*2ht5y}7O^JSbC47^ljiV_~U^OZ&AdPErC=cV!u z7D8#d-8ltim-?@^4>knUX5YJptnkt@h0lquY6#IpA&S(X;V9E1#HnOh|MpIp>0R*b zhGej3LlRNzTi?BC6nSIti|~*=zt%kfLS9~GOCDEsgMb|4DLwq2O%bk|C>6sJue8xp zKd7e@BDr_vtp1+TSlSFK%1KuR%*fPeX;*unH0>C~MXOk7wc*zMDEFoap3ajL`>*@v z>&>URswn$7zNY#ob~moxaRIfDU7h^1jA(+mN-#tK0^E~}_fK;!zNb{1pafj4TjYN> zPbln(gjzh3yOp))NJZ|Gr0q3CZ);)v4?coK9G9~fvtBr;Tx{D?5Vk8VK!xJh+OKy1 zRYFT3;Z9LyjX(2LSYzA~^`UjhZEji16eoT;{xf|9yUly)z-yDy(+lUg{w;I=+P;5a RjL!g;*@`eK%2de2^dISo_Ll$v literal 1434 zcmV;L1!ejliwFowk=|Yc|6^!nV{344X>N31aBp{Ia&vWXaBO)kGB7bXFgG(XE_N_3 zFfK7JZEJ7<?U-$E+cpq@^I5;*s-jT5*@`5;B-4-&TN-4++Ae64VSr;8icH5^WKxwV zr$&(fz9S{Y?}=BmDGJ<UAd<+t<MHK=WFkHkJKq=w>9kt<i7Y>z{ie6$HangDw(GQA zcgJzD%-sQJ=LN_!8KeMTrIYiW`$4$3f?SS7YWa{`7bE+f4ZCs_H^T94H;_G%%UFop z?m)<1D8@CbZh$plS(rwNj0D$e?*)&fNa1M2!do~K5tk4oNgM?{WRQqEmO_?e!4z<? zWu9H}E8YOKA)_#eAsXs(23$xm^Tf1OH5ZVubT|lPP=4M8Qe5%E1#!n?5e)iy8lw-^ zNXjJh_x4KH?U6{Nutj>KrH4_>G8DVFLgk`*?G~?za<;EsEIhP&4@!dvW2WqG5Yi&~ zxL+A|Re_9T%=CcF55$`8YxM~lD+bW=9QOc&z_lli?bz;owLOk_KV_ftC}jgB>)M`u zaDA{KlLX;ya8uQ{Y$s_RSP$FHe}wUG|C<T^J>%bVmg3)anjMP&7m0sUuVE8|!z_XW zU%Te|b#G#DfVpmIqLNuIO%p{__^6@{W>BKYI!fmGq@(0@a4GR;VoS-+CkLgnF*#^g zt1vcI7|(iF1y#|rBB;z+y((UcTix_5H7bd(ni;P!HC{cP8_kFRJO9O;+ZY4iEB?Kf zdS8lvx80`re+kw{=r@~xcfYk?Jlk$HRIN@m|E*5jb3L5@w%7Jvc>c%JERt-q+;jCm zD6e1b<ypFS9r3+niYb{Juc7f%0~im*AmTT8oRP!E!LN`^8xbEcE*oMv%$W3{r38)F z>Id(lknxQ9aPr|2P8eq?X0NmSI*!7s4kn%!{Y__nA2ug^6uSKQ4gh@En7UEstxAk2 zqtbB0*>5ymZNJL7MM4EJ+#>sGMbGh^hSO;{2R?+OfMfE9jE|E>76u%KIS*A@*P<8V zt?(gbV=-ay_xV4zZR_$Z7$-5)T6aNwi@VyLfQ6Q_nif3z<M`;$v%gM1Tr}RF{_gu) z<XlUf;wXQ%UE6^}!208p<BzyAZKLBY>UdA<oa^x^8#=%Ec>3YQhs$IuC2vJZ_X>?Q z?T)RsOFRs8JlquVbKm|2pT%#bQ_rca>C@9H-nt$=r?S$YvP0#3szWk<smWZJODyYl za|=)Gc<8@OtX>`P(|i2vX*0$!2ysD9`xrG6Ln_;J_vjDUFvw$>Sv~aT-Y^~v!@x3Z ze}aLhOsrSjRSwpC149Oexb)|$P*=NOR4S58#qsAlzLX(yIIr+1hi8vc)Q+-2bQ8(l z+RTb#8nJjVvv*&)tDW5Fs$^qqJ4l0ZR)=rvI2;~=YH!i);zV@_&O)hbOR~=rD=cfF zCKmh#GgOkVshig-V#9|wnFVhiom><jK9<|Da(%Z3uTV8ltVJIyKXoTPW1%i(GEaHY zjrz=kpXVIKi6|yP)o#A(>Q$yp783m`$62$+{3mC#UTDwO=aL2g*`-@rC|7<zW)l`? z{Yj8U!8P8dVdEWq7A&QSjHMIYY5Md3ohY5K&gM_rZyr@{Qh_56tEg6!<r}|l1T%YI z?FX}-`Va@>>p=h_8u+k_e|N3NeB)I~%&OVypdqunNRH+N77~){HSzji1CbiA9beEI zURgZ+L|GK8LBI#bm$bF$I5t_w*r-*jdZGDjg4?IaIbK)PfYs*5QY}zxW%M_-Q)X;z zs|)btMs>_(I^CjUI(aKw%e(0|y56ep`D)Owr-#FU33G=a2!bF8f*=TjAP9mW2!bF8 of*=TjAP9mW2!bF8f*=TjAP9mW2!bF8f*|Jj55mk@_yAA<09@q0#Q*>R diff --git a/packages/checkpoint_powersupply b/packages/checkpoint_powersupply index 992276a..8787d7a 100644 --- a/packages/checkpoint_powersupply +++ b/packages/checkpoint_powersupply @@ -1,10 +1,16 @@ -{'author': u'Th.L. (thl-cmk[at]outlook[dot]com)', - 'description': u'Monitor Check Point appliance power supply status\n\n- critical if state not "up".\n- no perfdata\n- no wato\n', +{'author': 'Th.L. (thl-cmk[at]outlook[dot]com)', + 'description': 'Monitor Check Point appliance power supply status\n' + '\n' + 'critical if state not "Up"/"Present", can be configured via ' + 'WATO\n', 'download_url': 'https://thl-cmk.hopto.org', - 'files': {'checks': ['checkpoint_powersupply']}, + 'files': {'agent_based': ['checkpoint_powersupply.py'], + 'checkman': ['checkpoint_powersupply'], + 'web': ['plugins/wato/checkpoint_powersupply.py']}, 'name': 'checkpoint_powersupply', - 'num_files': 1, - 'title': u'Check Point power supply status', - 'version': '20180731.v0.0.1', - 'version.min_required': '1.2.8b8', - 'version.packaged': '1.4.0p38'} \ No newline at end of file + 'num_files': 3, + 'title': 'Check Point power supply status', + 'version': '20210810.v0.0.2', + 'version.min_required': '2.0.0', + 'version.packaged': '2021.07.14', + 'version.usable_until': None} \ No newline at end of file diff --git a/web/plugins/wato/checkpoint_powersupply.py b/web/plugins/wato/checkpoint_powersupply.py new file mode 100644 index 0000000..5f5ee3c --- /dev/null +++ b/web/plugins/wato/checkpoint_powersupply.py @@ -0,0 +1,41 @@ +#!/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 +# +from cmk.gui.i18n import _ +from cmk.gui.valuespec import ( + Dictionary, + TextAscii, + MonitoringState, +) + +from cmk.gui.plugins.wato import ( + CheckParameterRulespecWithItem, + rulespec_registry, + RulespecGroupCheckParametersNetworking, +) + + +def _parameter_valuespec_checkpoint_powersupply(): + return Dictionary(elements=[ + ('ps_not_up', + MonitoringState( + default_value=2, + title=_('State if power supply is not "UP" or "Present".'), + )), + ]) + + +rulespec_registry.register( + CheckParameterRulespecWithItem( + check_group_name='checkpoint_powersupply', + group=RulespecGroupCheckParametersNetworking, + item_spec=lambda: TextAscii(title=_('Power Supply index'), ), + match_type='dict', + parameter_valuespec=_parameter_valuespec_checkpoint_powersupply, + title=lambda: _('Check Point Power Supply'), + )) -- GitLab