These points of data make a beautifull line… Speicherverbrauch von Debian überwachen und als Diagramm darstellen

Now these points of data make a beautiful line

and we’re out of beta, we’re releasing on time

 

Ähm ja… Das eigentliche Thema ist nicht ein bekanntes Lied, sondern ein Tipp, wie man den Speicherverbrauch eines Servers überwachen und visualisieren kann. Mein Problem war folgendes: Mein vServer (der überrings heute nach ausgefallen ist-Node Fehler…) hat nur 200MB eigenen Speicher, daher habe ich immer ein wachendes Auge auf die Speicherauslastung. Grade der Virenscanner ClamAV ist sehr Speicher hungrig. Wenn ich nun per SSH und htop nachgeschaut habe, war der Speicher oft sehr voll. Lag das nun am SSH Server und meinen Aktionen, oder pfiff der Server wirklich aus dem letzten Loch?

Ich habe mir zu Überwachung also ein kleines Shell-Script geschrieben (mein erstes, seid gnädig…), das den freien Speicher, den durch Anwendungen belegten Speicher (ohne den Cache des Systems) und den belegten Swap Speicher aufzeichnet. Die Daten landen in einer CSV-Datei die dann mit Excel ausgewertet wird.

Zuerst also das Script:


#!/bin/sh

#check for args
if [ $# -ne 1 ]
then
 echo "Name of logfile missing!"
 exit 1
fi

#create log file if needed
if [ ! -e $1 ]
then
 touch $1
 echo "Time,FreeMem,UsedMem,UsedSwap">$1
fi

#check memory size and write to the file
line=`date "+%d.%m.%y %H:%M:%S"`
line=$line,`free -m|grep Mem:|awk '{ print $4 }'`
line=$line,`free -m|grep cache:|awk '{ print $3 }'`
line=$line,`free -m|grep Swap:|awk '{ print $3 }'`

echo $line>>$1

exit 0

Das Script muss mit dem Dateinamen der Logdatei aufgerufen werden. Wenn die Datei noch nicht existiert, wird sie mit dem Header erstellt, sonst wird einfach nur ans Ende geschrieben. Die eigentliche Speicherbelegung wird mit grep und akw aus der Ausgabe von free geschnitten.

Das Script muss natürlich noch in regelmäßigen Intervallen aufgerufen werden, ich schlage alle 30 Minuten vor. Das erledigt natürlich ein Cronjob:


*/30 * * * * /home/niklas/monitor_mem.sh memlog.csv

Dateinamen sind natürlich anzupassen.

Wenn das Script jetzt ein paar Tage seine Arbeit verrichtet hat, will man ja die Ergebnisse auch sehen. Dazu die erstellte CSV-Datei vom Server hohlen (per FTP etc.) und in Excel (ich gehe von 2010 aus) öffnen. Nicht per Datei/Öffnen, sondern per Daten/Aus Text. Im Assistent dann unbedingt als Zellentrenner das Komma angeben. Warum Excel bei einem Comma-seperatet-File nicht auf die Idee kommt, dass der Trenner ein Komma ist, weiß ich auch nicht…

Nun alle Spalten mit Daten auswählen und über Einfügen/Diagramme/Punkte/Punkte mit interpolierten Linien ein Diagramm generieren. Das sollte dann so aussehen wie oben zu sehen ist. Mein Server kommt mit dem Speicher also aus, der Swap-Speicher wird nur kurzzeitig genutzt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.