6 Configuração do TimescaleDB
Visão geral
O Zabbix suporta o TimescaleDB, uma solução de banco de dados baseada em PostgreSQL que particiona automaticamente os dados em blocos baseados em tempo para suportar um desempenho mais rápido em grande escala.
Atualmente, o TimescaleDB não é suportado pelo proxy Zabbix.
As instruções nesta página podem ser usadas para os seguintes cenários:
- Criar um banco de dados TimescaleDB ou migrar de tabelas PostgreSQL existentes para TimescaleDB (veja Configuração).
- Atualizar um esquema de banco de dados TimescaleDB existente ao atualizar o Zabbix (veja Atualizando o esquema do TimescaleDB).
Configuração
Pré-requisitos: extensão TimescaleDB de uma versão suportada instalada no servidor de banco de dados. Para instruções de instalação, consulte a documentação do TimescaleDB.
Antes de instalar o TimescaleDB, instale uma versão suportada do PostgreSQL a partir do repositório oficial do PostgreSQL.
Habilite a extensão TimescaleDB para o banco de dados específico executando:
echo "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" | sudo -u postgres psql zabbix
Executar este comando requer privilégios de administrador do banco de dados.
Se você usar um schema de banco de dados diferente de 'public', será necessário adicionar uma cláusula SCHEMA ao comando acima.
Por exemplo:
echo "CREATE EXTENSION IF NOT EXISTS timescaledb SCHEMA yourschema CASCADE;" | sudo -u postgres psql zabbix
Em seguida, execute o script postgresql/timescaledb/schema.sql.
Para novas instalações, o script deve ser executado após o banco de dados PostgreSQL padrão ter sido criado com o schema/dados iniciais (consulte criação do banco de dados).
cat /usr/share/zabbix-sql-scripts/postgresql/timescaledb/schema.sql | sudo -u zabbix psql zabbix
Ignore as mensagens de aviso informando que as práticas recomendadas não estão sendo seguidas ao executar o script schema.sql na versão 2.9.0 ou superior do TimescaleDB.
Apesar desse aviso, a configuração será concluída com sucesso.
A migração dos dados existentes de history, trends e audit log pode levar bastante tempo. O server e o frontend do Zabbix devem permanecer desligados durante o período de migração.
O script schema.sql define os seguintes parâmetros de housekeeping:
- Substituir o período de history do item
- Substituir o período de trends do item
Para usar o housekeeping particionado para history e trends, ambas as opções devem estar habilitadas. Também é possível habilitar a substituição individualmente, apenas para history ou apenas para trends.
O script postgresql/timescaledb/schema.sql define dois parâmetros adicionais:
- Habilitar compressão
- Comprimir registros com mais de 7 dias
Para remover com sucesso os dados compactados pelo housekeeper, as opções Substituir o período de histórico do item e Substituir o período de tendências do item devem estar ativadas. Se a substituição estiver desativada e as tabelas tiverem blocos compactados, o housekeeper não removerá os dados dessas tabelas e avisos sobre configuração incorreta serão exibidos nas seções Housekeeping e Informações do sistema.
Todos esses parâmetros podem ser alterados em Administração > Limpeza após a instalação.
Você pode querer executar a ferramenta timescaledb-tune fornecida pelo TimescaleDB para otimizar os parâmetros de configuração do PostgreSQL em seu postgresql.conf.
Atualizando o schema do TimescaleDB
Ao atualizar o Zabbix para uma versão que contém novos hypertables do TimescaleDB, o Zabbix server não configura automaticamente esses hypertables (por exemplo, ao atualizar do Zabbix 6.4 para o 7.0.3, pois as versões 7.0.0 e 7.0.2 introduziram novos hypertables).
Para configurar novos hypertables do TimescaleDB, siga estas etapas:
- Inicie o Zabbix server; isso atualizará o banco de dados existente.
- Verifique no arquivo de log do server se a atualização do banco de dados foi concluída; quando concluída, pare o Zabbix server. Observe que o server registra um aviso se tentar habilitar a compactação para uma tabela que não é um hypertable.
- Execute o script
postgresql/timescaledb/schema.sql; isso configura os novos hypertables do TimescaleDB. Observe que, desde o Zabbix 7.0.0, a localização e o nome do script foram alterados depostgresql/timescaledb.sqlparapostgresql/timescaledb/schema.sql.
Ignore as mensagens de aviso informando que as melhores práticas não estão sendo seguidas ao executar o script schema.sql no TimescaleDB versão 2.9.0 ou superior.
Independentemente desse aviso, a configuração será concluída com sucesso.
Compressão do TimescaleDB
A compressão nativa do TimescaleDB é suportada para todas as tabelas do Zabbix que são hypertables do TimescaleDB. Durante a atualização ou migração para o TimescaleDB, a compressão inicial das tabelas grandes pode levar bastante tempo.
Observe que a compressão é suportada sob a licença Timescale Community "timescale" e não é suportada sob a licença Apache 2.0 "apache". Se o Zabbix detectar que a compressão não é suportada, uma mensagem de aviso será gravada no log do server do Zabbix e os usuários não poderão habilitar a compressão no frontend.
Recomenda-se que os usuários se familiarizem com a compressão na documentação do TimescaleDB antes de usá-la.
Observe que há certas limitações impostas pela compressão, especificamente:
- Modificações em chunks compactados (inserts, deletes, updates) não são permitidas
- Alterações de schema para tabelas compactadas não são permitidas.
As configurações de compressão podem ser alteradas no bloco Compressão de histórico, tendências e log de auditoria na seção Administração > Limpeza do frontend do Zabbix.
| Parameter | Default | Comments |
|---|---|---|
| Enable compression | Enabled | Marcar ou desmarcar a caixa de seleção não ativa/desativa a compressão imediatamente. Como a compressão é tratada pelo Housekeeper, as alterações entrarão em vigor em até 2 vezes HousekeepingFrequency horas (definido em zabbix_server.conf)Após desabilitar a compressão, novos chunks que entrarem no período de compressão não serão compactados. No entanto, todos os dados já compactados permanecerão compactados. Para descompactar chunks previamente compactados, siga as instruções na documentação do TimescaleDB. Ao atualizar a partir de versões mais antigas do Zabbix com suporte ao TimescaleDB, a compressão não será habilitada por padrão. |
| Compress records older than | 7d | Este parâmetro não pode ser menor que 7 dias. Devido à imutabilidade dos chunks compactados, todos os dados atrasados (por exemplo, dados atrasados por um proxy) que forem mais antigos que esse valor serão descartados. |
:::note
Para melhor desempenho na atualização de trends, talvez seja interessante reduzir o "chunk_time_interval" das tabelas trends e trends_uint de 30 dias para 7 dias ou menos, dependendo de quantos items usam trends.
O objetivo dessa configuração é seguir as melhores práticas do TimescaleDB e garantir que o tamanho do chunk permaneça dentro dos recursos disponíveis do sistema.
:::