Bei bestimmten RAM-Verbrauch Warnmail

MagicJojo

Registered User
Hallo,

wie kann ich in Debian Lenny einen Cronjob schreiben, der täglich den RAM-Verbrauch prüft und bei mehr als 1 Gb Verbrauch mir eine Warnmail schickt?

Vielen Dank
MJ
 
Was bringt es dir, wenn du täglich den RAM-Verbrauch misst? Alle paar Minuten oder einen ähnlichen Zeitraum würde ich für sinnvoll halten, aber täglich?! Wo besteht nun dein Problem? Ein kurzes Shell-Script reicht da vollkommen.
 
Ich habe mal ein Script geschrieben (oder habe ich es irgendwo gefunden? Keine Ahnung), das etwas Ähnliches macht -- allerdings werden dazu die UBCs eines Virtuozzo/OpenVZ-Systems ausgelesen. Ich überlasse es Dir als leichte Übung, es so anzupassen, dass ein konstanter Wert als Limit verwendet wird und das Programm "free" zum ermitteln des Freien Speichers nimmt.

Code:
#! /bin/bash

LIMFACTOR=0.8 # 80%
DELAY=10      # every 10 seconds
MAILTO=root   # e-mail address

getMem() {
    cat /proc/user_beancounters | grep privvmpages | \
    awk 'BEGIN {OFMT="%i"; cur=0 }{ cur+=$2 } END {print cur}'
}

getLimit() {
    cat /proc/user_beancounters | grep oomguarpages | \
    awk -v f=$LIMFACTOR 'BEGIN {OFMT="%i"; lim=0 }{ lim+=$4 } END {print lim*f}'
}


if [ `whoami` != root ]; then
    echo "$0: must be root"
    exit 2
fi

echo "$0 started;"
echo "Press ^C to stop"

while true; do

    current=`getMem`
    limit=`getLimit`

    if [ $current -gt $limit ]; then
        let cmb=$current/256
        let lmb=$limit/256
        echo "Memory usage execeeds limit: $cmb MB of $lmb MB " |mailx -s "$0: memory w
arning" $MAILTO
    fi
    sleep $DELAY
done;
#
 
Hi,
Code:
#!/bin/bash

softlimit=1000;
used=$(/usr/bin/free -mo | /usr/bin/awk '{ print $3 }' | /bin/sed -n '2p');
if [[ $used -gt $softlimit ]]
then
        echo "Ihr System verbraucht mehr als $softlimit MB RAM: $used" | /usr/bin/mail -s "RAM > $softlimit MB " test@domain.de
fi
Mit freundlichen Grüßen
Flobbie
 
Back
Top