From 13ac794416040effb5a9cdb6e246b77274cacef8 Mon Sep 17 00:00:00 2001 From: Dirk Alders Date: Sat, 25 Nov 2023 14:51:34 +0100 Subject: [PATCH] check_shelly: mqtt, memory and filesystem implemented --- check_shelly | 39 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/check_shelly b/check_shelly index 7459c49..d8fe2dc 100755 --- a/check_shelly +++ b/check_shelly @@ -6,10 +6,16 @@ import nagios import os import urllib.request -CHECKS = ['wifi'] +CHECKS = ['wifi', 'mqtt', 'memory', 'filesystem'] # WIFI_QUALITY_ERROR = -30 WIFI_QUALITY_WARNING = -50 +# +RAM_ERROR = .15 +RAM_WARNING = .30 +# +FS_ERROR = .15 +FS_WARNING = .30 if __name__ == "__main__": parser = argparse.ArgumentParser( @@ -37,4 +43,33 @@ if __name__ == "__main__": status = n.WARNING else: status = n.OK - n.exit(status, f"connected: {connected} - quality: {quality}") + n.exit(status, f"connected: {connected} - quality: {quality} < {WIFI_QUALITY_WARNING} < {WIFI_QUALITY_ERROR}") + elif args.check == 'mqtt': + connected = data['mqtt']['connected'] + if not connected: + status = n.ERROR + else: + status = n.OK + n.exit(status, f"connected: {connected}") + elif args.check == 'memory': + ram_total = data['ram_total'] + ram_free = data['ram_free'] + ram_left = ram_free / ram_total + if ram_left < RAM_ERROR: + status = n.ERROR + elif ram_left < RAM_WARNING: + status = n.WARNING + else: + status = n.OK + n.exit(status, f"ram_left: {ram_left} ({ram_total}) > {RAM_WARNING} > {RAM_ERROR}") + elif args.check == 'filesystem': + fs_size = data['fs_size'] + fs_free = data['fs_free'] + fs_left = fs_free / fs_size + if fs_left < FS_ERROR: + status = n.ERROR + elif fs_left < FS_WARNING: + status = n.WARNING + else: + status = n.OK + n.exit(status, f"fs_left: {fs_left} ({fs_size}) > {FS_WARNING} > {FS_ERROR}")