Update roles/pips/files/memory_usage.py

This commit is contained in:
2025-12-04 08:02:02 +01:00
parent b4637ccf89
commit 6ee90eabea
+35 -36
View File
@@ -1,4 +1,4 @@
#!/usr/bin/env python3 #!/usr/bin/env python3.11
"""Nagios plugin: report current memory usage. """Nagios plugin: report current memory usage.
Outputs a one-line status and perfdata and uses Nagios exit codes: Outputs a one-line status and perfdata and uses Nagios exit codes:
@@ -13,50 +13,49 @@ import psutil
def human_mb(bytes_val): def human_mb(bytes_val):
return bytes_val / (1024 * 1024) return bytes_val / (1024 * 1024)
def main(): def main():
parser = argparse.ArgumentParser(description="Nagios memory usage check") parser = argparse.ArgumentParser(description="Nagios memory usage check")
parser.add_argument("-w", "--warning", type=int, default=80, parser.add_argument("-w", "--warning", type=int, default=80,
help="warning threshold (percent used)") help="warning threshold (percent used)")
parser.add_argument("-c", "--critical", type=int, default=90, parser.add_argument("-c", "--critical", type=int, default=90,
help="critical threshold (percent used)") help="critical threshold (percent used)")
args = parser.parse_args() args = parser.parse_args()
if args.warning >= args.critical: if args.warning >= args.critical:
print("UNKNOWN - warning threshold must be less than critical") print("UNKNOWN - warning threshold must be less than critical")
sys.exit(3) sys.exit(3)
try: try:
vm = psutil.virtual_memory() vm = psutil.virtual_memory()
except Exception as e: except Exception as e:
print(f"UNKNOWN - failed to read memory: {e}") print(f"UNKNOWN - failed to read memory: {e}")
sys.exit(3) sys.exit(3)
total_mb = human_mb(vm.total) total_mb = human_mb(vm.total)
used_mb = human_mb(vm.total - vm.available) used_mb = human_mb(vm.total - vm.available)
percent_used = vm.percent percent_used = vm.percent
status = 0 status = 0
status_str = "OK" status_str = "OK"
if percent_used >= args.critical: if percent_used >= args.critical:
status = 2 status = 2
status_str = "CRITICAL" status_str = "CRITICAL"
elif percent_used >= args.warning: elif percent_used >= args.warning:
status = 1 status = 1
status_str = "WARNING" status_str = "WARNING"
# Perfdata: used and total in MiB, and percent # Perfdata: used and total in MiB, and percent
perf = ( perf = (
f"used={used_mb:.1f}MiB;{args.warning};{args.critical};0;{total_mb:.1f}" f"used={used_mb:.1f}MiB;;;0;{total_mb:.1f}"
f" total={total_mb:.1f}MiB" f" total={total_mb:.1f}MiB"
) )
print(f"MEMORY {status_str} - {used_mb:.1f}MiB used of {total_mb:.1f}MiB ({percent_used:.1f}%) | {perf}") print(f"MEMORY {status_str} - {used_mb:.1f}MiB used of {total_mb:.1f}MiB ({percent_used:.1f}%) | {perf}")
sys.exit(status) sys.exit(status)
if __name__ == "__main__": if __name__ == "__main__":
main() main()