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}")