aboutsummaryrefslogtreecommitdiff
path: root/articles/2011-03-31_sheevaplug_ueberwachung.md
diff options
context:
space:
mode:
Diffstat (limited to 'articles/2011-03-31_sheevaplug_ueberwachung.md')
-rw-r--r--articles/2011-03-31_sheevaplug_ueberwachung.md81
1 files changed, 81 insertions, 0 deletions
diff --git a/articles/2011-03-31_sheevaplug_ueberwachung.md b/articles/2011-03-31_sheevaplug_ueberwachung.md
new file mode 100644
index 0000000..74dfa88
--- /dev/null
+++ b/articles/2011-03-31_sheevaplug_ueberwachung.md
@@ -0,0 +1,81 @@
+# SheevaPlug Überwachung
+
+Um den Überblick über die Auslastung und den Traffic meines SheevaPlugs zu behalten setze ich [Conky](http://conky.sourceforge.net/), [dstat](http://freshmeat.net/projects/dstat/) und [gnuplot](http://www.gnuplot.info/) ein.
+
+Den Systemmonitor Conky lasse ich mit dem Befehl `ssh -X -vv -Y -p 22 adrian@asterix "conky -c /home/adrian/.conkyrc"` über X-forwarding in meiner XFCE-Session anzeigen. Das klappt einwandfrei und ergibt zusammen mit dieser [Conky-Konfiguration](http://adrianktools.redirectme.net/files/.conkyrc) und einer lokalen Conky-Instanz folgendes Bild:
+
+<a href="http://imgur.com/2JuGZl"><img alt="Zwei Conky-Instanzen unter XFCE" src="http://i.imgur.com/2JuGZl.jpg" title="Zwei Conky-Instanzen unter XFCE" width="354" height="268" class="full" /></a>
+
+Zusätzlich loggt der SheevaPlug regelmäßig die aktuellen Systemdaten wie CPU-Auslastung, Netzwerkverkehr und belegten Arbeitsspeicher und generiert sie zu Graphen die mir dann jede Nacht per eMail zugesand werden.
+Zum Loggen der Daten verwende ich dstat das mit folgendem, von einem Cron-Job gestarteten Befehl aufgerufen wird:
+
+ dstat -tcmn 2 1 | tail -1 >> /var/log/systat.log
+
+Die Argumente -tcmn geben hierbei die zu loggenden Systemdaten und deren Reihenfolge an – heraus kommen Zeilen wie diese:
+
+ 31-03 19:40:04 | 2 4 95 0 0 0 | 141M 11.3M 71.6M 277M | 684B 736B
+
+Um 0 Uhr wird dann die Log-Datei von einem Cron-Job mit diesem Script wegkopiert, Graphen werden von gnuplot generiert und dann mit einem kleinen Python-Programm versendet.
+
+ #!/bin/sh
+ mv /var/log/systat.log /root/sys_graph/stat.dat
+ cd /root/sys_graph/
+ ./generate_cpu.plot
+ ./generate_memory.plot
+ ./generate_network.plot
+ ./send_report.py
+
+Hier das gnuplot-Script zur Erzeugung des CPU-Graphen als Beispiel:
+
+ #!/usr/bin/gnuplot
+ set terminal png
+ set output "cpu.png"
+ set title "CPU usage"
+ set xlabel "time"
+ set ylabel "percent"
+ set xdata time
+ set timefmt "%d-%m %H:%M:%S"
+ set format x "%H:%M"
+ plot "stat.dat" using 1:4 title "system" with lines, \
+ "stat.dat" using 1:3 title "user" with lines, \
+ "stat.dat" using 1:5 title "idle" with lines
+
+… und hier noch das Python-Programm zum Versenden per Mail:
+
+ #!/usr/bin/python2
+ import smtplib
+ from time import *
+ from email.mime.image import MIMEImage
+ from email.mime.multipart import MIMEMultipart
+
+ lt = localtime()
+
+ # Mail-Header
+ msg = MIMEMultipart()
+ msg['Subject'] = strftime('Leistungsreport – %d%m%Y', lt)
+ msg['From'] = 'reports@asterix'
+ msg['To'] = 'mail@mail.mail'
+
+ msg.preamble = strftime('Leistungsreport – %d%m%Y', lt)
+
+ # Attachments
+ fileArray = ['cpu.png','memory.png','network.png']
+ for file in fileArray:
+ fp = open(file, ‘rb’)
+ img = MIMEImage(fp.read())
+ fp.close()
+ msg.attach(img)
+
+ # Login in SMTP-Server
+ s = smtplib.SMTP('smtpmail.t-online.de')
+ s.login('mail@mail.mail', '#####')
+
+ s.sendmail('mail@mail.mail', 'mail@mail.mail', msg.as_string())
+ s.quit()
+
+Als Endergebniss erhalte ich dann täglich solche Grafiken per Mail:
+
+<a href="http://imgur.com/tHGcG"><img alt="CPU-Graph" class="clear full" src="http://i.imgur.com/tHGcGl.jpg" title="CPU-Graph" /></a>
+
+Ich finde es immer wieder erstaunlich mit wie wenigen Zeilen Quelltext man interessante Sachen unter Linux erzeugen kann – oder besser wie viel Programme wie gnuplot mit nur wenigen Anweisungen erzeugen können. So hat das komplette Schreiben dieser Scripts mit Recherche nur etwa 1,5 Stunden gedauert – inklusive Testen.
+Alle verwendeten Programme sind in den ArchLinux Paketquellen vorhanden – auch in denen von PlugBox-Linux, einer Portierung von ArchLinux auf ARM-Plattformen die ich nur immer wieder empfehlen kann – besonders nach den jetzt oft erscheinenden Paket-Updates. Aber dazu auch dieser Artikel: [Plugbox Linux – Ein ArchLinux Port für den SheevaPlug](/article/plugbox_linux_ein_archlinux_port_fuer_den_sheevaplug/).