Se você tem um sistema Zabbix ocupado, com muitas pessoas usando a interface web, talvez Grafana com dashboards complexos conectados ao seu Zabbix, e muitas outras tarefas se comunicando diretamente com o banco de dados, aqui vai uma ideia: experimente o ProxySQL. Este é um ótimo produto de código aberto que pode ajudar significativamente a melhorar o desempenho do seu banco de dados.
O que é ProxySQL?
ProxySQL é um proxy de SQL de alta performance. Ele age como um intermediário entre seus aplicativos e seu banco de dados, gerenciando conexões e consultas de maneira eficiente. Tudo o que você precisa fazer é configurar seus aplicativos – como o Zabbix – para se conectarem ao ProxySQL em vez de se conectarem diretamente ao banco de dados. O ProxySQL então gerencia um pool de conexões com o banco de dados, reutilizando conexões abertas de forma inteligente e permitindo uma gestão granular com vários servidores de banco de dados e roteamento de consultas.
Como o ProxySQL Funciona?
O ProxySQL atua como um intermediário transparente, gerenciando eficientemente as conexões com o banco de dados. Ele estabelece um pool de conexões, o que significa que as conexões abertas podem ser reutilizadas imediatamente, reduzindo o número de conexões inativas que consomem recursos do banco de dados.
Benefícios do ProxySQL
- Pooling de Conexões: Reutiliza conexões abertas, diminuindo o número de conexões inativas.
- Roteamento de Consultas: Permite um roteamento granular das consultas, distribuindo a carga de trabalho de forma eficiente.
- Redução de Latência: Melhora o tempo de resposta ao gerenciar as conexões de forma mais eficiente.
Caso Prático
No meu ambiente de teste, com poucas sessões de navegador abertas para Zabbix e Grafana, além de alguns scripts em execução, observei uma melhora significativa após a implementação do ProxySQL. Os gráficos a seguir ilustram essa mudança:
Número de Threads Conectados
O número de threads conectados caiu de 30-40 para cerca de 5.
Threads em Cache
O MySQL passou a usar threads em cache de maneira muito mais eficaz.
Como Instalar o ProxySQL e configurar o Zabbix
Vamos direto ao ponto. Se você quer configurar o Zabbix para usar o ProxySQL, siga este guia passo a passo. Vou abordar desde a instalação do ProxySQL até a configuração do Zabbix para se conectar a ele.
Passo 1: Instalar o ProxySQL
Primeiro, instale o ProxySQL. Se você estiver usando uma distribuição baseada em Debian, pode usar o seguinte comando:
sudo apt-get install proxysql
Se estiver usando outra distribuição, verifique o gerenciador de pacotes correspondente ou siga as instruções na página oficial de instalação do ProxySQL.
Passo 2: Configurar o ProxySQL
Edite o arquivo de configuração do ProxySQL. Normalmente, ele está localizado em /etc/proxysql.cnf
. Aqui estão algumas configurações importantes que você precisa ajustar:
- Versão do Servidor: Altere a versão do servidor para corresponder à versão do seu MySQL:
admin_variables=
{
admin_credentials="admin:admin"
mysql_ifaces="0.0.0.0:6032"
version="5.7.30" # Altere para a versão do seu servidor MySQL
}
- Porta e Interfaces: Por padrão, o ProxySQL escuta na porta 6033. Você pode alterar isso conforme necessário:
mysql_variables=
{
threads=4
max_connections=2048
default_query_delay=0
default_query_timeout=36000000
poll_timeout=2000
interfaces="0.0.0.0:6033" # Altere conforme necessário
}
- Servidores MySQL: Defina a localização do seu servidor MySQL e como se conectar a ele:
mysql_servers =
(
{
address = "127.0.0.1" # Endereço do seu servidor MySQL
port = 3306 # Porta do seu servidor MySQL
hostgroup = 0
max_connections = 100
}
)
- Usuários: Configure os usuários que podem se conectar ao ProxySQL:
mysql_users: ( { username = "zabbix" password = "zabbix_password" # Senha do usuário Zabbix no MySQL default_hostgroup = 0 active = 1 } )
Depois de configurar, inicie o ProxySQL:
systemctl enable proxysql
systemctl start proxysql
Passo 3: Configurar o Zabbix para Usar o ProxySQL
Agora, você precisa ajustar a configuração do Zabbix para se conectar ao ProxySQL em vez de se conectar diretamente ao MySQL. Normalmente, isso envolve editar o arquivo de configuração da interface web do Zabbix.
- Localize o Arquivo de Configuração: O arquivo de configuração geralmente está em
/etc/zabbix/web/zabbix.conf.php
ou um caminho semelhante. - Edite o Arquivo de Configuração: Abra o arquivo com seu editor de texto favorito:
sudo nano /etc/zabbix/web/zabbix.conf.php
Procure pelas linhas que definem as configurações do banco de dados e ajuste conforme necessário:
$DB['TYPE'] = 'MYSQL';
$DB['SERVER'] = '127.0.0.1'; // Endereço do ProxySQL
$DB['PORT'] = '6033'; // Porta do ProxySQL
$DB['DATABASE'] = 'zabbix';
$DB['USER'] = 'zabbix';
$DB['PASSWORD'] = 'zabbix_password'; // Senha do usuário Zabbix no MySQL
- Salvar e Sair:
Salve as alterações e saia do editor.
Passo 4: Verificar a Conexão
Para garantir que tudo está funcionando corretamente, reinicie o servidor web e o serviço do Zabbix. Para o Apache, você pode usar:
sudo systemctl restart apache2
sudo systemctl restart zabbix-server
Para o Nginx, use:
sudo systemctl restart nginx
sudo systemctl restart zabbix-server
==Verifique se o Zabbix está se conectando corretamente ao ProxySQL, acessando a interface web do Zabbix e verificando se há erros relacionados ao banco de dados.==
Configuração Avançada
Se desejar se aprofundar, o ProxySQL pode ser configurado e monitorado usando um console MySQL que, por padrão, escuta na porta 6032. Você pode encontrar mais informações na documentação oficial.
Monitoramento
Existem modelos de Zabbix disponíveis para monitorar o ProxySQL, como o modelo Zabbix para ProxySQL, embora alguns possam estar desatualizados.
Considerações Finais
Implementar o ProxySQL pode exigir ajustes adicionais para fortalecer a configuração e otimizar as conexões conforme a carga de trabalho do seu ambiente. No entanto, os benefícios em termos de desempenho podem ser significativos. Além disso, é uma oportunidade divertida para qualquer entusiasta de tecnologia experimentar e explorar.
Espero que esta explicação tenha sido clara e útil. Se você tiver alguma dúvida ou quiser discutir mais sobre ProxySQL, deixe um comentário abaixo!