O Zabbix fornece um método eficiente e confiável para monitorar infraestrutura de TI distribuida: os proxies.
Um Proxy Zabbix pode coletar dados de performance e disponibilidade em nome do Zabbix Server. Desta forma o proxy transfere para sí parte da carga de processamento de coletar os dados que normalmente seria atribuída ao Zabbix Server.
Além disso, usar um proxy é a forma mais fácil de implementar uma monitoração com configuração centralizada, mas coleta distribuída, onde os agentes e proxies se reportam a um Zabbix Server e os dados são armazenados de forma centralizada.
Um Zabbix proxy pode ser usado para:
O proxy requer apenas uma conexão com o Zabbix Server na porta 10051. Desta forma fica mais simples de se configurar as regras de firewall.
Requisitos mínimos recomendados: 2 CPUs, 2 GB de RAM, HD >= 50 GB
apt-get install snmp snmp-mibs-downloader
Pode ser num Ubuntu-Server OU num Raspberry-PI. Escolha o repositório correto.
Num Ubuntu 22.04
wget -c https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-4+ubuntu22.04_all.deb
dpkg -i zabbix-release_6.0-4+ubuntu22.04_all.deb
apt update
Num Raspberry PI OS
wget https://repo.zabbix.com/zabbix/6.0/raspbian/pool/main/z/zabbix-release/zabbix-release_6.0-5%2Bdebian11_all.deb
dpkg -i zabbix-release_6.0-5+debian11_all.deb
apt update
apt -y install zabbix-agent2 zabbix-get zabbix-sender zabbix-proxy-sqlite3
Configurar zabbix-agent2, alterando o arquivo /etc/zabbix/zabbix_agent2.conf
de acordo com o dodelo abaixo:
PidFile=/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Timeout=30
Server=127.0.0.1, zabbix.tiozaodolinux.com, zbx-prx-cliente01.tiozaodolinux.com
ServerActive=zabbix.tiozaodolinux.com
Hostname=Zabbix Proxy Cliente01
TLSConnect=psk
TLSAccept=unencrypted,psk
TLSPSKIdentity=PSK RASP XXX
TLSPSKFile=/etc/zabbix/zabbix_proxy.psk
Include=/etc/zabbix/zabbix_agent2.d/*.conf
ControlSocket=/run/zabbix/agent.sock
AllowKey=system.run[*]
Include=./zabbix_agent2.d/plugins.d/*.conf
PS.: Cada cliente possuirá entradas DNS
zbx-prx-XXX.tiozaodolinux.com
conforme exemplo abaixo:
Onde zbx=Zabbix, prx=Proxy e XXX=ClienteIsso facilita MUITO na padronização das configurações tanto do Zabbix Server quanto do Proxy.
zbx-prx-cliente01 IN A 192.168.0.23 ; Cliente 01 - Zabbix Proxx
zbx-prx-cliente02 IN A 192.168.0.25 ; Cliente 02 - Zabbix Proxx
zbx-prx-cliente03 IN A 192.168.0.50 ; Cliente 03 - Zabbix Proxx
Exemplo de resolução de nome da entrada de DNS do CLIENTE:
$ host zbx-prx-cliente01.tiozaodolinux.com
zbx-prx-cliente01.tiozaodolinux.com has address 192.168.250.23
Configurar zabbix-proxy, alterando o arquivo /etc/zabbix/zabbix_proxy.conf
de acordo com o modelo abaixo:
Server=zabbix.tiozaodolinux.com
Hostname=Zabbix Proxy Cliente01
LogFile=/var/log/zabbix/zabbix_proxy.log
EnableRemoteCommands=1
LogRemoteCommands=1
LogFileSize=0
PidFile=/run/zabbix/zabbix_proxy.pid
SocketDir=/run/zabbix
DBName=/etc/zabbix/zabbix_proxy.db
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
ProxyOfflineBuffer=24
StartPollers=50
StartPollersUnreachable=50
StartPingers=50
StartDiscoverers=50
ConfigFrequency=60
StartVMwareCollectors=14
VMwareCacheSize=512M
Timeout=30
StatsAllowedIP=127.0.0.1
TLSConnect=psk
TLSAccept=psk
TLSPSKIdentity=PSK PROXY CLIENTE01
TLSPSKFile=/etc/zabbix/zabbix_proxy.psk
Criar o arquivo /etc/zabbix/zabbix_proxy.psk
da seguinte maneira:
openssl rand -hex 32 > /etc/zabbix/zabbix_proxy.psk
cat /etc/zabbix/zabbix_proxy.psk
af8ced32dfe8714e548694e2d29e1a14ba6fa13f216cb35c19d0feb1084b0429
Dar permissão pro usuário zabbix no BD sqlite
touch /etc/zabbix/zabbix_proxy.db
chown zabbix:zabbix /etc/zabbix/zabbix_proxy.db
Ativar os serviços:
systemctl enable --now zabbix-proxy zabbix-agent2
Testar o zabbix-agent2:
zabbix_get -s 127.0.0.1 -k system.uptime
Observar os logs:
tail -f /var/log/zabbix/zabbix_{agent2,proxy}.log
Observe os logs do zabbix-proxy tentando se comunicar com o zabbix-server. Enquanto não for criado o zabbix-proxy corretamente na interface https://zabbix.tiozaodolinux.com para que o proxy consiga se comunicar com o server, um erro como abaixo ocorrerá.
87503:20220810:140915.618 Unable to connect to [zabbix.tiozaodolinux.com]:10051 [TCP successful, cannot establish TLS to [[zabbix.tiozaodolinux.com]:10051]: SSL_connect() set result code to SSL_ERROR_SSL: file ssl/record/rec_layer_s3.c line 1544: error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure: SSL alert number 40: TLS read fatal alert "handshake failure"]
87827:20220810:141225.145 Will try to reconnect every 1 second(s)
PS: No cadastro do host e do proxy lembre-se de utilizar o Hostname, o TLSPSKIdentity e o conteúdo do TLSPSKFile informado na configuração do agent2
Hostname=xxxx.tiozaodolinux.com <==== Esse é o nome do host a ser cadastrado no zabbix-server
TLSPSKIdentity=PSK PROXY CLIENTE01 <==== Essa é a identificação do host
TLSPSKFile=/etc/zabbix/zabbix_proxy.psk <===== o conteúdo desse arquivo é o **HASH** a ser utilizado
Mais detalhes de como gerar dessa chave: https://www.zabbix.com/documentation/6.0/en/manual/encryption/using_pre_shared_keys
Se o firewalld (
systemctl status firewalld.service
) estiver habilitado, lembre-se de liberar as portas 10050/10051
firewall-cmd --permanent --add-port=10051/tcp # configura o firewalld para permitir conexões ao proxy do zabbix
firewall-cmd --permanent --add-port=10050/tcp # configura o firewalld para permitir conexões ao agente do zabbix
firewall-cmd --reload
Monitoramento distribuído - https://www.zabbix.com/documentation/6.0/pt/manual/distributed_monitoring
O Zabbix Proxy - https://www.zabbix.com/documentation/6.0/pt/manual/distributed_monitoring/proxies
Download Oficial do Zabbix - https://www.zabbix.com/download?zabbix=6.0&os_distribution=ubuntu&os_version=22.04&components=proxy&db=sqlite3&ws=