Instalando o ZABBIX (PROXY) em um Raspberry
No artigo passado, mostramos como é fácil usar um RASPBERRY PI para monitorar sua infraestrutura de rede. Um equipamento barato, sem muitas necessidades especificas de energia e muito robusto pode monitorar ambientes com centenas de recursos. Para quem não viu, siga este link.
Agora iremos expandir um pouco nossa abordagem: um ambiente distribuído de monitoramento.
Para recursos que se encontram fisicamente próximos, é mais fácil o monitoramento por uma única instancia do ZABBIX: tudo é monitorado dentro da mesma rede. Agora, quando temos locais fisicamente distantes, onde as interligações dependem de links de dados, é muito interessante usar uma abordagem distribuída.
Uma instalação do ZABBIX básica pode ser vista na imagem abaixo:
Veja que todos estão no mesmo segmento de rede. Com este tipo de rede, um servidor ZABBIX poderia monitorar toda a infraestrutura e você teria a informação do seu ambiente de forma exata: se um servidor cair, um link parar ou o firewall morrer, o ADMIN do ZABBIX, estando na mesma rede, consegue ver exatamente o que aconteceu.
Agora observe a imagem abaixo:
Veja que temos 3 locais distintos: Central, REMOTE A e REMOTE B. Em uma situação de falha no firewall do REMOTE A o monitoramento irá acusar a parada do firewall e de todos os Devices nesta localidade, mesmo que eles ainda estejam funcionando localmente. A disponibilidade de todos os recursos no REMOTE A foi comprometida pelo firewall que parou de funcionar.
A distribuição correta do ZABBIX, neste caso, seria assim:
Veja que temos um PROXY em cada REMOTE LOCATION. Desta forma, mesmo com a queda do firewall, poderemos ter o monitoramento dos devices localmente e, quando do reestabelecimento do firewall, informações sobre o que realmente aconteceu. Isso pode não evitar indisponibilidades, mas é muito útil para verificar a causa de problemas que seriam vistos apenas pelo monitoramento externo.
E que melhor equipamento para ser usado para isso do que um RASPBERRY?
Vamos então por a mão na massa e criar os proxies para distribuir o monitoramento?
Preparando o Raspberry
Em meus testes, usei um Pi 3 B+. Com um Pi 4 devemos ter uma melhora considerável no desempenho. Outro ponto a ser observado é o SD. Um SD de 16GB é suficiente, mas para monitorar muitas coisas, um SD mais parrudo pode ser uma saída.
Para utilizarmos o RASPBERRY, precisamos ter o sistema operacional pronto. Iremos utilizar o Raspberry Pi OS, chamado anteriormente de RASPBIAN. Baixe a imagem LITE no site https://www.raspberrypi.org/software/operating-systems/. Use o Balena Etcher para gravar em seu SD:
Nem preciso comentar que você deve ter um adaptador SD para o PC...
Após criar o SD, coloque-o no RASP, conecte o cabo de rede e o de energia e inicialize-o. Você deverá conectar através de um terminal para completar a instalação dos demais aplicativos. Em meu caso, uso o Putty no Windows para acessar. Preciso descobrir o IP dele na rede, é claro, mas se você está preocupado com monitoramento, isso deve ser tranquilo, certo?
Acesse via terminal o seu Rasp, usando como usuário pi e senha raspberry:
OBSERVAÇÃO: para ativar o SSH do Raspberry, crie um arquivo no SD, na partição BOOT, com o nome ssh (sem extensão).
Verificar a versão do SERVER do ZABBIX
É importante ver qual é a versão do seu ZABBIX server, já que deve ser igual ao do ZABBIX Proxy. Para verificar, use o comando abaixo no Server:
zabbix_server -V
Veja abaixo:
Instalar o ZABBIX
Iremos agora instalar o ZABBIX PROXY no Raspberry através do repositório oficial. Use o seguinte comando para atualizar o repositório:
sudo wget https://repo.zabbix.com/zabbix/5.0/raspbian/pool/main/z/zabbix-release/zabbix-release_5.0-1+$(lsb_release -sc)_all.deb
Instale o arquivo baixado:
sudo dpkg -i zabbix-release_5.0-1+$(lsb_release -sc)_all.deb
De um update no apt:
sudo apt update
Instale o ZABBIX PROXY:
sudo apt -y install zabbix-proxy-mysql
Configurando o database
Vamos criar nesta etapa o Banco de Dados para o ZABBIX Proxy. Use o seguinte comando:
sudo apt -y install mariadb-server
Configurando a segurança
Use o seguinte comando para preparar o MySQL para receber as configurações do ZABBIX PROXY:
sudo mysql_secure_installation
Responda as questões da seguinte forma:
Set root password? [Y/n]: Y
New password: <coloque sua senha>
Re-enter new password: <repita sua senha >
Remove anonymous users? [Y/n]: Y
Disallow root login remotely? [Y/n]: Y
Remove test database and access to it? [Y/n]: Y
Reload privilege tables now? [Y/n]: Y
Criando o BANCO
Agora, precisamos criar o banco de dados para o Zabbix. Use os seguintes comandos:
sudo mysql -uroot -p'SUA_SENHA' -e "create database zabbix_proxy character set utf8 collate utf8_bin;"
Dando as permissões:
sudo mysql -uroot -p'SUA_SENHA-e "grant all privileges on zabbix_proxy.* to zabbix@localhost identified by 'senha de acesso do zabbix ao banco';"
Criando o Schema inicial no banco:
Com o banco criado, precisamos criar a estrutura de tabelas do ZABBIX PROXY. Use o seguinte comando:
sudo zcat /usr/share/doc/zabbix-proxy-mysql*/schema.sql.gz | mysql -uzabbix -p'SUA_SENHA' zabbix_proxy
Observação importante:
Na versão que eu estava instalando, recebi a seguinte mensagem ao criar o SCHEMA:
Esse erro parece ser um BUG desta versão. Verifiquei que esta tabela é utilizada para validação da versão do DATABASE. Se ignorarmos esse erro, o PROXY não vai conectar no SERVER. Para sanar este erro, conecte no banco com o seguinte comando:
sudo mysql -uroot -p'SUA_SENHA'
Digite os seguintes comandos:
use zabbix_proxy;
update dbversion set mandatory = '05000000', optional = '05000000';
exit;
Configuração do ZABBIX PROXY
Agora precisamos configurar o ZABBIX PROXY para comunicar com o ZABBIX Server. Para isso editaremos o arquivo zabbix_proxy.conf.
Digite o seguinte comando:
sudo nano /etc/zabbix/zabbix_proxy.conf
Complete as seguintes linhas:
DBPassword=SENHA_DO_USUARIO_DO_ZABBIX
ProxyMode=0
ConfigFrequency=100
Server=IP_DO_SERVIDOR_DO_ZABBIX
Hostname=Zabbix proxy
DBName=zabbix_proxy
DBUser=zabbix
Iniciando e ativando o ZABBIX PROXY
Vamos reiniciar os serviços do ZABBIX Proxy e habilitá-los para inicializar junto com o sistema no Boot. Use os comandos abaixo:
sudo systemctl restart zabbix-proxy
sudo systemctl enable zabbix-proxy
Configurando o Zabbix Proxy no Frontend do Zabbix Server
Neste passo, precisamos entrar na interface do ZABBIX SERVER e ativar o ZABBIX PROXY configurado neste tutorial. Acesse o menu Administração, vá até Proxies e clique em Create Proxy:
Complete os dados de acordo com o que foi colocado no arquivo de configuração. Preste atenção no “Proxy Name”: configure com o valor colocado no arquivo zabbix_proxy.conf
Após a adição do Proxy, você o verá na lista. Note que até que ele conecte, aparecerá a mensagem em “Last seen (age)” a mensagem “Never”:
Após a primeira conexão, no entanto, este campo irá exibir o tempo desde a última comunicação com o ZABBIX PROXY:
Se tudo correu bem até aqui, seu ZABBIX PROXY no Raspberry está comunicando perfeitamente com seu ZABBIX SERVER. Parabéns.
Para configurar um host para usar o ZABBIX PROXY basta que você configure o proxy na configuração do host, conforme imagem abaixo:
Se quiser continuar o tutorial, tem mais alguns pontos que podem ser ajustados abaixo.
Otimizando o ZABBIX PROXY
Podemos fazer um ajuste fino das configurações do ZABBIX PROXY para obter o melhor desempenho possível desta solução. Alguns parâmetros podem ser ajustados no arquivo zabbix_proxy.conf, use o seguinte comando:
sudo nano /etc/zabbix/zabbix_proxy.conf
Edite as linhas:
StartPollers=100
StartPollersUnreachable=50
StartPingers=50
StartTrappers=10
StartDiscoverers=15
StartHTTPPollers=5
CacheSize=128M
HistoryCacheSize=64M
HistoryIndexCacheSize=32M
Personalizando o MySQL (opcional)
Podemos ainda personalizar o MySQL para melhorar o desempenho ainda mais, criando um arquivo com o seguinte comando:
sudo nano /etc/mysql/mariadb.conf.d/10_my_tweaks.cnf
Coloque o seguinte conteúdo:
[mysqld]
max_connections = 280
innodb_buffer_pool_size = 500M
innodb-log-file-size = 128M
innodb-log-buffer-size = 128M
innodb-file-per-table = 1
innodb_buffer_pool_instances = 8
innodb_old_blocks_time = 1000
innodb_stats_on_metadata = off
innodb-flush-method = O_DIRECT
innodb-log-files-in-group = 2
innodb-flush-log-at-trx-commit = 2
tmp-table-size = 96M
max-heap-table-size = 96M
open_files_limit = 65535
max_connect_errors = 1000000
connect_timeout = 60
wait_timeout = 28800
Use os seguintes comandos para acertar as permissões:
sudo chown mysql:mysql /etc/mysql/mariadb.conf.d/10_my_tweaks.cnf
sudo chmod 644 /etc/mysql/mariadb.conf.d/10_my_tweaks.cnf
Observação
O parâmetro max_connections deve ser maior que o numero total de processos do ZABBIX mais 50. Você pode usar o comando abaixo para checar o número de processos e somar 50:
egrep "^Start.+=[0-9]" /etc/zabbix/zabbix_proxy.conf | awk -F "=" '{s+=$2} END {print s+50}'
O parâmetro innodb_buffer_pool_size determina quanto de memoria o MYSQL pode usar para cachear tabelas InnoDB e indexar dados. Você deve colocar este parâmetro com 70% da memoria do sistema se somente o banco for instalado neste servidor. No nosso caso, o proxy está compartilhando o mesmo hardware, portanto devemos colocar em 50% do tamanho da memória RAM do sistema. Usando o Raspberry Pi 3, deixamos em 500M.
Reiniciar o Zabbix Proxy e o MySQL
Para reiniciar os serviços, use a seguinte sequência
sudo systemctl stop zabbix-proxy
sudo systemctl stop mysql
systemctl start mysql
systemctl start zabbix-proxy
Verificar erros
Para verificar os logs do ZABBIX PROXY, use o seguinte comando:
tail -500 /var/log/zabbix/zabbix_proxy.log
Artigo original em inglês:
https://bestmonitoringtools.com/install-zabbix-proxy-on-raspberry-pi/