On Wed, Feb 9, 2011 at 4:18 PM, Sean Carolan <scaro...@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 = 'r...@server.com' > recipient = 'sysad...@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?
_______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor