Skip to content

Instantly share code, notes, and snippets.

@fishtek
Created February 2, 2016 19:02
Show Gist options
  • Save fishtek/74feaa1999686089df3c to your computer and use it in GitHub Desktop.
Save fishtek/74feaa1999686089df3c to your computer and use it in GitHub Desktop.
Helper script for consul health check.
#!/usr/bin/python
# ========================================================================================
# Check System
#
# Written by : Ryan Fisher rfisher@cyberpointllc.com
# Release : 1.0
# Creation date : 13 Jan 2016
# ========================================================================================
import psutil
import sys
import traceback
STATE_OK = 0
STATE_WARNING = 1
STATE_CRITICAL = 2
STATE_UNKNOWN = 3
try:
action = sys.argv[1]
warn = int(sys.argv[2])
crit = int(sys.argv[3])
# This is a status check for disk
if action == 'disk':
path = sys.argv[4]
disk = psutil.disk_usage(path)
if disk.percent >= crit:
print("DISK CRITICAL: %s%% used" % disk.percent)
sys.exit(STATE_CRITICAL)
if disk.percent >= warn:
print("DISK WARNING: %s%% used" % disk.percent)
sys.exit(STATE_CRITICAL)
print("DISK OK: %s%% used" % disk.percent)
sys.exit(STATE_OK)
# This is a memory check for a service
if action == 'mem':
mem = psutil.virtual_memory()
swap = psutil.swap_memory()
if mem.percent >= crit or swap.percent >= crit:
print("MEM CRITICAL: %s%% memory used -- %s%% swap used" % (mem.percent, swap.percent))
sys.exit(STATE_CRITICAL)
if mem.percent >= warn or swap.percent >= warn:
print("MEM WARNING: %s%% memory used -- %s%% swap used" % (mem.percent, swap.percent))
sys.exit(STATE_WARNING)
print("MEM OK: %s%% memory used -- %s%% swap used" % (mem.percent, swap.percent))
sys.exit(STATE_OK)
# This is a cpu check for a service
if action == 'cpu':
cpu_p = psutil.cpu_percent(interval=1)
if cpu_p >= crit:
print("CPU CRITICAL: %s%%" % cpu_p)
sys.exit(STATE_CRITICAL)
if cpu_p >= warn:
print("CPU WARNING: %s%%" % cpu_p)
sys.exit(STATE_WARNING)
print("CPU OK: %s%%" % cpu_p)
sys.exit(STATE_OK)
except Exception as e:
print(traceback.format_exc())
sys.exit(STATE_CRITICAL)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment