quinta-feira, 16 de abril de 2020

[Sobre o Zabbix] Expurgo de dados na Tabela History para liberar espaço em disco


O procedimento que irei mostrar tem como principio realizar o expurgo de alguns dados da tabela history_uint, ou seja, mantendo dados específicos de uma data para frente.

Lembrando que este tipo de procedimento não é oficial e a execução desses passos é responsabilidade de quem executar. Para esse procedimento é necessário está habilitado innodb_file_per_table.

Obs : Foi validado no Zabbix 4.0, 4.4 e 5.0Beta com MariaDB 10.1.x

Vamos lá! \O/

##Verificar se innodb_file_per_table está habilitado##

MariaDB [(none)]> show variables like 'innodb_file_per_table';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| innodb_file_per_table | ON    |
+-----------------------+-------+
1 row in set (0.00 sec)

##Parando Serviço do Zabbix##

systemctl stop zabbix-server

##Tirando backup da base##

mysqldump --verbose -u <USUARIO> -p<SENHA>  --databases zabbix > backup-zabbix.sql

##Criando a nova tabela history_uint##

use zabbix;
CREATE TABLE history_uint_new LIKE history_uint;

##Inserindo dados na nova tabela de um determinado período##

Defina o tempo “Unix Time” com a ferramenta online.

Inserindo dados a partir de 04/15/2020 @ 00:00am (UTC) (a data atual é 16/04/2020, deixei para teste dados a partir da data citada)

INSERT INTO history_uint_new SELECT * FROM history_uint WHERE clock > '1586908800';

##Validando o insert conforme período desejado na nova tabela##

SELECT FROM_UNIXTIME(MIN(clock)) FROM `history_uint_new`;

Essa query mostra o primeiro dado inserido na tabela.

##Setando a tabela atual como Old##

ALTER TABLE history_uint RENAME history_uint_old;

##Setando a tabela nova como Atual##

ALTER TABLE history_uint_new RENAME history_uint;

##Dropando a tabela antiga##

DROP TABLE history_uint_old;

##Iniciando o Zabbix Server##

systemctl start zabbix-server

Prontinho!

Espero ter ajudado.

6 comentários:

  1. Olá everaldo, vlw por compartilhar o artigo, uma dúvida, o que precisa ser feito na base de dados e ou no zabbix para que esse expurgo seja menos recorrente, estou com uma recorrencia de 7-8dias e os dados da tabela history_uint e history voltam novamente.

    ResponderExcluir
    Respostas
    1. Você precisa é verificar o período de retenção de histórico dos itens dos seus templates. Também verificar se realmente tudo que coleta é necessário. Ou seja, trabalho de formiguinha.

      Excluir
    2. Entendi, obrigado pela atenção Everaldo, vou fazer esse pente fino ;)

      Excluir
  2. Não entendi o formato do Clock "clock > '1586908800';"

    ResponderExcluir