Archive

Archive for July, 2014

Telemetria para nerd

July 25, 2014 1 comment

 

Ola pessoal, venho aqui novamente postar algo que eu considero relativamente importante, iremos aprender como criar ou plotar graficos. O título talvez nao tenha nada haver apesar que eu discordo. O software que iremos estudar é o rrdtool. RRDtool é um banco de dados Round Robin. A tecnologia Round robin funciona com uma quantidade pre-determinada de dados, e um ponteiro para a posicao atual. Imagine um anel ou circulo com posições, onde cada posicao no circulo armazena dados. Quando os dados são lidos posição por posicao os dados podem ser armazandos ou lidos. Depois de um tempo, todas as posiçoes disponíveis serão reutilizados e o processo continua. RRDtool utiliza arquivos rrd. RRDtool foi desenvolvido por Tobias Oetiker. Para o nosso exemplo vamos imaginar o circuito de Monaco, e vamos coletar os km percorridos.

monaco3

Como a formula 1 pra mim ultimamente anda sem emoção e sem graça, vamos ser praticos, digamos que a mclaren percorre o circuito e coletamos os seguintes dados a cada passagem pela linha de chegada:

 

Horário Timestamp Distancia(m)
 11:47  1406303220  4000
 11:51  1406303460  7400
 11:56  1406303760  11200
 12:02  1406304120  15230
 12:07  1406304420  18000
12:12  1406304720  21400
12:17  1406305020  25400
12:22  1406305320  28600
12:27  1406305620  32100
12:32  1406305920  35700
12:37  1406306220  39000
12:42  1406306520  43150
12:47  1406306820  47001
12:52  1406307120  50600
12:57 1406307420  54000

Após a coleta vamos criar nosso arquivo rrd. Criamos com o comando rrdtool,iremos criar um arquivo rrd chamdo monaco.rrd, que inicia no dia 2014/07/25 as 11:47:00 no qual e utilizado timestmap ou epoch unix se voce nao sabe do que eu estou falando leia meu post sobre epoch. Para nosso arquivo rrd iremos criar um datasource ou DS de nome dados e tipo COUNTER o qual é um contador, o qual é lido a cada 5 minutos que é o padrão, na mesma base de dados criamos 1 conjunto de dados RRA. A “amostra” RRA ira conter a média(AVERAGE) e contém 24 amostras( 24 vezes amostras de 5 minutos totalizando 2 horas). Segue comando

rrdtool create monaco.rrd –start 1406303220 DS:dados:COUNTER:600:U:U RRA:AVERAGE:0.5:1:24

Fico muito confuso né, vamos tentar melhorar isso digamos que mude e deixar a parte RRA assim

RRA:AVERAGE:0.5:6:10

O restante do comando definiremos abaixo

  • –start: define o inicio do arquivo rrd quando ele começa
    DS: datasource existe alguns tipo nao vou mencionar isso e um inicio fico para vc olhar no site RRDTool, mas alguns deles que posso citar são COUNTER, ABSOLUTE, etc.
  • O DS tem um formato:
  • DS:nomedoDS:heartbeat:Min:Max
  • NomedoDS: nome quaisquer para o DS
  • Heartbeat: Se em 300 segundos conforme nosso exemplo e o comportamento default, e esperar 300 segundos(5 minutos), para receber uma coleta, caso contrario nao receba nenhum dado ele ira esperar mais heartbeat segundos.
  • Min: Valor minimo da coleta
  • Max: Valor maximo da coleta

Isso diz para armazenar 6 coletas de 5 minutos(que é o período de coleta), tipo depois de 6 coletas vc guarda uma como a média, e guarde 10 valores de média. Acho que agora ficou bom né 🙂

Bom vamos agora colocar dados no nosso banco de dados RRD, novamente com o comando rrdtool

rrdtool update monaco.rrd 1406303220:4000 1406303460:7400 1406303760:11200
rrdtool update monaco.rrd 1406304120:15230 1406304420:18000 1406304720:21400
rrdtool update monaco.rrd 1406305020:25400 1406305320:28600 1406305620:32100
rrdtool update monaco.rrd 1406305920:35700 1406306220:39000 1406306520:43150
rrdtool update monaco.rrd 1406306820:47001 1406307120:50600 1406307420:54000

Vamos visualizar o que foi inserido com o comando “rrdtool fetch”.

 

[ricardobarbosa@shark ~]$ rrdtool fetch monaco.rrd AVERAGE –start 1406303400 –end 1406307900
dados

1406303700: -nan
1406304000: -nan
1406304300: 9.2333333333e+00
1406304600: 1.0493333333e+01
1406304900: 1.2533333333e+01
1406305200: 1.1733333333e+01
1406305500: 1.1266666667e+01
1406305800: 1.1866666667e+01
1406306100: 1.1400000000e+01
1406306400: 1.2700000000e+01
1406306700: 1.3235333333e+01
1406307000: 1.2332666667e+01
1406307300: 1.1598666667e+01
1406307600: -nan
1406307900: -nan
1406308200: -nan
[ricardobarbosa@shark ~]$

O que são esses dados? vamos pegar o primeiro caso para entender. Vamos fazer o delta ou calculo de uma velocidade média

 11:47  1406303220  4000
 11:51  1406303460  7400

Tempo

1406303220-1406303460=240

Distância

7400-4000=3400

Velocidade média = 3400/240 aproximamente 10 por ele faz a média entre os 300 segundos ele normaliza os dados, um detalhe, quando crio o arquivo por default ele usa o intervalo de captura como 300 segundos o que acontece se nesses 300 segundos não for detectado nenhum dado? ele espera mais 300 segundos devido a configuração de heartbeat(DS:dados:COUNTER:600:U:U)

Agora vamos gerar o gráfico.

rrdtool graph monaco.png –start 1406303400  –end 1406307900 DEF:dadosgraph=monaco.rrd:dados:AVERAGE LINE2:dadosgraph#FF0000

 

Temos várias opções de grafico como LINE2, GAUGE, etc assim como DST e tipos de DS

Veja o gráfico

monaco

 

O rrdtool e muito extenso cheio de detalhes que seria dificil falar tudo aqui, caso tenha dúvidas de uma olhada no site rrdtool ou comments 😀

Categories: Uncategorized