Você está na página 1de 2

Zabbix Remoo de picos nos grficos

Ao selecionar um tempo maior em um grfico s vezes podemos nos deparar com picos que sabemos que
so informaes incorretas (portas de 1Gb com picos de 1Tb por exemplo devido a mudana de unidades ou
multiplicadores) e que impossibilitam a visualizao correta dos dados no grfico (j que os valores reais
ficam irrisrios para serem visualizados).
Vou utilizar como exemplo um grfico de uma porta de 1Gbps onde a mdia de trfego de 400Mbps em
horrios de pico mas ao visualizar o grfico de 6 meses aparece um pico de 28Tbps. Com isso o trfego em
real em Mbps fica representado por uma linha na horizontal.

Ao dar o zoom nesse pico vejo pelo grfico o momento desse registro no meu horrio local (UTC-3):
14/dezembro/2015 s 14:00. Como j faz alguns meses, pela minha configurao esse registro no se
encontra mais no histrico do zabbix, sendo somente um valor por hora na tabela de trends para cada item
que forma o grfico.
No caso desse grfico de exemplo, ele composto pelo item de trfego de download (com id 23778, que
pode ser obtido pela URL do item na lista de itens do host) e pelo item de trfego de upload (id 23773).
Com a informao do horrio do pico e dos itens que compem o grfico, podemos remover essas duas
entradas do banco de dados. Sabendo que esses dados ficam na tabela trends_uint do Zabbix, falta conhecer
como os valores ficam registrados:
MariaDB [zabbix]> SELECT * FROM trends_uint LIMIT 1;
+--------+------------+-----+-----------+-----------+-----------+
| itemid | clock
| num | value_min | value_avg | value_max |
+--------+------------+-----+-----------+-----------+-----------+
| 23271 | 1438056000 |
6 |
0 |
0 |
0 |
+--------+------------+-----+-----------+-----------+-----------+
1 row in set (0.00 sec)

O horrio do registro do item (clock) fica no formato unix time (e em UTC). Para visualizar os valores no banco
de dados, precisamos agora converter o horrio antes e aps o pico para fazer uma busca por valores
anormais. Como o pico foi em 14/dezembro/2015 s 14:00 (UTC: 17:00), convertendo para unix time temos:
$ date -ud "12/14/2015 17:00:00" "+%s"
1450112400

Como quero fazer uma busca por registros ao redor desse horrio para ficar mais didtico e fcil de visualizar
um valor anormal, fao:
$ date -ud "12/14/2015 15:00:00" "+%s" && date -ud "12/14/2015 19:00:00" "+%s"
1450105200
1450119600

Agora posso fazer uma busca por registros desses itens dentro dessa faixa de tempo:
MariaDB [zabbix]> SELECT * FROM trends_uint WHERE itemid in (23773,23778)
AND clock > 1450105200 AND clock < 1450119600;
+--------+------------+-----+-----------+-------------+----------------+
| itemid | clock
| num | value_min | value_avg
| value_max
|
+--------+------------+-----+-----------+-------------+----------------+
| 23773 | 1450108800 | 719 |
1906104 |
7703231 |
41361016 |
| 23773 | 1450112400 | 719 |
2323448 | 8490750769 | 6095932032440 |
| 23773 | 1450116000 | 720 |
2585440 |
6326208 |
31320464 |
| 23778 | 1450108800 | 710 | 28301760 |
96702255 |
283796704 |
| 23778 | 1450112400 | 713 | 16378672 | 39526630539 | 28129790519632 |
| 23778 | 1450116000 | 720 | 28852880 |
71812671 |
151712360 |
+--------+------------+-----+-----------+-------------+----------------+
6 rows in set (0.00 sec)

Podemos ver que as entradas onde constam os valores anormais possuem clock com o valor 1450112400
que havia sido obtido inicialmente ao converter o horrio do pico para unit time. Ou seja, se no fosse para
exemplificar, o DELETE j poderia ter sido realizado especificando o horrio desde o comeo:
MariaDB [zabbix]> DELETE FROM trends_uint WHERE itemid in (23773,23778) and
clock=1450112400;
Query OK, 2 rows affected (0.02 sec)

Aps isso, teremos um grfico mais real: