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
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