====== Personnalisation rtm ======
===== Log du résultat =====
Afin de récupérer la sortie de rtm dans un log, on modifie la ligne de lancement (dans /etc/crontab) par rapport à l'install par défaut.
*/1 * * * * root /usr/local/rtm/bin/rtm XX > /dev/null 2> /dev/null
//XX est un nombre aléatoire//
devient
*/1 * * * * root /home/bin/run_rtm.sh > /dev/null 2> /dev/null
pour avoir un log de l'état de la machine. Ce /home/bin/run_rtm.sh contient
#!/bin/sh
LOGDIR=/var/log/rtm
LOGTMP=$LOGDIR/rtm.last.log
# pour lecture tranquille
LOGBAK=$LOGDIR/rtm.last.log.bak
# pour memoire
LOGFULL=$LOGDIR/rtm.log
# les erreurs
LOGERR=$LOGDIR/rtm_error.log
# fréquence (en minutes) du backup de LOGTMP dans LOGFULL
FREQ=10
# verif de la presence des fichiers
[ -d $LOGDIR ] || mkdir $LOGDIR
[ -f $LOGTMP ] || touch $LOGTMP
[ -f $LOGBAK ] || touch $LOGBAK
[ -f $LOGFULL ] || touch $LOGFULL
[ -f $LOGERR ] || touch $LOGERR
# on ne met dans le log complet qu'un rtm sur 10
m=$(date '+%M')
# il faut virer le 1er 0 des minutes, car bash ne peut pas comparer 08 et 09 (octal)
m2=${m#0}
let "m2 %= $FREQ" #modulo
[ $m2 -eq 0 ] && echo>>$LOGFULL && cat $LOGBAK >> $LOGFULL
mv -f $LOGTMP $LOGBAK
> $LOGTMP
# On préfixe avec la date de lancement
TS="[$(/bin/date '+%F %T')]"
/usr/local/rtm/bin/rtm 41 | sed -e "s/^rtm/$TS/" >> $LOGTMP 2>>$LOGERR
===== Personnalisation des mesures =====
J'ajoute le nb de processes et de connexions réseau, dans un /usr/local/rtm/scripts/min/checks_perso
#!/bin/bash
TMPBASE=/tmp/$(basename $0)
# ATTENTION, vzctl exec fait un reset de l'entrée standard, donc un "vzlist|while read" ne marche pas
for id in $(vzlist|awk '{print $1}')
do
if [ $id = 'CTID' ]
then # ligne de titre, on traite le host
TMP="$TMPBASE.proc.0"
ps -e > $TMP
echo "mINFO_PROCESSES_HOST_total|$(wc -l<$TMP)"
# pour les infos réseau, après le if
TMP="$TMPBASE.net.0"
netstat -tanu > $TMP
host='HOST'
else
TMP="$TMPBASE.proc.$id"
vzctl exec $id ps aux > $TMP
echo "mINFO_PROCESSES_VM${id}_total|$(wc -l<$TMP)"
for prog in apache2 mysql
do
echo "mINFO_PROCESSES_VM${id}_$prog|$(grep -c $prog $TMP)"
done
echo "mINFO_PROCESSES_VM${id}_mail|$(egrep -c '(postfix|dovecot|spamd)' $TMP)"
TMP="$TMPBASE.net.$id"
vzctl exec $id netstat -tanu > $TMP
host="VM$id"
fi
# Ces commandes sont communes host & vm
echo "mINFO_TCP_${host}_listen|$(grep tcp $TMP|grep -c LISTEN)"
echo "mINFO_TCP_${host}_established|$(grep tcp $TMP|grep -c ESTABLISHED)"
echo "mINFO_TCP_${host}_wait|$(grep tcp $TMP|grep -c WAIT)"
echo "mINFO_TCP_${host}_total|$(grep -c tcp $TMP)"
echo "mINFO_UDP_${host}_total|$(grep -c udp $TMP)"
done