diff --git a/check_scrutiny_disks.py b/check_scrutiny_disks.py index 519d104..1c8756b 100755 --- a/check_scrutiny_disks.py +++ b/check_scrutiny_disks.py @@ -89,23 +89,49 @@ def main(args): 'display_name': item['metadata']['display_name'] }) + dt = '
' if args.html else '' + dts = '
' if args.html else '' + dd = '
' if args.html else '\t- ' + dds = '
' if args.html else '' + return_code = nagios.OK if len(crit_disks): return_code = nagios.CRITICAL - print(f'CRITICAL: {len(crit_disks)} {"error" if len(results) == 0 else "errors"} - {args.scrutiny_endpoint}') - print('Disks with Errors:') + if len(warn_disks): + x = f' and {len(warn_disks)} {"warning" if len(results) > 1 else "warnings"}' + else: + x = '' + print(f'CRITICAL: {len(crit_disks)} {"error" if len(results) > 1 else "errors"}{x}') + + print('
') + print(f'{dt}Disks with Errors:{dts}') + for disk, warns in crit_disks.items(): - print(f'\t- /dev/{disk}: {", ".join([x["display_name"] for x in warns])}') + if args.html: + disk_name = f'- /dev/{disk}' + else: + disk_name = f'\t- /dev/{disk}' + print(f'{dd}{disk_name}: {", ".join([x["display_name"] for x in warns])}{dds}') + + print('
', end='') + if len(warn_disks): if return_code < nagios.CRITICAL: return_code = nagios.WARNING - print(f'WARNING: {len(crit_disks)} {"warning" if len(results) == 0 else "warnings"} - {args.scrutiny_endpoint}') - print('Disks with issues:') + print(f'WARNING: {len(crit_disks)} {"warning" if len(results) > 1 else "warnings"}') + + print('
') + print(f'{dt}Disks with issues:{dts}') for disk, warns in warn_disks.items(): - print(f'\t- /dev/{disk}: {", ".join([x["display_name"] for x in warns])}') + if args.html: + disk_name = f'- /dev/{disk}' + else: + disk_name = f'\t- /dev/{disk}' + print(f'{dd}{disk_name}: {", ".join([x["display_name"] for x in warns])}{dds}') + print('
', end='') if not len(crit_disks) and not len(warn_disks): - print(f'OK: all {len(results)} {"disk" if len(results) == 0 else "disks"} are healthy!', end='') + print(f'OK: all {len(results)} {"disk" if len(results) > 1 else "disks"} are healthy!', end='') print(f"|'warnings'={len(warn_disks)};;; 'errors'={len(crit_disks)};;; 'num_disks'={len(results)};;;") sys.exit(return_code) @@ -115,8 +141,16 @@ if __name__ == "__main__": parser = argparse.ArgumentParser(description='') parser.add_argument('--scrutiny-endpoint', required=True, help='Base URL for scrutiny.') parser.add_argument('--warn-non-critical', action='store_true', help='Warn when a non-critical metric is marked as failed.') + parser.add_argument('--html', action='store_true', help='Print HTML.') + parser.add_argument('--pretty-url', help='The pretty URL to link to when printing HTML.') args = parser.parse_args() + + if args.html and not args.pretty_url: + print('UKNOWN: when using --html you must also set --pretty-url') + sys.exit(nagios.UNKNOWN) + args.scrutiny_endpoint = args.scrutiny_endpoint.strip('/') + args.pretty_url = args.pretty_url.strip('/') if args.pretty_url else None try: main(args) except Exception as e: