mirror of
https://github.com/eworm-de/routeros-scripts
synced 2024-05-14 08:04:19 +00:00
check-health: add deviation on temperature recovery threshold
This helps against notification flooding.
This commit is contained in:
parent
3e72d1ec0b
commit
6d9eb99e08
5 changed files with 19 additions and 9 deletions
19
check-health
19
check-health
|
@ -8,6 +8,8 @@
|
|||
|
||||
:global CheckHealthLast;
|
||||
:global CheckHealthTemperature;
|
||||
:global CheckHealthTemperatureDeviation;
|
||||
:global CheckHealthTemperatureNotified;
|
||||
:global CheckHealthVoltagePercent;
|
||||
:global Identity;
|
||||
|
||||
|
@ -26,6 +28,10 @@
|
|||
$LogPrintExit error ("Your device does not provide any health values.") true;
|
||||
}
|
||||
|
||||
:if ([ :typeof $CheckHealthTemperatureNotified ] != "array") do={
|
||||
:set CheckHealthTemperatureNotified [ :toarray "" ];
|
||||
}
|
||||
|
||||
:foreach Voltage in={ "battery"; "psu1-voltage"; "psu2-voltage"; "voltage" } do={
|
||||
:if ([ :typeof ($CheckHealthLast->$Voltage) ] = "num" && \
|
||||
[ :typeof ($CheckHealthCurrent->$Voltage) ] = "num") do={
|
||||
|
@ -56,23 +62,24 @@
|
|||
}
|
||||
|
||||
:foreach Temperature in={ "temperature"; "cpu-temperature"; "board-temperature1"; "board-temperature2" } do={
|
||||
:if ([ :typeof ($CheckHealthLast->$Temperature) ] = "num" && \
|
||||
[ :typeof ($CheckHealthCurrent->$Temperature) ] = "num") do={
|
||||
:if ([ :typeof ($CheckHealthCurrent->$Temperature) ] = "num") do={
|
||||
:if ([ :typeof ($CheckHealthTemperature->$Temperature) ] != "num" ) do={
|
||||
$LogPrintExit warning ("No threshold given for " . $Temperature . ", assuming 50C.") false;
|
||||
:set ($CheckHealthTemperature->$Temperature) 50;
|
||||
}
|
||||
:if ($CheckHealthLast->$Temperature <= $CheckHealthTemperature->$Temperature && \
|
||||
$CheckHealthCurrent->$Temperature > $CheckHealthTemperature->$Temperature) do={
|
||||
:if ($CheckHealthCurrent->$Temperature > $CheckHealthTemperature->$Temperature && \
|
||||
$CheckHealthTemperatureNotified->$Temperature != true) do={
|
||||
$SendNotification ([ $SymbolForNotification "fire" ] . "Health warning: " . $Temperature) \
|
||||
("The " . $Temperature . " on " . $Identity . " is above threshold: " . \
|
||||
$CheckHealthCurrent->$Temperature . "\C2\B0" . "C");
|
||||
:set ($CheckHealthTemperatureNotified->$Temperature) true;
|
||||
}
|
||||
:if ($CheckHealthLast->$Temperature > $CheckHealthTemperature->$Temperature && \
|
||||
$CheckHealthCurrent->$Temperature <= $CheckHealthTemperature->$Temperature) do={
|
||||
:if ($CheckHealthCurrent->$Temperature <= ($CheckHealthTemperature->$Temperature - $CheckHealthTemperatureDeviation) && \
|
||||
$CheckHealthTemperatureNotified->$Temperature = true) do={
|
||||
$SendNotification ([ $SymbolForNotification "white-heavy-check-mark" ] . "Health recovery: " . $Temperature) \
|
||||
("The " . $Temperature . " on " . $Identity . " dropped below threshold: " . \
|
||||
$CheckHealthCurrent->$Temperature . "\C2\B0" . "C");
|
||||
:set ($CheckHealthTemperatureNotified->$Temperature) false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
# Make sure all configuration properties are up to date and this
|
||||
# value is in sync with value in script 'global-functions'!
|
||||
:global GlobalConfigVersion 32;
|
||||
:global GlobalConfigVersion 33;
|
||||
|
||||
# This is used for DNS and backup file.
|
||||
:global Domain "example.com";
|
||||
|
@ -71,6 +71,8 @@
|
|||
board-temperature1=50;
|
||||
board-temperature2=50;
|
||||
}
|
||||
# This is deviation on recovery threshold against notification flooding.
|
||||
:global CheckHealthTemperatureDeviation 2;
|
||||
:global CheckHealthVoltagePercent 10;
|
||||
|
||||
# This controls what configuration is activated by bridge-port-to-default.
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
# Make sure all configuration properties are up to date and this
|
||||
# value is in sync with value in script 'global-functions'!
|
||||
# Comment or remove to disable change notifications.
|
||||
:global GlobalConfigVersion 32;
|
||||
:global GlobalConfigVersion 33;
|
||||
|
||||
# Copy configuration from global-config here and modify it.
|
||||
|
||||
|
|
|
@ -36,4 +36,5 @@
|
|||
30="Implemented simple rate limit for 'log-forward' to prevent flooding.";
|
||||
31="Switched Telegram notifications to fixed-width font, with opt-out.";
|
||||
32="Merged mode (& reset) button scripts in single new script 'mode-button'.";
|
||||
33="Added configurable deviation on health temperature recovery threshold against notification flooding.";
|
||||
};
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
# https://git.eworm.de/cgit/routeros-scripts/about/
|
||||
|
||||
# expected configuration version
|
||||
:global ExpectedConfigVersion 32;
|
||||
:global ExpectedConfigVersion 33;
|
||||
|
||||
# global variables not to be changed by user
|
||||
:global GlobalFunctionsReady false;
|
||||
|
|
Loading…
Reference in a new issue