Update roles/pips/files/memory_usage.py
This commit is contained in:
@@ -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()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user