Monit.

Instalando o ZABBIX (PROXY) em um Raspberry

Escrito por Douglas Baiocco. Publicado em Nagios/ZABBIX.

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:

Computer Based Training for all: Zabbix for Beginners- 02- Working with  Zabbix - Part 1

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:

 

Picture showing how to write Rasbian image on SD card

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:

image002

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/