PDA

View Full Version : Graficos contínuos


spaww
04-01-2010, 13:34
Caros,

Estou no processo de monitoração das impressoras (não do servidor de impressão) do meu parque. Tais impressoras podem ser, ou não, desligadas a qualquer momento pelos usuários finais.

Isso está me gerando gráficos com "soluços"... faixas de tempo sem dados...

Para gráficos de disponibilidade tudo bem visto que é uma faixa de tempo que não fora coletado nenhum dado. Mas para a coleta de informações cumulativas (quantidade de páginas impressas, níveis de toner, etc) este gráfico já não serve tendo tais partes sem dados.

Alguma idéia de como resolver isso ?

[]s,
Adail Horst
INEP

zabbix_zen
06-01-2010, 18:25
Ola spaww.

Não sei como está a fazer a colecta de dados e o correspondente envio para o Zabbix.
Mas num cenário de ter uma script que extrai os dados e depois a envia por zabbix_sender(ou seja, um qualquer cenário que você controla o fluxo de informação) é relativamente simples.

->Script colecta dados
->se o valor retornado for nulo, forçar guardar o valor NULL, NVL, NULO, ou qualquer string autoexplicativa à sua escolha.
->enviar o valor da variavel por zabbix_sender para o Zabbix Server.
(O Zabbix Server não vai compreender o significado desse valor e manterá o valor anteriormente colectado, mantendo o seu gráfico continuo)

spaww
06-01-2010, 18:29
Ola spaww.

Não sei como está a fazer a colecta de dados e o correspondente envio para o Zabbix.
Mas num cenário de ter uma script que extrai os dados e depois a envia por zabbix_sender(ou seja, um qualquer cenário que você controla o fluxo de informação) é relativamente simples.

->Script colecta dados
->se o valor retornado for nulo, forçar guardar o valor NULL, NVL, NULO, ou qualquer string autoexplicativa à sua escolha.
->enviar o valor da variavel por zabbix_sender para o Zabbix Server.
(O Zabbix Server não vai compreender o significado desse valor e manterá o valor anteriormente colectado, mantendo o seu gráfico continuo)

Eu Coleto via snmp Diretamente, não tenho como "forçar" um valor. :(

exkg
06-01-2010, 18:46
Oi Adail,

Na pratica o dado nao existe (nao foi coletado) e nao vai ter grafico.

Concordo que 'graficos com buracos' nao sao nada agradaveis.

Imagino que existem algumas abordagens / possibilidades:

- 'mascarar' essa falta de dados (com um script como sugerido pelo zabbix_zen)

PROS: ficamos sem os buracos no grafico;
CONTRAS: isso vai criar um grafico 'falso' com dados que nao sao reais. Isso pode confundir quem estah avaliando o comportamento padrao de algum item;


- conviver com os 'buracos'
PROS: nao sei se tem algum :) (mas dah para afirmar que um buraco no grafico eh um indicativo de problema na coleta);
CONTRAS: ter o impacto visual negativo de ver o grafico 'picotado'


Se nao me engano o CACTI (e outros baseados em RRD) tratam as falhas nas coletas 'preenchendo' o buraco com uma linha reta entre o valor mais antigo e o mais recente.

O ZABBIX armazena os dados de graficos em tabelas especificas e o grafico eh exibido com base nos valores armazenados. Quando o grafico eh 'montado' o ZABBIX NAO faz verificacoes se existe ou nao dado no intervalo selecionado.


[]s,
Luciano

spaww
06-01-2010, 21:03
Oi Adail,

Na pratica o dado nao existe (nao foi coletado) e nao vai ter grafico.

Concordo que 'graficos com buracos' nao sao nada agradaveis.

Imagino que existem algumas abordagens / possibilidades:

- 'mascarar' essa falta de dados (com um script como sugerido pelo zabbix_zen)

PROS: ficamos sem os buracos no grafico;
CONTRAS: isso vai criar um grafico 'falso' com dados que nao sao reais. Isso pode confundir quem estah avaliando o comportamento padrao de algum item;


- conviver com os 'buracos'
PROS: nao sei se tem algum :) (mas dah para afirmar que um buraco no grafico eh um indicativo de problema na coleta);
CONTRAS: ter o impacto visual negativo de ver o grafico 'picotado'


Se nao me engano o CACTI (e outros baseados em RRD) tratam as falhas nas coletas 'preenchendo' o buraco com uma linha reta entre o valor mais antigo e o mais recente.

