Monitoração do CBQ

Publicado por Jose Geraldo 08/09/2004

[ Hits: 9.544 ]

Download cbqstat.txt




Pessoal

Escrevi este script para monitoração do CBQ de uma maneira mais elegante do que aquele cbq stats.

O script processa a saída do comando "cbq stats" e o traduz em uma linha por regra, mostrando a taxa em kbps efetiva, em relação à ultima execução do mesmo.

Como é ainda uma versão alfa, podem ocorrer erros na primeira execução, quando o arquivo temporário ainda não existir.

Recomendo que o mesmo somente seja executado pelo root, pois o arquivo temporário está com nome fixo.

  



Esconder código-fonte

# Script para verificar os status do CBQ de maneira mais
# estatistica que o cbq stats do cbq.init
#
# JGeraldo 08/09/2004 - v0.1 - Alpha

end_date=`date "+%s"`
if [ ! -f /tmp/cbqstat.ant ]
then
   echo "ULT_STR:`date`" > /tmp/cbqstat.ant
   echo "ULT_NUM:$end_date" >> /tmp/cbqstat.ant
   echo "ULT_STR:`date`" > /tmp/cbqstat.atu
   echo "ULT_NUM:$end_date" >> /tmp/cbqstat.atu
   stat=n
else
   echo "ULT_STR:`date`" > /tmp/cbqstat.atu
   echo "ULT_NUM:$end_date" >> /tmp/cbqstat.atu
   stat=s
fi
ult_str=`cat /tmp/cbqstat.ant|grep ULT_STR|cut -c9-80`
ult_num=`cat /tmp/cbqstat.ant|grep ULT_NUM|cut -d: -f2`
seconds=`expr $end_date - $ult_num`

cbq stats | while read p0 p1 p2 p3 p4 p5 p6 p7 p8 p9
#cat x | while read p0 p1 p2 p3 p4 p5 p6 p7 p8 p9
do
   #echo "p0:$p0 p1:$p1 p2:$p2 p3:$p3 p4:$p4 p5:$p5 p6:$p6 p7:$p7 p8:$p8"
   if [ "$p0" = "###" ]
   then
      iface=$p1
   fi
   if [ "$p0" = "qdisc" ]
   then
      rule=$p2
      rate=$p4
      burst=$p6
      laten=$p8
   fi
   if [ "$p0" = "Sent" ]
   then
      bytes=$p1
      pkts=$p3
      echo "RULE:$iface:$rule:$rate:$burst:$laten:$bytes:$pkts">> /tmp/cbqstat.atu
      bytes_ant=`cat /tmp/cbqstat.ant|grep "RULE:$iface:$rule"|cut -d: -f9`
      tbytes=`expr $bytes - $bytes_ant`
      if [ $seconds -gt 0 ]
      then
         tbits=`expr $tbytes \* 8`
         kbps=`expr $tbits / $seconds / 1024`
      fi
      siface=`echo $iface | cut -d: -f1`
      srule=`echo $rule | cut -d: -f1`
      printf "%s, rule %3s: %4d kbps in %d seconds\n" $siface $srule $kbps $seconds
   fi
done
if [ $1"Q" != "nQ" ]
then
   mv -f /tmp/cbqstat.atu /tmp/cbqstat.ant
fi

Scripts recomendados

Cluster beowulf

Album de fotografias

Compilar OpenSSL

Diferença entre datas

simulado lpi


  

Comentários
[1] Comentário enviado por Corujitu em 15/05/2007 - 18:26h

Olá José.. Tudo bem? Bom, é o seguinte: andando pelo VOL, vi sua dica sobre a saída do stats do CBQ e achei bem interessante. Resolvi copiar o script e aplicar ele aqui. Mas aconteceram duas coisas.

Na primeira vez q executei o script ele me deu o seguinte erro:
line 23: cbq: command not found

Aí fui no script e na linha 23 e observei q estava assim:
cbq stats | while read p0 p1 p2 p3 p4 p5 p6 p7 p8 p9

Mudei para:
/etc/init.d/cbq stats | while read p0 p1 p2 p3 p4 p5 p6 p7 p8 p9

Apenas coloquei o caminho todo do script cbq.

Bom, aí quando salvei o script e rodei, me retorna várias vezes o seguinte erro:

eth1, rule 1052: 615 kbps in 0 seconds
expr: erro de sintaxe
expr: erro de sintaxe
expr: erro de sintaxe

Bom, olhei o script de novo e vi uma coisa estranha: Na linha 24 logo abaixo do comando cbq stats tinha a seguinte linha:
#cat x | while read p0 p1 p2 p3 p4 p5 p6 p7 p8 p9

Imaginei q ela deveria estar assim:
cat x | while read p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 (ou seja, sem a cerquilha, pois a cerquilha iria caracterizar a linha comentada, vc concorda?).

Bom, mesmo tirando a cerquilha e fazendo as alteraões que achei necessárias, ainda me dá o seguinte erro:

line 59: syntax error: unexpected end of file

Você poderia me ajudar a ver o que estaria dando errado? Dar uma revisada no script, pois nao entendo muito de scripts. Uso aqui um Debian Etch. Agradeço desde já. Abraço.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts