[Tutor] System Monitoring

de Haan kyronoth at gmail.com
Wed Feb 9 16:32:08 CET 2011


On Wed, Feb 9, 2011 at 4:18 PM, Sean Carolan <scarolan at gmail.com> wrote:

> > Hi,
> > Im fairly new to programming in python, and have a question.
> > Im looking to build a program that monitor's certain things on my Linux
> > system. for instance disk space. What is the best way to monitor a Linux
> > server without using to much resources?
> > Should I execute shell commands and grab the output of them? Or should i
> use
> > SNMP. Or is there a better way?
> > Thanks in advance!
> > de Haan
>
> de Haan:
>
> I'm guessing from the text of your message that this is a single,
> stand-alone system.  Nagios and cacti are complete overkill for system
> monitoring on a single machine.  Here are some other options that you
> can try:
>
> *  GUI monitoring - gkrellm is great for this.  You can run it and see
> performance graphs and monitors right in a little app on your desktop.
>
> *  Command line monitoring - it's pretty easy to cobble together a
> python script that monitors things like load average, memory, disk
> space, etc.  Hint:  you can get a *lot* of useful info from the /proc
> directory, for example, /proc/meminfo, /proc/loadavg, etc.
>
> Here's a quickie that I built for a client, it watches the 15 minute
> load average.
>
> #!/usr/bin/env python
> '''
> File: load_average_watcher.py
> Author: Sean Carolan
> Description: Watches 15 minute load average and alerts sysadmin if it
> gets over a certain level.
> '''
>
> import smtplib
> from email.MIMEText import MIMEText
>
> threshhold = 3.0
> sender = 'root at server.com'
> recipient = 'sysadmin at example.com'
>
> def sendMail():
>        msg = MIMEText("Alert - system load is over "+str(threshhold))
>        msg['Subject'] = 'System Load Alert'
>        msg['From'] = sender
>        msg['To'] = recipient
>        s = smtplib.SMTP()
>        s.connect()
>        s.sendmail(sender, [recipient], msg.as_string())
>        s.close()
>
> for line in open('/proc/loadavg'):
>    #If the load average is above threshhold, send alert
>    loadav = float(line.split()[2])
>    if loadav < threshhold:
>        print '15 minute load average is '+str(loadav)+': OK!'
>    else:
>        print '15 minute load average is '+str(loadav)+': HIGH!'
>        sendMail()
>

This was indeed what i was thinking. So using /proc is a viable/recommended
way of programming a system monitoring tool? And do you run this via a cron
job?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20110209/ebafc735/attachment.html>


More information about the Tutor mailing list