mirror of
https://github.com/eworm-de/routeros-scripts.git
synced 2025-08-05 02:34:41 +02:00
... from 'check-health', so the script works on all devices to monitor CPU and RAM. The supported plugins for sensors in hardware are installed automatically.
48 lines
1.6 KiB
Text
48 lines
1.6 KiB
Text
#!rsc by RouterOS
|
|
# RouterOS script: check-health.d/state
|
|
# Copyright (c) 2019-2025 Christian Hesse <mail@eworm.de>
|
|
# https://rsc.eworm.de/COPYING.md
|
|
#
|
|
# requires RouterOS, version=7.14
|
|
#
|
|
# check for RouterOS health state - state plugin
|
|
# https://rsc.eworm.de/doc/check-health.md
|
|
|
|
:global CheckHealthPlugins;
|
|
|
|
:set ($CheckHealthPlugins->[ :jobname ]) do={
|
|
:local FuncName [ :tostr $0 ];
|
|
|
|
:global CheckHealthLast;
|
|
:global Identity;
|
|
|
|
:global LogPrint;
|
|
:global SendNotification2;
|
|
:global SymbolForNotification;
|
|
|
|
:if ([ :len [ /system/health/find where type="" name~"-state\$"] ] = 0) do={
|
|
$LogPrint debug $FuncName ("Your device does not provide any state health values.");
|
|
:return false;
|
|
}
|
|
|
|
:foreach State in=[ /system/health/find where type="" name~"-state\$" ] do={
|
|
:local Name [ /system/health/get $State name ];
|
|
:local Value [ /system/health/get $State value ];
|
|
|
|
:if ([ :typeof ($CheckHealthLast->$Name) ] != "nothing") do={
|
|
:if ($CheckHealthLast->$Name = "ok" && \
|
|
$Value != "ok") do={
|
|
$SendNotification2 ({ origin=$FuncName; \
|
|
subject=([ $SymbolForNotification "cross-mark" ] . "Health warning: " . $Name); \
|
|
message=("The device '" . $Name . "' on " . $Identity . " failed!") });
|
|
}
|
|
:if ($CheckHealthLast->$Name != "ok" && \
|
|
$Value = "ok") do={
|
|
$SendNotification2 ({ origin=$FuncName; \
|
|
subject=([ $SymbolForNotification "white-heavy-check-mark" ] . "Health recovery: " . $Name); \
|
|
message=("The device '" . $Name . "' on " . $Identity . " recovered!") });
|
|
}
|
|
}
|
|
:set ($CheckHealthLast->$Name) $Value;
|
|
}
|
|
}
|