Outils pour utilisateurs

Outils du site


linux:adminsys:rtm

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
linux/adminsys/rtm.txt · Dernière modification : 13/04/2009 07:32 de daniel