Monitoração do CBQ

Publicado por Jose Geraldo 08/09/2004

[ Hits: 9.343 ]

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

Firewall Drop

Atualizar repositório no Linux desabilitando a hibernação do sistema

Firewall completo com iptables

Backup bases de dados Firebird com envio via FTP e local

Administração de VirtualBox com ShellScript


  

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