O ZABBIX armazena os dados de graficos em tabelas especificas e o grafico eh exibido com base nos valores armazenados. Quando o grafico eh 'montado' o ZABBIX NAO faz verificacoes se existe ou nao dado no intervalo selecionado.


[]s,
Luciano

Solução 4... engenharia reversa e fazer aquela ferramenta de gráficos em flash gerar o que eu preciso....

exkg
07-01-2010, 17:51
Na verdade basta pegar os dados jah coletados que ficam nas tabelas TRENDS* ;)


mysql> desc trends_uint;
+-----------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+---------------------+------+-----+---------+-------+
| itemid | bigint(20) unsigned | NO | PRI | 0 | |
| clock | int(11) | NO | PRI | 0 | |
| num | int(11) | NO | | 0 | |
| value_min | bigint(20) unsigned | NO | | 0 | |
| value_avg | bigint(20) unsigned | NO | | 0 | |
| value_max | bigint(20) unsigned | NO | | 0 | |
+-----------+---------------------+------+-----+---------+-------+
6 rows in set (0.04 sec)

mysql> desc trends;
+-----------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+---------------------+------+-----+---------+-------+
| itemid | bigint(20) unsigned | NO | PRI | 0 | |
| clock | int(11) | NO | PRI | 0 | |
| num | int(11) | NO | | 0 | |
| value_min | double(16,4) | NO | | 0.0000 | |
| value_avg | double(16,4) | NO | | 0.0000 | |
| value_max | double(16,4) | NO | | 0.0000 | |
+-----------+---------------------+------+-----+---------+-------+
6 rows in set (0.00 sec)

mysql> select * from trends limit 10;
+--------+------------+-----+-----------+-----------+-----------+
| itemid | clock | num | value_min | value_avg | value_max |
+--------+------------+-----+-----------+-----------+-----------+
| 19494 | 1231524000 | 3 | 1.0000 | 1.0067 | 1.0100 |
| 19494 | 1231527600 | 33 | 1.0000 | 1.0093 | 1.0500 |
| 19494 | 1231531200 | 30 | 1.0000 | 1.0089 | 1.0400 |
| 19494 | 1231765200 | 9 | 0.1200 | 0.1422 | 0.1800 |
| 19494 | 1231768800 | 44 | 0.0500 | 0.1520 | 0.2700 |
| 19494 | 1231772400 | 39 | 0.0600 | 0.1058 | 0.1600 |
| 19494 | 1231776000 | 22 | 0.0000 | 0.0368 | 0.1100 |
| 19494 | 1231779600 | 35 | 0.0000 | 0.0287 | 0.0800 |
| 19494 | 1231783200 | 32 | 0.0000 | 0.0440 | 0.1000 |
| 19494 | 1231786800 | 29 | 0.0000 | 0.0075 | 0.0300 |
+--------+------------+-----+-----------+-----------+-----------+
10 rows in set (0.00 sec)

mysql> select * from trends_uint limit 10;
+--------+------------+-----+-----------+-----------+-----------+
| itemid | clock | num | value_min | value_avg | value_max |
+--------+------------+-----+-----------+-----------+-----------+
| 18435 | 1220284800 | 2 | 1 | 1 | 1 |
| 18435 | 1220295600 | 1 | 1 | 1 | 1 |
| 18435 | 1220353200 | 1 | 1 | 1 | 1 |
| 18435 | 1220356800 | 56 | 1 | 1 | 1 |
| 18435 | 1220360400 | 41 | 1 | 1 | 1 |
| 18435 | 1220364000 | 57 | 1 | 1 | 1 |
| 18435 | 1220367600 | 51 | 1 | 1 | 1 |
| 18435 | 1220371200 | 39 | 1 | 1 | 1 |
| 18435 | 1220374800 | 45 | 1 | 1 | 1 |
| 18435 | 1220378400 | 45 | 1 | 1 | 1 |
+--------+------------+-----+-----------+-----------+-----------+
10 rows in set (0.00 sec)


Nelas estao TODOS os dados utilizados para a montagem dos graficos.


[]s,
Luciano

spaww
07-01-2010, 22:45
Achei aqui q teoricamente teria q fazer uma conversão de Unix TimeStamp para data de "gente" kkkk ...
Vc ja fez esta conversão ??
SELECT clock, CONVERT_TZ(FROM_UNIXTIME(trends.`clock`),'+00:00', '-03:00') FROM `trends`
order by clock desc