Publicado por Sysadmin Urbano | Infraestrutura, SysOps e DevOps
Um guia prático para quem vive na linha de frente da operação de sistemas.
Zabbix Proxies: distribuindo carga e garantindo resiliência
Capítulo 7 da série “Zabbix — da Migração ao Fine-Tuning” no Sysadmin Urbano.
O Zabbix Proxy é um dos recursos mais poderosos — e subutilizados — do ecossistema. Ele permite descentralizar a coleta, reduzir carga no servidor principal e manter a monitoração funcionando mesmo em caso de falhas de rede.
“Sem proxies, o Zabbix é uma estação meteorológica de um único sensor. Com proxies, torna-se uma rede completa de satélites.”
1) Por que usar proxies
- Reduz carga e conexões simultâneas no servidor principal.
- Coleta local mesmo sem link ativo com o servidor.
- Permite segmentar monitorações por regiões, clientes ou data centers.
- Armazena dados temporariamente e sincroniza quando possível.
2) Instalando um Zabbix Proxy
O processo é simples e pode ser feito tanto com SQLite (para ambientes pequenos) quanto MySQL/MariaDB (para alta escala).
# Exemplo para Oracle Linux / RHEL / CentOS
dnf install zabbix-proxy-mysql mariadb-server
systemctl enable --now mariadb
mysql_secure_installation
# Criar banco e permissões
mysql -e "CREATE DATABASE zabbix_proxy CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;"
mysql -e "CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'senha_proxy';"
mysql -e "GRANT ALL PRIVILEGES ON zabbix_proxy.* TO 'zabbix'@'localhost';"
mysql -e "FLUSH PRIVILEGES;"
# Importar schema
zcat /usr/share/zabbix-sql-scripts/mysql/proxy.sql.gz | mysql -uzabbix -p zabbix_proxy
3) Configuração do Proxy
O arquivo de configuração principal é /etc/zabbix/zabbix_proxy.conf.
Os parâmetros críticos incluem:
Server=192.168.10.100
Hostname=proxy_datacenter1
DBName=zabbix_proxy
DBUser=zabbix
DBPassword=senha_proxy
ProxyLocalBuffer=24
ProxyOfflineBuffer=48
ConfigFrequency=3600
DataSenderFrequency=1
StartPollers=20
O parâmetro ProxyOfflineBuffer define quantas horas o proxy armazenará dados localmente caso o servidor principal fique indisponível.
4) Comunicação com o Zabbix Server
No servidor principal, cadastre o proxy em Administration → Proxies → Create Proxy.
Defina o nome exatamente igual ao campo Hostname do arquivo de configuração.
Depois disso, os hosts poderão ser atribuídos a esse proxy, e o tráfego fluirá automaticamente.
5) Manutenção e expurgo do banco local
5.1) Verificando tamanho das tabelas
SELECT table_name,
ROUND((data_length + index_length)/1024/1024, 2) AS tamanho_mb
FROM information_schema.tables
WHERE table_schema = 'zabbix_proxy'
ORDER BY tamanho_mb DESC
LIMIT 10;
Em proxies grandes, o banco local também cresce rapidamente. O mesmo processo de particionamento e expurgo pode ser aplicado aqui.
5.2) Script simples de limpeza
Para proxies menores (com SQLite), use a seguinte limpeza controlada por data:
#!/usr/bin/env bash
sqlite3 /var/lib/zabbix/zabbix_proxy.db \
"DELETE FROM history WHERE clock < strftime('%s','now','-7 day');
VACUUM;"
Esse script remove dados mais antigos que 7 dias e compacta o banco.
5.3) Para bancos MySQL
#!/usr/bin/env bash
MYSQL="mysql --defaults-extra-file=$HOME/.my.cnf"
DB="zabbix_proxy"
DAYS=30
LOG="/var/log/zbx_proxy_cleanup_$(date +%F).log"
echo "== Limpando tabelas proxy ==" | tee -a "$LOG"
for T in history history_uint history_str history_text history_log; do
echo "Tabela: $T" | tee -a "$LOG"
$MYSQL -e "DELETE FROM ${DB}.${T} WHERE clock < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL ${DAYS} DAY));" >> "$LOG" 2>&1
done
echo "== Concluído ==" | tee -a "$LOG"
6) Sincronização e cache
O proxy armazena dados temporariamente em memória e no disco até que consiga reenviar ao servidor. Para verificar o status dessa comunicação:
zabbix_get -s proxy_datacenter1 -k "proxy.ping"
zabbix_get -s proxy_datacenter1 -k "proxy.history.lastsync"
zabbix_get -s proxy_datacenter1 -k "proxy.history.fromserver"
Esses dados ajudam a entender se há atraso de envio ou fila acumulada no buffer local.
7) Estratégias de distribuição
- Use proxies por segmento de rede ou cliente.
- Evite proxies genéricos para todo o ambiente.
- Proxies com banco local em SSD têm desempenho muito superior.
- Monitore a fila de sincronização com um item do tipo
zabbix[proxy,queue].
8) Boas práticas
- Mantenha versões de proxy e server sempre alinhadas.
- Evite SQLite em ambientes de alta coleta (prefira MySQL/MariaDB).
- Automatize a limpeza local como no capítulo 6.
- Em ambientes críticos, configure dual proxies para redundância.
- Verifique o espaço em disco com alertas no próprio Zabbix.
9) Conclusão
Os proxies são o elo entre performance e resiliência no Zabbix. Eles distribuem o peso, reduzem a latência e garantem que nenhum dado se perca, mesmo sob falhas de rede. Com uma configuração bem planejada e manutenção automatizada, o ambiente cresce sem sustos — e com confiança.
Sobre o Sysadmin Urbano
O Sysadmin Urbano nasceu da vivência real no front das operações de infraestrutura moderna. Aqui falamos de servidores, containers, automação, boas práticas e também dos desafios invisíveis da rotina de quem mantém sistemas vivos. Sem fórmulas mágicas, sem tutoriais pela metade — apenas conteúdo prático, direto e feito para quem sabe que a TI é tanto técnica quanto sobrevivência.
Gostou deste conteúdo?
Siga o Sysadmin Urbano para mais artigos técnicos sobre Infraestrutura, SysOps e DevOps.

Nenhum comentário:
Postar um comentário