From e5f531eea427dfae6ce7e18406e00ffccc044278 Mon Sep 17 00:00:00 2001 From: "th.l" <thl-cmk@outlook.com> Date: Wed, 16 Nov 2022 20:30:46 +0100 Subject: [PATCH] update project --- agent_based/cisco_cellular_lte.py | 9 ++++- cisco_cellular_lte.mkp | Bin 11604 -> 12059 bytes packages/cisco_cellular_lte | 2 +- web/plugins/metrics/cisco_cellular_lte.py | 40 +++++++++++++++++++++- web/plugins/wato/cisco_cellular_lte.py | 11 ++++++ 5 files changed, 59 insertions(+), 3 deletions(-) diff --git a/agent_based/cisco_cellular_lte.py b/agent_based/cisco_cellular_lte.py index a53be97..238688e 100644 --- a/agent_based/cisco_cellular_lte.py +++ b/agent_based/cisco_cellular_lte.py @@ -13,6 +13,7 @@ # # 2022-09-20: added WATO options # 2022-11-10: added upper_levels to perfdata for scalars in metrics +# 2022-11-16: added band as metric on special request # # sample snmpwalk # @@ -63,6 +64,7 @@ from cmk.base.plugins.agent_based.agent_based_api.v1 import ( get_rate, GetRateError, get_value_store, + Metric, ) @@ -283,7 +285,6 @@ def discovery_cisco_cellular_lte(params, section: Dict[str, CiscoCellularInterfa def check_cisco_cellular_lte(item, params, section: Dict[str, CiscoCellularInterface]) -> Optional[CheckResult]: - try: interface = section[item] except KeyError: @@ -412,6 +413,11 @@ def check_cisco_cellular_lte(item, params, section: Dict[str, CiscoCellularInter state=State(params['state_not_expected_band']), summary=f'Band: {_cisco_gsm_band.get(interface.modem.band)} (expected: {_cisco_gsm_band.get(expected_band)})' ) + if params['band_as_metric']: + yield Metric( + name=f'{metric_prefix}band', + value=int(interface.modem.band) + 1, + ) yield Result(state=State.OK, notice=f'Channel: {interface.modem.channel}') yield Result(state=State.OK, notice=f'Service type: {_cisco_gsm_service_type.get(interface.modem.service_type)}') @@ -509,6 +515,7 @@ register.check_plugin( 'expected_band': '12', 'state_not_expected_band': 1, 'CSCvt55347_fixed': False, + 'band_as_metric': False }, check_ruleset_name='cisco_cellular_lte', ) diff --git a/cisco_cellular_lte.mkp b/cisco_cellular_lte.mkp index 4ba640e57dc1f03ba4d8165c9196cd9c6f93d6e2..7ead58b9570f28378c4d712f911b4f05cf5f71b8 100644 GIT binary patch literal 12059 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ų(9mFD>$n#fh{p-Twjqd7|tW$;ePZb5yuWoGL;^4`OJ0xBI zp;bU7J?y9Ak}^S<ZPRp+{D~gjpLVh7wj;@|*nK47!4zZA9pv-Qr|a7ueIog@j%WRM z!?9<SYbWgjBW;ek?GR-y1pV+|+|Xk6IYlgx@YrQiXavjv8DgU|lD`3$nzW2`x9{9Z z6K&x?;sHXEo064S?%1}Sva`@I)slPrRZR$OD|Gw4qA;wDWS%m#+GFZybNho~Uldh| z`^l)6nh*&&n{+B}V!m{7-HH2}94B-oktBoS9;N?$a{>mBn~})rpUd}4Dgh=JWcOcX zxHnUu-7jR7PwS+;U=?evtSOpfZ9?4FgdXsp9&r8nSGY}5H@IFc92QjtNtJ&atlSF{ zao9WjqS94@tg<iJ@<n&-6b4#?e742n^#$<p(`su*PHHn2_z&kM&Ox#F{hmE7dF}D> z86<gcppuvV=o^fWwBRQB(w)1+GqB@|)LMhSDk!`it%IbU&moociQjLGwlgf(0Ux}c zQkN^ze6|N;7SZ(`Fd)g!L5`DW;sYDFS><|*WqOCR`S!$!J1uHrfMe+5Ic*R94RZS$ zb@d!3#%POy#(Y1aZvt7ZhrW``)wI+H`G=qob;(EJ<K(i!+C71F2j$qgUMY8Lef<Va zD3|IgJ8i1Ht<E|hMM>f*2<sCsHRoA2qxiJNa+(t$Q26prLZ5;|0*I@y-IrOlbpRf7 zT!`{Wa*QxR`H}~0VBB<e()lT#)}>NoZjz4m+looHP$KQ<#66Moy{zyQt2}of*o2YS zbC8=Se%jg=WFTGP(x)80kh#A!;UJ1N8--(V$!dOZkj?xPXBwJi3;>afBzE?i2wHhI zrU(_((VW?Odj-m{@02+aMN_}b2s#Wnfd=ny6i9Y9Rc)x;4nGBS_dL`4t0BN&oQT`b z#xU@>mo^qQIZA0NKdK}OU`R$_${P^>9Nr@G;Ai^bH^8RQ5(-mXRx(O@9bz*tHYh9P zGkbemuf=C#JX2#@8YKFaX7$p|@D*!R_J>|i3mOqHM^rApm~|WrmG{5==jUM2nMw00 zS!L<ZcOxIxBk1Q`$fH)T5?MOphP1H#wH(w^8iiL9wm-wUj$fHqy#2mHiSy9ryTdS# z3OYX<_Da7OSiTwDV7AR`Fh?Jxc>Qa|7V}eQKh`G`b&JIOT?vP!#QmZPXuX)?6mORL z)<G-VaVvB;G<tu?QHURc>@#j`e~rCCad=7ZM-pB#h<z#h3otyIW)kh@rmVI+<d1-c z+4!77FU*ANx)IXxArx+G_Qz@lQTAipZyouXN3Po32+Q}9V3*ST?v9r}6$f45BMx~R zJz`};o7td=Y5K1OHWge;B1hrHhZ>PyQCG+FTA5dwq{2-;ag2IDsaByNEsDS&-_u|` z&jOB8r&hoDwP3y73tz*>NE_lszYn*Q0Fz1D-X6EeNHWf3`XFt06RZOl-dlYY1s{+X z9EPvO1RE2MoMP;N{nR2&VW>wm4#NzZ#c^Zqw0&0eUPaZ8&*q=7wTm#rMlIFN`)0{} z@UJ?#ZnG6VCjgmkqQOn#k_7M{5V;gmw194<@ch{~N?fCg0l{*vOi|lV!CA+)NDHI; zo&9!w;_n3uv|~3)_Zy`X*W!yYu?Le!&A_3%Ai!s(*o81}`(jr?!3e*8`~$6ml7A<Z zz7S~@B!^T20@X5cN}k_n04@Ssl|-@x5sDw!8Itd>sYONE47Mb$;sZQ(Xhciqh{Z$S zc0dce(Pc8R2eSYP#!<Y&)ft59LyUY9Yi#*Ahmqp;T1pM=Ja6`72^Hl`kBe*(?vyRz zf5xe-oO~8NZ!$I&GE2(_TNxt~NqQfG*6OIYBdh@oQE^?xoavaawWpsU$;;5va7oq? z$ZCKKEJZs`M8M8z?FE9r{yvQE<3-|MHEGYiSj|(cVNeSV?z|6)8MH7anUd7^DU4{D zCp&C=7104U1v)nYyVa5Rvi7i(^W5U{y4dd=+cXy~f`E?=@O+3xn=ppUA_A2roSPJ^ zx5Qf($mv4%kx9=0wRN3XLEHv&Prs?4+3NT#tf0iDQ_@Z)RETyN%1(TJ4H2^%$!$F< zj{B~NVf4;6GhyuC7%pV;mtRfbekAWqK=Rl$igErD?YhLRn{jM&#_oE6SeR&tnIF+- z(2>dxJA%0(i~PABYZZa@dtRoo^94FoK8?n@<&{I+j4o17A%xt!t1>Prx=aDm++?Ii z+cY)3Z8g1ZEwlQ75xRwnkYEo_v5sP4X%jDuzmUX5j7a(D;PP6i#kMSe{<mZjA?t7N z2w4}2YPg9`5sc<uPR<H))O&q^X9@1l4_x}>1UaxQEbuG7*v=@lbG_&E7NGW>s-0(> zsyxgXSbppd<gWI{&S|kzoQnKlf})gsO<*a8^%I~rPXuTq%U<E0S#hx+Q`&fR&feKI z%ogHh@GV!#rN-4bV;*}lBT(wKZ!Dl(x7(;KbgW)IA(}0;=>lq4iTh|u68#*xwB?SN zt`2%{_$^Zl_GJn=mY`eK8<U&<Oc?5DG1gtuPP9pp@@GJ6BPR%%wv1=m(C#9rRlY6| zj9pH1(W^~@1ojK``lu|l)IDmxD#9UxcMt;(r?Y5%o*#Kx7hR$1$-LmQb6|c(j4rW$ zb+u}Y%dcwGRWqv>Z4*r#6TSi`Tu%z!=S8_5dsaGZZGJt2b4R67{pv)0FHu2BH_o=! zx8R2x@E#1B`X%n9yE>d^UF1;Z8oL4&r(<xX!LKA#VVMAeau;sLh-t3Rj$RZA=7{l% zJ+*vXrM$;7U0wBKc{QL07Wwh!W>Gdy6RaqfNh_gB9G9zwh{g#*zyUUt%F{_J_LnH3 zEsuVIRdVpJt1;Em`ve@Gen~pT47KP<Ghc{&dm92z8)Hl<-1pTmm-*elOb7(Y*uoS? zYP)5b2m5C_^4}hJgCIt=e!FhXrpXImpN1A%)6MXt+jc7d3&7*~yfrCh3e4$e%uR9; zo_<hZ9^N=mkwQJfW`3jk2(}f42a{u{MWtn0`V?MfCSO%x+8{zQ?EiephYo@l6cbhC zD}g-iq9Y2iS-XX{n5f6oGP9T!rcqIw+O{n%>j;W@xskEfta16GfA@Umr%x2$g`Z+| zBcRFluBCN<g2pT&vzr);L3G~ipU=&>YJM;7#px&7T9(d4vE6o)apo{~B?=2QM%-;w zG=5&x<K`K0U2ck@El^1~6OT`<7Gs;}L@s*H<z6n^g{vLb=a5W!CQ>^Ri7lAr{RcS@ zeYD>BzM7h;|EPUM2Mq)4D%Kjxljn8aWlJ$iJ1uvKV*PF-_PYnYxVm(ci?k8{T+~kI zZ6eTpL~{x9EZ!wNt&_GH#J(6=$_`psTTlzZDmy7wkX#s!se(8<L{~eXQL?kGE-heE zTUS}^|4Vs+#w=UWSIGA}ac)^!jpoP)4Na#;$z8S}vw62aj=19kr$+A-hG@|Mm{LbX z_^WAO*&4Or_ZG6+AxqS2s<#qG)wjln0RBaL<m_aX479-ViV}ejG<^a71>%2+2OLm^ zTJ3JeWf%kW^y-(58W76GDtDe93b>G8O5@Km;qDzj*Qn<;MGs+n$Lo$glZoV}oD<|t z@i!CMbn=`e-xggFa;Vh}lN#k#$;?Yb>~LjTPck0|X^Um<D^V9@1yW`+*CV}EvThZJ za#$%{Hxe;DvdTm5FYN8d)_fe4CCJuq5CbxCz*j&$R%yM@E8$S!#TxKq=UB&RoEaUV z{qXFpC!7rTuOlW#j+gxIb4qU9cf}Kl4^6MN;ZyZL;@^tG60v*hhufEh<6x-wpLX*J zO)`;K0N-ZD*<Pb?v?A}Xi7(=)a{j)-Lls%@ep(BR@UOYtT46)9WSmrF$mO*%XZWIG zM(LNem!?w(D{pl;FfEb7o0JoNy)XBplf5Uqwah$}2?epLrXL~BIdReS?v*~`I7ZBs zvpMHy<oTJBVZfKb4R~_o9eYY3feNu=mRZYiJS3}iQNs-`IDQxSoN;&Iv>lF+1tz@* zTNM)yb*@WfSx@UI5?CK3P$($aDDvVoK(12yqezbELKDo@Dtihi_VhW5-X)Amphf{t zqZ7D)<7|Bd%V?kmq^*l-e|3Fd-$Ljvf2RAQtEiOfM84L!*0;Ko%u9Zk7q5LN*B@uA zsdjr*{U9E6^6U5DnrxwfYcz)dh20vUy8h}c=#D!5Mr}aA!#bKu<0nV_%S`r?i>Dp2 z$Y<i;f|^&i#E-_+UxkA-gtk7%`js5cQ8smo^B9?Gqd|f|zYwB#%YUy2!ZHPYCCJV& z>CtX{&}y{`QvstBUb8gpO4og~7$2ZX>-{yCoD27#iC1qMXn%<SS>9@`Bx<#rt*||V zC3d`k4jKq|+`_-ric<AVYII{4&IHgeVy0W_2ci?hO>#DPi<Dj|X~M0lk3meu^>_+3 zC}-O&G8xKj62o%38`{M>`+n${1D5gfalN!|^e66i1pnO-!P1tLq?g=JNY)sQ=VUN1 ziBB)N(nfK!921T{$Mv-Y-o^|<{fs6BPQ%(t5mN;PN|^VZvuHA}Nqpn6XX}Z!zcd4* ztKdQme?wNA!`b_f7((<#!>qpBoO9E8WlT31_#$OsSsr-f^zG)=XPc*u{>GD*>?E#x zzx#gbs(B?JI7~DPGiSjfLQCpNql^PHD7|B|jQ=VX(YyP4<5hhyF&%fUFiDxk_evQm zP$sc$W*9TFCx1}E!aPFit3nsz7&0E-aN=jahbhlbKz;2V1@~}o;`rI7^4}Xd>_xo2 z5=<S$<2iyEy2qq&M}Kx0i#7+KOYBjihtD-;Yot+o=X$qf{+a%+;PY2IaAt1k%Hy-+ znD;Ro2YT^OpE1ePMyDP*XE_v@QUIg_U#)|R>&v#=#Bjdij+??RBKef{r{&$<K3c*t z-(y|U9Vw_zrTj*?o~3!$mia0X?No>y^>PGA)%E?-ozM?M2e;NQQApaJTFzk~&1<}A z?UE-I<m6#eBQ#dFNjZ)ax`PBn_J?(sX0Z(LoJ5Xpmz|r~zzRB&{Wv8cM_2q7jWttP z^i?b63GJ?C$YQhrn%6rnP^0+13B1+>FpCl=K5HtU@2iN`3w;RKi~1KbySTln7(|Dy zB8MRwB@Mv~i3s90ZrY#zECC{tmB#jk?dBcCb^fy3MF2-4rFoT54bhyJ7v`l~BBGJj zSlF}OAxV~t`?sW9%w^dUZL%qo<*saTDA!?j*yeU`y=>K`mFYjr_np4f;14aeT;4Lc zT4HwnttPL82`Uo{!B62oaJEc@!`cR3N9~cLmSX<R=0yy!Ih^M;j7TK~UH}~8KX^u{ zUi!KY?v~rO20$m>A>DgZ`@r$6f`Tg9Z8U=m%>JlAZJm>@gOo!2J8nDrE7Ic?;4G1k z?zmcNV{*w4b9(vz@A2zC+N;OEAcI=F38+DI_~oh4khjDKGOSp!iM6RwtvL9&Ns(%K z<JbYhtMy9LTAzS)5A%K!zlk5^-GhJ~dQ3b=AK(_3p1JD4PupADXApQsruKUOs(rQV z6+d`^>F&PEb@WyTysYEOHIPZt_;yg+`CiYcVL5@&3pd-fntAGl?Qj_Rfo4nkn72z| z=2uZGiE`XYC0z9HP}k(SoCpq}L$eKSw)C*I{^syS>|*cWG?LIZObqV%=_|S5T;0ID zJ%-RHw4c0shpjH{lW{Fq{YsHmv)jaCl7>4iy_Lfe`$h)6`ZSlJ;A(&xk)5mquVRhn z+7XNzMd;N=Don$g6z`5;c0T=;`pcmVXi$+n;Z*@&r@WCGei9QbeWNjuHp|M5r&YN^ zl!C<{+KQ{^J8N7k=yc4KVatXAcf~o|L5;z;9u&=j-PC<rVeWFdjOJ0L0#!;&pSoxj zX3CZ%EJjicCwD8;V&}4NEfoMur)xvCHEVFHVjZ3H8fyO;6O`{dco)4mE%7{dj6IWW zb^IEs$hC!G#&j!g=MiZTs1HSm8Hj^VKAUek+Z=`tBh*0f=`ha1>}X$bo&PBctUnK5 z-i_LWbaIA-&%p5AmVQJr`NVQ>Lwf4p8*UyH(#y4Tsf0cqg>sH)I-DF({*cQZN9XL5 z)0<!vRTzokVzBat8XS#AB)h<lqm;KHd&7WbfI5XcC#nSez1mV46_c1PyuOEBMW1si z2>%mJ{BP$DryKknY!%Z=EsR&2HVg9hZtDa{WrGU5OwyY<C|qwd2*!dDrD^z3_$)f# zHQ;@VXvcPFr47r^vN6O_`4pzy82K&o{trogoH|R0_dlFdPFT(Z+a)KR2v5Z7QS*b} zI1&Y%PA-LPYFn}dQ1tYK{IuW7vcc7y<1L+uz!p{Pd&g_d%(b_fyo6S;`HJi1R)WK| z%R?Yj-e!mSvj5h)1%KaFeFN9r)EdRZ=GnB+u?S?U0Zh0M%T9x<gUjctnzFyOOv-;i z2$X|&z=Dw3`M1;9<88fMTb<>tsX-UVk!7fYZ383L;bme%$$adoBLod5?W+F;L~ICL zXWYaOYnM$#$Lav;8+xn~d=HO_hHE?-y*hfW6JZVPpJ;@hslJ!chd^AG;oQ^x(M$_r zT=U@opbKDHXJu)}z}o^hou+rC)Me&T+4r8*xiSWgwEM6%eh@(DKNe}vM7vzHmJ9eR zJ^JH2f;J7H|9be;_JCqN7aVcLMQRkH<U70NJ#vJ+6jIX|eqXbl&m#2NVedUbM{~mN zb?pniiwz#l5Aw6;twq0iIn}<S^LgF9W;OO+|F{etFglyKF8HR=H>5rc=kK=c9_Qd6 z+ntv^vliDwO!yf{G(B5S+L6O3C0Yz~-$!F;WwGz|ILDgT_4l^|C8niJ-N#CgenGmL z<#g=PIKvO%R2i}GX1}gcUWPHxitpqTypV}twaVY3#-syDzH7}Kl*IXJUy)b%DQ;0a zyTO8s*O(^oa)a^foKlHCBRhICUZ7-G1!~#8!@&z+IJ1G!yQCBGenX-aWBn^0V|^nH z`Ra<Vpy!EG+%qqE)jxF+jSkRPH)=zauY{jo1cnHF;%C9r=?jKZzgN9K?;`KbVC>`K z9G<!PvJ>C1{rt(l;pkhHai_fNVjz@Yq!qam6(?mY=~;=v=9>oW`EP@D>^OK)>idpT z_xx&Z>yYD0gX6-Js7=)|)G+Ia{%7q#ee=M3X9eoI&hJAj586Q*^|Q)z1Mn}&b#&vk z68CGNEf0`}<bTAr{P}=!5u6qb5xDWpv+pK=5DISCgBA*|za9`=!2j$PpKey@MUxp- z;t_>^9Mkil%BB?tC82o|O~|t$f9@laWv24$JCZkeIo5=R)bDdJ>icra`cDLn-I(y+ zck%XGM@&AICWonSKFR#MP;0_o9#;CCP(}Ng?d;tg{bU$ASqonc&*TW1on9V6tPQ<$ zA{>D8z@RPTXcTTEP3l=B=5A^^@?{#(vQkvi7fpH@5b!+fs5njA41=@?G+Hyoo?05D zW>DX}$#71yZuEPmbLf0+^LMGr%+?Dlc&8xzHpAsgBkUaOef~@oA-CN?-yjqNLAd>` zX=#cC0X)JjU158Pc5@`MlrlxYS_~1<4J!WVmJ3ue&$I1dT@XD!L7Iu)X>Eq}M^`RC z^lT$=9*UZn0C>eKH9y%~B#Jy7DD*dnfp|XsQ2+{z?JY9b;=S1{XI_OX#6wRFWFu9# zF00C_6mJcpbBArLcBqXA(d#QY|2$0-KAkAhRJQNo*=4tXYHr=9?hI$+NC*eBrCOiT zfORJmYW!&7WX*)*WUu@`{@HWdJoW71jO^bCilJlC6eyN4+<K{LOUL&RTx8e(NuK|G zTrttoc&|x@X$uv}zoPHVq+{sq*UYqAw=2mS$kL#$?pvve;+NX)6*p<brMDk|2;JUO ziVd|enw6sUr{^rfyUJg?>R04YM<Q6VCN}joqIod%eGg^jWO1Z^UMK{&A9=J0p9w1J zX5Z%8i@8_DJ2^O`MP9YE`kKVP{ZP7IriQ(F$f}TpJsXX-)<{|+;3Y4-kf~3pUXDnq zg8v`2)gh`<g&z)Vrw~Enx6NSC^3zyEpuj@ti5B@iukWxi!oj3Qp0`I7q_E>4lo$tb zuMGn(#zoyp>9!g=6^yWrjvz0xg7<iPz4Y57q~D`SQ`MdIRH{~6*D#(s$syC5k9t>e z^yXWdj;3$RCvQ<=Yqt^!JttfDlv{?5Xe&Pm?0^3PJW|+tqX7J!=>{)YX^j5^IeORK zBa5Y6tbuNTTcDfDtDTywSRNqk=>woI>+-YI{*!yG_eO6E*KKsKRWS_Emq_RflPqHR zA2c@}t`IUbIZU15bc2>=&6*9Pli57>9d6^MIOwMhEPNp6K)xb3I&O@<xEMm`C(L8b zcK5d24%xHMsUs$GA2UaICvVH4w2Gw9p<}}+^+6M>`fwr=g+D%5qH~fuaQjL^@=uq! z^m)?r-7fZv*&X%~@04pzfqo2M@?FGxt+!n4N7}N}W7?8RUYe2W!NoG3$&R8;noPXp zXEHWs)%uUrw{}(NwT>~Xgom+ul!@VP8+Yvq6ZsiVx4zDTHhNU*^$PoCv|C3_{$EB8 zn&GVjlWhLq`R4q$9Dz)bV#H@K<p!m6kZ1Oqm0eV8TICmarE(V`ZT<s7`C_`z8c4!W zIm()eloQt6E1#L?AJe=?q`A^gKU>|~+STbnVdbA&|A^lP-F~-7PjLs^*z~b0g*cgt zi1CGmK3B9uw=jmHe)|pn6;?U*h~M-Gx-mcdYHN5D8lU&#k{tS7y4@F1QN?t>hI*6c zf}8pN(SCj^oLF^{j>HtM;1^bw#g`G=PQ!y})ZZd!-=)WEmAlkmW38vR<-qwIUu7A2 zWr3uz=5S4xz4VOzF^N;&-LoQ8yHs^YVgcn^-vivNT>{+Im_s%883=CiS7@60jKlnL z>}u@;>e-HPCm~9>b{X2HT=>ixm_g01*0upGV_n=n(jgYxX3+FLmf+TSXi8eHnwszw zeiRZ7!{j4DjBp`hT;r%)*r!d@cyx)yK^0dS65vz^5<brefqiD*ikgr&3H`wYyBrUF zdPSw%z#8u7@fN{s@D-Qs+9yjE*q$3KzGYC;DKgsGp?<z7t0V5VkJB9;S!F3N?vr^@ z%6KehtCAd~C)9{Y25n6oRtS%;EfS6(ZMYR<%;G(P=%7@QP+<m#d`sPz6#mlyQ2?K$ zJ7~>;R4N7P$+3eUWVVLwARR`jTFBC#%Q$>LZ0eMMHyN4)k<DizAg@Y1gBRHOg)_69 ziU@O_q1AwwNtH!oV)-ZV+c7k<UunQ@__Ev2Hew+6?#zpt?khmn1C!Pt?X-%KVAZ-! z_XMU5jt;=Tm(^jvMe5TzF=*S8gPoej6|geH6|NuGwk&v6++v=Uxhl`9vqD(VpSSJv zj^zobGXiwOHH%r|v0jz6{+T^4n3hXjdlP$WeuDW2r=+$I(p@B*gRKZj5doI?D`_Hv z65B-$0fBlcP4BQC+pn}sq;`G$SK2m|=!4L;VlwQK!0<p5$XwsUa$RRtQ0OHFwK5Fi z-dpPRIIu<~T5D}~o&&+RDVjp1XB#3=&j$%#f{wt<zy?~wYLU&O<u{^7%dn~MT9;+u zj%nJfjWcO}uBGOn@F0Swnq{E^);sQ|dnNMp$S1s%{~4$?{ak;69eE8+?*H6x{+}-N Rj&=ryQaM*)gb;y*_#ZXh$8!Jx literal 11604 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 Sd5XUPfj7Z1LVyW_gZ&pGdYP2~ diff --git a/packages/cisco_cellular_lte b/packages/cisco_cellular_lte index 86e04f1..12aea5a 100644 --- a/packages/cisco_cellular_lte +++ b/packages/cisco_cellular_lte @@ -11,7 +11,7 @@ 'name': 'cisco_cellular_lte', 'num_files': 6, 'title': 'Cisco cellular LTE', - 'version': '20221110.v0.0.1a', + 'version': '20221116.v0.0.2', 'version.min_required': '2.0.0', 'version.packaged': '2021.09.20', 'version.usable_until': None} \ No newline at end of file diff --git a/web/plugins/metrics/cisco_cellular_lte.py b/web/plugins/metrics/cisco_cellular_lte.py index 495c52e..3c7e700 100644 --- a/web/plugins/metrics/cisco_cellular_lte.py +++ b/web/plugins/metrics/cisco_cellular_lte.py @@ -13,14 +13,22 @@ # 2022-11-10: fixed range for RSRP and RSRQ # added range for RSSI # added scalars for all +# 2022-11-16: added graph for current band # from cmk.gui.i18n import _ from cmk.gui.plugins.metrics import ( metric_info, graph_info, - perfometer_info + perfometer_info, + check_metrics, ) +check_metrics['check_mk-cisco_cellular'] = { + 'cisco_cellular_rsrp': {'auto_graph': False}, + 'cisco_cellular_rsrq': {'auto_graph': False}, + 'cisco_cellular_rssi': {'auto_graph': False}, + 'cisco_cellular_band': {'auto_graph': False}, +} metric_info['cisco_cellular_rsrp'] = { 'title': _('RSRP'), @@ -35,9 +43,16 @@ metric_info['cisco_cellular_rsrq'] = { metric_info['cisco_cellular_rssi'] = { 'title': _('RSSI'), 'unit': 'dbm', + # 'unit': 'count', 'color': '42/a', } +metric_info['cisco_cellular_band'] = { + 'title': _('Band'), + 'unit': 'count', + 'color': '12/b', +} + graph_info['cisco_cellular.rsrp'] = { 'title': _('Reference Signal Received Power'), 'metrics': [ @@ -73,3 +88,26 @@ graph_info['cisco_cellular.rssi'] = { ], 'range': ('cisco_cellular_rssi:max,-', 1) } + +graph_info['cisco_cellular.band'] = { + 'title': _('Band'), + 'metrics': [ + ('cisco_cellular_band', 'area'), + ], + 'scalars': [ + ('13#2196F3', 'LTE'), + ('12#558B2F', 'WCDMA-2100'), + ('11#689F38', 'WCDMA-1900'), + ('10#7CB342', 'WCDMA-850'), + ('9#8BC34A', 'WCDMA-800'), + ('8#2E7D32', 'GSM-1900'), + ('7#388E3C', 'GSM-1800'), + ('6#43A047', 'GSM-900'), + ('5#4CAF50', 'GSM-850'), + ('4#F9A825', 'none'), + ('3#FFA000', 'invalid'), + ('2#FFB300', 'unknown'), + ('1#00ACC1', 'UMTS'), + ], + 'range': (0, 15) +} diff --git a/web/plugins/wato/cisco_cellular_lte.py b/web/plugins/wato/cisco_cellular_lte.py index 46a86f0..febe951 100644 --- a/web/plugins/wato/cisco_cellular_lte.py +++ b/web/plugins/wato/cisco_cellular_lte.py @@ -83,6 +83,17 @@ def _parameter_valuespec_cisco_cellular_lte(): help=_('Monitoring state if the current band is not the expected band. Default is WARN.'), default_value=1, )), + ('band_as_metric', + FixedValue( + True, + title=_('Show the current band as graph'), + help=_( + 'This will output the current band as performance data. Then you get a graph where you can ' + 'follow the band changes of the monitored device. Scalars are used to create a kind of ' + 'legend for this graph' + ), + totext=_('') + )), ('roaming_state', MonitoringState( title=_('Monitoring state if the device is roaming'), -- GitLab