Por: @eduardoh Publicado em: 2022-06-30

Monitoramento Zabbix para o ambiente de desenvolvimento

Objetivo

Apresentar informações do ambiente de monitoramento e também procedimento de instalação de agentes nos servidores.

A estrutura

A stack de monitoramento foi desenvolvida e hospedada no formato de microserviços utilizando Docker.

Topologia

O cenário anterior mostra a disposição dos containers no host monit-itflex (192.168.50.11).

Network

  • Duas redes separando o tráfego externo com o tráfego interno, assim o banco de dados está acessível somente entre os containers e não para a LAN, consequentemente para a Internet.
    • zb-net-internal: network criada no Docker destinada ao tráfego interno. Utiliza o range 192.168.130.0/25
    • zb-net-external: network criada no Docker destiada ao tráfego externo. Utiliza o range 192.168.130.128/25

Containers

  • A divisão dos containers foi seguida de acordo com a documentação oficial da Zabbix CIA e boas práticas.
    • zb-con-database: container responsável apenas pelo serviço MySQL na versão 8.
    • zb-con-server: container responsável pelo tratamento entre o Zabbix Agent e o processamento do monitoramento. Trabalha na porta padrão 10051.
    • zb-con-frontend: container responsável pela hospedagem da página web do Zabbix, acessado diretamente pela porta 80.
    • zb-con-grafana: container responsável pelas dashboards do serviço Grafana.
    • zb-con-agent: container responsável pelo monitoramento dos containers locais.

Volumes

  • Foi utilizada a estratégia de volumes persistentes, assim caso necessário mover a aplicação de máquina, basta um backup dos volumes, principalmente do banco de dados.
    • zb-vol-database: volume responsável por armazenar o banco de dados do Zabbix (/stor/volumes/zb-vol-database).
    • zb-vol-zabbix: volume responsável por armazenar o conteúdo do Zabbix Server (/stor/volumes/zb-vol-zabbix).
    • zb-vol-grafana: volume responsável por armazenar o conteúdo do Grafana (/stor/volumes/zb-vol-grafana).

Acesso

  • Para acessar os serviços, basta utilizar o IP do servidor (192.168.50.11).
    • Porta 10051 está aberta para o funcionamento do Zabbix Server.
    • Porta 80 está aberta para o funcionamento do Zabbix Frontend.
    • Porta 3000 está aberta para o funcionamento do Grafana.
Será providenciado um endereço DNS para facilitar o acesso.

Arquivos

  • Para o provisionamento, foram desenvolvidos alguns arquivos disponíveis no mesmo servidor no diretório /stor/
    • /stor/docker: arquivos referente ao pre-setup (criação de pastas, artefatos do Docker), containers e suas variáveis.
    • /stor/volumes: diretório destinado aos volumes persistentes de dados dos containers.
    • /stor/notifications: diretório contendo instruções de instalação do plugin de notificação via Google Chat.
Será criada uma imagem personalizada contendo os pacotes referentes ao Python devidamente instalados para correto funcionamento da integração com o Google Chat.

Instalando Agentes

Instalando Zabbix-Agent

Atenção, lembre-se de validar versão do agent e também versão do S.O., algumas instalações podem variar de acordo com o cenário.

Em algumas distribuições, como AlmaLinux, o pacote logrotate não vem instalado por padrão, logo é necessário efetuar a instalação do mesmo.

yum install logrotate

Efetuar a importação do repositório onde está contido o pacote do agent Zabbix. Lembre-se, valide qual a versão do servidor e qual a arquitetura do servidor que o agent será instalado, pois pode variar.

rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-agent-6.0.6-1.el8.x86_64.rpm
yum clean all
yum install zabbix-agent

Por tratar-se de um ambiente de rede local e controlado, não vamos fazer uso do pacote itflex-zabbix-agent como é de costume utilizar em nossos clientes. Vamos inclusive utilizar o padrão de configuração já existente no pacote oficial.

Altere os seguintes campos do arquivo /etc/zabbix/zabbix_agentd.conf utilizando informações do seu ambiente respectivamente:

Server=192.168.50.11
Hostname=monit-itflex

Reinicie e habilite o serviço na reinicialização

systemctl restart zabbix-agent
systemctl enable zabbix-agent

Valide os logs no arquivo /var/log/zabbix/zabbix_agentd.log:

Instalando Zabbix-Agent2

Atenção, lembre-se de validar versão do agent e também versão do S.O., algumas instalações podem variar de acordo com o cenário.

Para entender as diferenças, clique aqui para visualizar um comparativo.

Efetuar a importação do repositório onde está contido o pacote do agent2 Zabbix. Lembre-se, valide qual a versão do servidor e qual a arquitetura do servidor que o agent2 será instalado, pois pode variar.

rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-agent2-6.0.6-1.el7.x86_64.rpm
yum clean all
yum install zabbix-agent

Altere os seguintes campos do arquivo /etc/zabbix/zabbix_agent2.conf utilizando informações do seu ambiente respectivamente:

Server=192.168.50.11
Hostname=monit-itflex

Reinicie e habilite o serviço na reinicialização

systemctl restart zabbix-agent2
systemctl enable zabbix-agent2

Valide os logs no arquivo /var/log/zabbix/zabbix_agentd2.log: