====== Email alerts on low free space ======
Create ''/root/free-space-alerts.py'':
#!/usr/bin/python
import sys,os,socket,subprocess
def get_free_GB(path):
st = os.statvfs(dir)
avail = st.f_bavail * st.f_bsize / (1024.0**3) # free space in GB
total = st.f_blocks * st.f_bsize / (1024.0**3) # free space in GB
used = total - avail
return (avail,used,total)
def send_email(to,subject,message):
fp_mail = subprocess.Popen(['/usr/bin/mail',to,'-s',subject], stdin=subprocess.PIPE).stdin
fp_mail.write(message)
fp_mail.close()
if len(sys.argv) != 4:
print "Syntax: %s " % sys.argv[0]
sys.exit(1)
(_,to,dir,min_space_GB) = sys.argv
min_space_GB = float(min_space_GB)
hostname = socket.gethostname()
(avail,used,total) = get_free_GB(dir)
pct = avail/total*100
if avail < min_space_GB:
subject = "%s: Low disk space on %s" % (hostname, dir)
message = """WARNING from '%s'.
Low disk space on $dir: %.1fGB / %.1fGB free (%.1f%%). Threshold is %.1fGB.
""" % (hostname, avail, total, pct, min_space_GB)
send_email(to,subject,message)
Then create ''/etc/cron.hourly/free-space-alerts'' with one line per mountpoint to monitor:
/root/free-space-alerts.py
...