From e58d8e43739744d88f04918ff0e74fabf0bcc37c Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Mon, 24 Aug 2020 14:02:40 +0200 Subject: netwatch-notify: make check count threshold configurable Signed-off-by: Christian Hesse --- doc/netwatch-notify.md | 4 ++++ netwatch-notify | 6 ++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/doc/netwatch-notify.md b/doc/netwatch-notify.md index f2ce7b4..3fe1bca 100644 --- a/doc/netwatch-notify.md +++ b/doc/netwatch-notify.md @@ -35,6 +35,10 @@ comment: / tool netwatch add comment="notify, hostname=poe-device, down-hook=/ interface ethernet poe power-cycle en21;" host=10.0.0.20 timeout=5s; +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 timeout=5s; + Also notification settings are required for e-mail and telegram. --- diff --git a/netwatch-notify b/netwatch-notify index 898ca99..b52c4d1 100644 --- a/netwatch-notify +++ b/netwatch-notify @@ -8,8 +8,9 @@ :global NetwatchNotify; -:global ParseKeyValueStore; +:global IfThenElse; :global LogPrintExit; +:global ParseKeyValueStore; :global SendNotification; :global SymbolForNotification; @@ -45,7 +46,8 @@ :set ($Metric->"count") ($Metric->"count" + 1); $LogPrintExit info ("Host " . $HostName . " (" . $HostVal->"host" . ") is down for " . \ $Metric->"count" . " checks.") false; - :if ($Metric->"count" >= 5 && $Metric->"notified" != true) do={ + :if ($Metric->"count" >= [ $IfThenElse ([ :typeof ($HostVal->"count") ] != "nothing") ($HostVal->"count") 5 ] && \ + $Metric->"notified" != true) do={ $SendNotification ([ $SymbolForNotification "cross-mark" ] . "Netwatch Notify: " . $HostName . " down") \ ("Host " . $HostName . " (" . $HostVal->"host" . ") is down since " . $HostVal->"since" . "."); :set ($Metric->"notified") true; -- cgit v1.2.3-54-g00ecf