aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Christian Hesse <mail@eworm.de>2021-07-09 11:27:26 +0200
committerGravatar Christian Hesse <mail@eworm.de>2021-07-09 12:46:03 +0200
commitbccb7c3452466aea0f8c1790643b3aeb21e9b1af (patch)
treec69fbd44982b001c1df277f2a4e2ebb84a8741d2
parent12d34e4a7c40203aadfb536077c3c2b2cd1492d5 (diff)
netwatch-notify: implement pre-down hookchange-60
-rw-r--r--doc/netwatch-notify.md4
-rw-r--r--global-config2
-rw-r--r--global-config-overlay2
-rw-r--r--global-config.changes1
-rw-r--r--global-functions2
-rw-r--r--netwatch-notify3
6 files changed, 11 insertions, 3 deletions
diff --git a/doc/netwatch-notify.md b/doc/netwatch-notify.md
index 199f050..14efe0b 100644
--- a/doc/netwatch-notify.md
+++ b/doc/netwatch-notify.md
@@ -44,6 +44,10 @@ comment:
/ tool netwatch add comment="notify, hostname=poe-device, down-hook=/ interface ethernet poe power-cycle en21;" host=10.0.0.20;
+Also there is a `pre-down-hook` that fires at two thirds of failed checks
+required for the notification. The idea is to fix the issue before a
+notification is sent.
+
The count threshould (default is 5 checks) is configurable as well:
/ tool netwatch add comment="notify, hostname=example.com, count=10" host=104.18.144.11;
diff --git a/global-config b/global-config
index 06f43e0..efc5c2d 100644
--- a/global-config
+++ b/global-config
@@ -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 59;
+:global GlobalConfigVersion 60;
# This is used for DNS and backup file.
:global Domain "example.com";
diff --git a/global-config-overlay b/global-config-overlay
index 0888452..c65322b 100644
--- a/global-config-overlay
+++ b/global-config-overlay
@@ -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'!
# Comment or remove to disable news and change notifications.
-:global GlobalConfigVersion 59;
+:global GlobalConfigVersion 60;
# Copy configuration from global-config here and modify it.
diff --git a/global-config.changes b/global-config.changes
index 0cc6b1e..e3a035d 100644
--- a/global-config.changes
+++ b/global-config.changes
@@ -63,6 +63,7 @@
57="Celebrating the 1.000th commit - Hooray!";
58="Added a cleanup script for 'hotspot-to-wpa' to purge old access list entries.";
59="Updating CAP with 'check-routeros-update' is now possible with opt-in.";
+ 60="Implemented a pre-down hook in 'netwatch-notify' that fires at two thirds of failed checks.";
};
# Migration steps to be applied on script updates
diff --git a/global-functions b/global-functions
index 7b5227a..0a031ba 100644
--- a/global-functions
+++ b/global-functions
@@ -8,7 +8,7 @@
# https://git.eworm.de/cgit/routeros-scripts/about/
# expected configuration version
-:global ExpectedConfigVersion 59;
+:global ExpectedConfigVersion 60;
# global variables not to be changed by user
:global GlobalFunctionsReady false;
diff --git a/netwatch-notify b/netwatch-notify
index eecfa9f..966d415 100644
--- a/netwatch-notify
+++ b/netwatch-notify
@@ -117,6 +117,9 @@
$Metric->"count" . " checks, " . [ $IfThenElse ($ParentNotified = false) [ $IfThenElse \
($Metric->"notified" = true) ("already notified.") ($Count - $Metric->"count" . " to go.") ] \
("parent host " . $Parent . " is down.") ]) false;
+ :if ((($Count * 2) - ($Metric->"count" * 3)) / 2 = 0 && [ :typeof ($HostInfo->"pre-down-hook") ] = "str") do={
+ $NetwatchNotifyHook $HostName "pre-down" ($HostInfo->"pre-down-hook");
+ }
:if ($ParentNotified = false && $Metric->"count" >= $Count && $Metric->"notified" != true) do={
:local Message ("Host " . $HostName . " (" . $HostVal->"host" . ") is down since " . $HostVal->"since" . ".");
:if ([ :typeof ($HostInfo->"down-hook") ] = "str") do={