Você está visualizando a documentação da versão de desenvolvimento, que pode estar incompleta.
Esta página foi traduzida automaticamente. Se você notar um erro, selecione-o e pressione Ctrl+Enter para reportá-lo aos editores.

7 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:

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.

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

A execução deste 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. 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 regular 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

Por favor, ignore mensagens de aviso informando que as melhores práticas não estão sendo seguidas ao executar o script schema.sql em TimescaleDB versão 2.9.0 ou superior. Independentemente deste aviso, a configuração será concluída com sucesso.

A migração dos dados existentes de histórico, tendências e log de auditoria pode levar muito tempo. O servidor e o frontend do Zabbix devem estar desligados durante o período de migração.

O script schema.sql define os seguintes parâmetros de limpeza:

  • Substituir período de histórico do item
  • Substituir período de tendências do item

Para usar a limpeza particionada para histórico e tendências, ambas as opções devem ser habilitadas. Também é possível habilitar a substituição individualmente, apenas para histórico ou apenas para tendências.

Para PostgreSQL e TimescaleDB, o script postgresql/timescaledb/schema.sql define dois parâmetros adicionais:

  • Habilitar compressão
  • Comprimir registros mais antigos que 7 dias

Para remover com sucesso os dados compactados pelo housekeeper, as opções Substituir período de histórico do item e Substituir 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á 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çãoHousekeeping 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 servidor Zabbix não configura automaticamente esses hypertables (por exemplo, ao atualizar do Zabbix 6.4 para o 8.0, pois as versões 7.0.0 e 7.0.2 introduziram novos hypertables).

Para configurar os novos hypertables do TimescaleDB, siga estas etapas:

  1. Inicie o servidor Zabbix; isso atualizará o banco de dados existente.
  2. Verifique no arquivo de log do servidor se a atualização do banco de dados foi concluída; quando concluída, pare o servidor Zabbix. Observe que o servidor registra um aviso se tentar habilitar a compactação para uma tabela que não é um hypertable.
  3. Execute o script postgresql/timescaledb/schema.sql; isso configura os novos hypertables do TimescaleDB. Observe que, desde o Zabbix 7.0.0, o local e o nome do script mudaram de postgresql/timescaledb.sql para postgresql/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 em versões do TimescaleDB 2.9.0 ou superiores. 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 grandes tabelas pode levar muito 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á registrada no log do Zabbix server 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 usar a compressão.

Observe que existem algumas limitações impostas pela compressão, especificamente:

  • Modificações em chunks comprimidos (inserções, exclusões, atualizações) não são permitidas
  • Alterações de esquema para tabelas comprimidas 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çãoLimpeza do frontend do Zabbix.

Parâmetro Padrão Comentários
Habilitar compressão Habilitado 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 o número de horas definido em HousekeepingFrequency (configurado em zabbix_server.conf)

Após desabilitar a compressão, novos chunks que entrarem no período de compressão não serão comprimidos. No entanto, todos os dados previamente comprimidos permanecerão comprimidos. Para descomprimir chunks previamente comprimidos, siga as instruções na documentação do TimescaleDB.

Ao atualizar de versões mais antigas do Zabbix com suporte ao TimescaleDB, a compressão não será habilitada por padrão.
Comprimir registros mais antigos que 7d Este parâmetro não pode ser inferior a 7 dias.

Devido à imutabilidade dos chunks comprimidos, todos os dados atrasados (por exemplo, dados atrasados por um proxy) que sejam mais antigos que esse valor serão descartados.

Para melhor desempenho na atualização de tendências, você pode querer reduzir o "chunk_time_interval" para as tabelas trends e trends_uint de 30 dias para 7 dias ou menos, dependendo de quantos items usam tendências. O objetivo dessa configuração é aderir às melhores práticas do TimescaleDB e garantir que o tamanho do chunk permaneça dentro dos recursos disponíveis do sistema.