From ff35f0c87f4dc9ea75b2e911d9cb397ab2c120f7 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 24 Oct 2023 16:26:14 +0200 Subject: [PATCH] check-health: reverse logic for RAM (free -> utilization)... MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ... to bring it in sync with CPU utilization. Also make the output more verbose, at least for the warning. ---- ✂️ ---- 🗃️📈️ Health warning: RAM utilization The RAM utilization on MikroTik is at 81%! total: 64 MiB used: 52 MiB free: 11 MiB ---- ✂️ ---- 🗃️📉️ Health recovery: RAM utilization The RAM utilization on MikroTik decreased to 65%. ---- ✂️ ---- --- check-health.rsc | 25 +++++++++--------- .../notification-03-free-ram-low.avif | Bin 6457 -> 0 bytes .../notification-03-ram-utilization-high.avif | Bin 0 -> 7527 bytes .../notification-04-free-ram-ok.avif | Bin 6772 -> 0 bytes .../notification-04-ram-utilization-ok.avif | Bin 0 -> 6637 bytes doc/check-health.md | 14 +++++----- 6 files changed, 20 insertions(+), 19 deletions(-) delete mode 100644 doc/check-health.d/notification-03-free-ram-low.avif create mode 100644 doc/check-health.d/notification-03-ram-utilization-high.avif delete mode 100644 doc/check-health.d/notification-04-free-ram-ok.avif create mode 100644 doc/check-health.d/notification-04-ram-utilization-ok.avif diff --git a/check-health.rsc b/check-health.rsc index af0d70b..3ada4c8 100644 --- a/check-health.rsc +++ b/check-health.rsc @@ -12,8 +12,8 @@ :global CheckHealthCPUUtilization; :global CheckHealthCPUUtilizationNotified; -:global CheckHealthFreeRAMNotified; :global CheckHealthLast; +:global CheckHealthRAMUtilizationNotified; :global CheckHealthTemperature; :global CheckHealthTemperatureDeviation; :global CheckHealthTemperatureNotified; @@ -52,20 +52,21 @@ $ScriptLock $0; :set CheckHealthCPUUtilizationNotified false; } -:local CheckHealthFreeRAM ($Resource->"free-memory" * 100 / $Resource->"total-memory"); -:if ($CheckHealthFreeRAM < 20 && $CheckHealthFreeRAMNotified != true) do={ +:local CheckHealthRAMUtilization (($Resource->"total-memory" - $Resource->"free-memory") * 100 / $Resource->"total-memory"); +:if ($CheckHealthRAMUtilization >=80 && $CheckHealthRAMUtilizationNotified != true) do={ $SendNotification2 ({ origin=$0; \ - subject=([ $SymbolForNotification "card-file-box,chart-decreasing" ] . "Health warning: free RAM"); \ - message=("The available free RAM on " . $Identity . " is at " . $CheckHealthFreeRAM . "% (" . \ - ($Resource->"free-memory" / 1024 / 1024) . "MiB)!") }); - :set CheckHealthFreeRAMNotified true; + subject=([ $SymbolForNotification "card-file-box,chart-increasing" ] . "Health warning: RAM utilization"); \ + message=("The RAM utilization on " . $Identity . " is at " . $CheckHealthRAMUtilization . "%!\n\n" . \ + [ $FormatLine "total" (($Resource->"total-memory" / 1024 / 1024) . " MiB") ] . "\n" . \ + [ $FormatLine "used" ((($Resource->"total-memory" - $Resource->"free-memory") / 1024 / 1024) . " MiB") ] . "\n" . \ + [ $FormatLine "free" (($Resource->"free-memory" / 1024 / 1024) . " MiB") ]) }); + :set CheckHealthRAMUtilizationNotified true; } -:if ($CheckHealthFreeRAM > 30 && $CheckHealthFreeRAMNotified = true) do={ +:if ($CheckHealthRAMUtilization < 70 && $CheckHealthRAMUtilizationNotified = true) do={ $SendNotification2 ({ origin=$0; \ - subject=([ $SymbolForNotification "card-file-box,chart-increasing" ] . "Health recovery: free RAM"); \ - message=("The available free RAM on " . $Identity . " increased to " . $CheckHealthFreeRAM . "% (" . \ - ($Resource->"free-memory" / 1024 / 1024) . "MiB).") }); - :set CheckHealthFreeRAMNotified false; + subject=([ $SymbolForNotification "card-file-box,chart-decreasing" ] . "Health recovery: RAM utilization"); \ + message=("The RAM utilization on " . $Identity . " decreased to " . $CheckHealthRAMUtilization . "%.") }); + :set CheckHealthRAMUtilizationNotified false; } :if ([ :len [ /system/health/find ] ] = 0) do={ diff --git a/doc/check-health.d/notification-03-free-ram-low.avif b/doc/check-health.d/notification-03-free-ram-low.avif deleted file mode 100644 index effc87cdc223f99accf0969cdd04f02e5a8a4b55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6457 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 literal 0 HcmV?d00001 diff --git a/doc/check-health.d/notification-04-free-ram-ok.avif b/doc/check-health.d/notification-04-free-ram-ok.avif deleted file mode 100644 index cadb1d01373f7624cc251ccda0a66ca0428eab93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6772 zcmeHGXIN8Rm%V{NC<#SS>Af21UFiry0F|P2BHbvxqjV4u=_rCoZ-VqLAYDLukq)6Z z=|yUQ3BKPq^S$$HW}f*mKW5)&-@Vq^`|PvV$qfJiOqR|b_9m_fU6a(L*D=ZY#q!0FpvQN5c6WO913OoXOce|8Z5E6D!JNW;>s_eU}tUjX8`Jd z&tTJv?kLMEzbd3bIa>VH002nL%$>~s9C>x2YE)Ei0atCXqhOs7xB$RcO8z*u{2vj^|AASsIUEo!fQya3SjWZU zt9tw^{}+7yANZ;cg!5OQAS}lD2hJeE608yYc`nB;X8|&Vl8O@cpg)5Gz~v;M01)8g zL-6qkAP@*4ApsGT5(XtEhEiXnAf=?IVPv4Ep`&ABs05kmm<9jacG(D!696nAtXLKRha7}U4!Udw7_oEW zf&SQEQm%yJg7NSn1cXGy*n$eOtDC~b0psG~fw7kk^1|i;Fge~eW&t^T3Jntoivy*g zUvwG)t9(h*bs#;*f}`4xNixIh>D3z+)=ovsB~Xh1)-(=_=%3L zp1zs6g{9Rq)N?0i7gslTkCy>~uY-a^-h{@)zIz|{AwJ<_dPZhecFyPAywbAripr|$ zuQkmrt>4?)JAQNy4*eV+866v+n44c%Tv}dPUHi4Ww}0^a@aXvD^h(#2&VSlp%Knos za;z>KFc=pMxzYu~ak~;u4#r~^z`rJ^0Woo)U=j2qpp=hJD`_HR71G?fZt6Hdbc0QJ zj(zt^+8<^AHDUh$BW3?C>_2o(08m^I_Q%5|2V{T)b%@;HmhfGO*PZD_ckLK6aBS!> z!}UScz>D585;}=L zs1_>+hNk=;N|OzC$g)g)p8Uy2W&7ZMy^4q!hSgP%^HWmb*}GfX=iZ8#*EfjYr&jHJ zZ}k`7D9~5njMKg+SWx9A{poQ?c>#{eyP-|xl@ufV^f2LG+JV zv)VJub#zcO#$(pyy>6hFm{jb$Ag9IJ4jnT6j|nieS&C)m2Cny)c*UD{+gG`Y#m00C zJb8pQ5pjoiS(y#r;i9C3e)n*d?UWcb)5|baBeV2^TMql#LJJp_wd=PWwHLMFb4F6E zx<3W;W_`sM&8^n`mAnYko4-<5?Bw~Y>DxC#(vR9?;xTLNRXh2j%WnQHUCyZ;o$K3Pin)e*Mt2#%_E{jk$+1T7 zSYN%Cc_`5Vc*@6i@VTym$fJ*RJRj5Q6;`jqG@J79&|vQie9lYCN-xl?TSpHxA^wz~ zbV-HpweU%1jFMK({e7wkX`gMcm(WwF#?$IaVp7G!o_D>PVx0GfteD0XN~_eo8f&I+++Hv8m|C7gLd0KIKBYv zE7f6eZP2TQyH3PY8^wu4P@hJ1F6k{xL#4u zoQX*fwp?gC)l+GcD!&dHb=oGON!3LGJ!N)+c4T{Ke2J8b@H`tmNIjn~8;T65^;H!}raS+cIl!`ae2s zeXpBxc%>MJ^9Jrt5dtHzObsL%#x$SUJ zK*WVhA5{7=td}6BzavQ4DD9nvf=fFU_;+8o7apSYdGn2KE^{P*SaeY13B*`vX7_X? zi4qhqQyw^|+_@yGSjn$dcsO$jL~L#!d=U-W?o8Z7;J#t(nvm->-^4hCRwx1%ioE%( z!Cu8OUl}a*+#n}TGmtMAkKwAhgxqx!e!OO&7o)7xq#`2!%v5BpWrGqI~)0*}NFQ<7)7 z_b>zH;SKh&$vMSMM1F3gI_?=KL;BOyp5#n$3>N}omE67!hU--!zO&OI}#t*!L z4qgJ*zfuma)nWgqn-{_w%BdIQ!!oPv9+!a6B<9)QNV*^7us8P-kc0P~UCb=p|5u_& z3HbbLqrVXi+5g}8zi~MtNqI9y)0w8rzdZb7WMkyVFstc7!akSdz%_t~P@Fx7#+r#a zbx?4UR?Qq|(l#BHIG&;VQF>D54r|J1ZRJFj%TuyS`8U&h)N{pD@Q2IU)|cl*t`+Z3 z7@71WQ)X%!uPIlA)O{7!b1_yw&8HAVQLJe8WC_>jIqtsG5X?^b2=XDxiw(^SD?FK5}k;pXFnUJR- zFI6>PixfaI;XVJRn9!RD-m;$m($e+JmzMbUssD$UqL08H_G0I%MQ(+|*$(p|#3Jv(e0q_Wn7Nai{j4YwTdkA2!G_4>I!G891| zs-KrdVbj$v>HLyX#K{gZLX$2VT5HHD=l?Frwyy9bLe=Cp85JrpG^{_^=L(aK;{KN2$Eo7=MLmY zb29oKy;bJFO|q(MvQfV6z+?Esn1sy9FiBvYF#VDaI@-tQf#i?X$VVbXeR>jq5f7SM z%`1wix1bi#p%A;V1{B){feI@MZ&>KfmrooLJuiY)s)4UBw%SG?WtVwg5KcUx$y4m> z2Umz^+V0=8lob-^9!6<_KmvvK(T}6H6+TjhWW*Ffb6zTL{C={`^~v8b<` zRjB#XM-%a(^YG){s*>8|F#M`J7VfaX4OcC%O#g){o)#6_r>r;f2p@>F&SjeBQ);bO z_w#!QS)3vvRm{! zG3)1VtZ6vY+IdSh#__($xpMnmF1u?i;zF{=MdWO3%%k&TcWjhB-&UMPfVzvC`?KFR zd6EiEhY!>GgI(9FEMq4M7cv*fMPd%r7sWfDUnB>Yt}4q+u-R%Xxr=J4B(X4%36k<> zkmo~^EX|sQ98A0m;I7fli@gVU-LkC==@OxotqMwPBU5K8jXlj_`ZV`&gIxKC1T-m1 z(>MgzN^9=n*1Qw*wDJXN3*Ro@Q&_J^t>hKbH66cbE{!eK^U27W7%$wqknwmM>5EzM zL>C7yB)tXQu66aWHP!Vl4)>!+beo3ou1*A~xADcK)Z8!bSA}=8N~X?TdOmF@S*j*F zCbntxZrCg~(!XZ$B?%SD&+YOQ?jxGbAbFo2RzqZo;ptZT%9+MIbia)~`v{Y69p84R zQLHA$F4W)a1JiKmrmaF<-hBmba!Q|SPQt7thHuoRb!YM|OkY!Bch4RRITj9P+;l|$ zK8qwnGv*{@_q@0`p=t_(gkN&*4HHxDrtViye4cAEKh(_)_{Ksp(tJ|d8@ZZT22wK} z!Eo-(Se+O6j{W%Dob`(KTmx&tN8d%FMLbn z^Qbw9c4T?vbQYiVgK3#qcGPze>4Kk3R~V#f$#ynypouzswgTMcQ5Mthq0^OkD>tfK zK{@ttYUSEz6B9Vhxd#3s#!||UmCjWRcEtG1Fz?=;dExD}^vKT3ip=^^332+Fl74)v zvZT5Y0dC6PPifTz`8Lslpnh#Uty3yq%HcwJ@g<1YYHY~Heq;h7#^8Dz+V0biRy0L! z2B-9e;qn(4HT)LR-bb($K6-ne(Q~h^%9w|7SWlw2AXfi3Nq1$$ZM6v>7L0_ToNz)g zF76C-h7K7c%c6F;Ag|WUi71_6&Ooji$F2Bu53(s0-pGu6?`sF!o{BWTYEr1oXv%ssuf*aoYrM_%BEOfzD8Qcd zpxDgzmWvAaqy;ft^Co}ymLY=wRlHHFsce1y`vv;y^&qHM;kV^j<5nk^O((RaQ;587 z2Vxv;BXuHmeW%8{Mo_YE$p?fXl5+1TiY)Zo zoja07^I6ih$3fZsP3|O5D=nJRyatfwyQ08i-qjf%cz@sL9CDD9A9%xG0hO$m{%T&pyCpnHnYym z(a(v9V(>8Z!dlC%>|f;#s?5E`W;uR_jEtXY)o$R*XC4%+(@$E_l42O_Mu?QZmak3OlZ zK}sqxElyJ6@IM13Ys246p>yn^5&F`j2^7hnCeVkf7Umn&J5fo=pKPH;j??}#75% z?u2&Xwe-+?G4OQvA8K()$lJ{+{01?&XlxE@xr;k30CO_D&m|ff$JAK|M3LShwHGc0 za`4!YHA{~y88FEV-^)YUJr*7OPk_*;z*N6&_9rKR7=|_gT~aa=`tmm7Tqbd&*_?_` z5wDZ&)Q@GgiA*QQ0Yy!5qw3Da<`R{-Qx8ulp=IfcTu|0&RJ>0n?9s{$pWA%_=3B^% zmN=Wd3aR4}B95uvsiAn$Cm&bB=*-BuI-j_Rd2pqK!q~>Bw8?p>uescztN$LLc{%=@ zk?Jk8GLL7LS*hVSRHwL)_g*$i(o?cDNNwJ2+GI>Mz>;tI!`XSUBk!4PF1%i_;#9_) z^#v!6YujdBU&`Cq4tH`rKHO-C;~yq`qc_i5R0f?RZsNJDY*M0yobB4BqGYvkW4XiRQ3zg1uF3I3<{+ zgyylBbT?0kl%vrr!(KMc#(T%n-xb8O;fMf6bff+ImzC}84Ei<{v`ZA2_Xv`7-Y))N zUjT4QP63vYYdWzc!lI8H)pm9tr2_(dsZiNLUrU=Y;vd68WMmq)qL$JuB3t#w^PR7s zH7V)}f0$V8<-nVR3FV{KnkQbtQYf^ z7U9R*!9gj>J}L}Oi}51K>y3>p?J->2jFHa=+I2s_4~aLuJv?Sdy=?m?n)Weonm=eV z;{8Pp`_mMarb+2z-g}4>OI}O7m-7~A?_j;~hsf)mcv+-X^29^C>~{2bUp~|tyex9p zCJ42$i@ope-5BXFgTpQv1A9VHf9$AwX4Uuc0qYhcPe<}JOf~Hqi4eDM!#t1D9nKEq z$!Xx}E^LZ+#Ta>Z(5LssPo;i*Z1Y%IJKPxgKp~=Sgw(RQO(5S{nSdu49YL=5u+hCO hIdCT$gs(nVhs2HK(}=ft`X=2Vs_F0;zW&tr-vCYvI>P_} diff --git a/doc/check-health.d/notification-04-ram-utilization-ok.avif b/doc/check-health.d/notification-04-ram-utilization-ok.avif new file mode 100644 index 0000000000000000000000000000000000000000..d995b9a198bf3de91e117781f89535c6f048f343 GIT binary patch literal 6637 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 z