Zabbix: Instalando o servidor

1. Introdução

Zabbix é uma solução de código aberto para monitoramento de dispositivos e aplicações, sendo capaz de monitorar parâmetros utilizando agentes em diversas plataformas de sistemas operacionais, além de protocolos como SNMP, IPMI, JMX, entre outros.

É uma plataforma bastante difundida e não está limitada a ativos de TIC, apenas. Pode ser utilizado em diversas áreas, pois o seu método de coleta é flexível e permitindo personalizá-lo de acordo com necessidades de monitoramento do ambiente.

2. Ferramentas utilizadas

Os softwares utilizados na produção deste tutorial é apresentado a seguir:

  • CentOS 7
  • Zabbix 3.4.1
  • MariaDB 10.3.9-1.el7.centos

O ambiente utilizado é apresentado a seguir:

  • Uma MV, com o sistema operacional CentOS 7, destinada ao banco de dados
  • Uma MV, com o sistema operacional CentOS 7, destinada ao servidor e interface Web do Zabbix

A instalação do CentOS 7 utilizada para validar esse tutorial foi a Minimal-1611. A ISO dessa versão pode ser baixada através deste link.

3. Configurando o serviço

Todos os comandos executados nesse tutorial foram executados com o usuário root.

3.1. Instalando o servidor de banco de dados

Passos preparatórios

3.1.1. Após a instalação do CentOS, execute o comando abaixo para atualizar os pacotes presentes no sistema:

yum update

3.1.2. Habilite o modo permissivo do SELinux, com os comandos abaixo:

sed s/SELINUX=enforcing/SELINUX=permissive/g -i /etc/selinux/config
setenforce 0

3.1.3. Adicione os repositórios do Zabbix e MariaDB:

URL='https://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm'
rpm -ivh "$URL" # Adiciona o repositório do zabbix
printf '[mariadb]\nname = MariaDB\nbaseurl = http://yum.mariadb.org/10.3/centos7-amd64\ngpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB\ngpgcheck=1\n' > /etc/yum.repos.d/MariaDB.repo

3.1.4. Instalar o agente do Zabbix

yum install zabbix-agent zabbix-get # Instala o agente do zabbix
systemctl enable zabbix-agent # Configura o systemd para iniciar o agente do zabbix após o boot

Caso o local do armazenamento dos arquivos seja numa partição separada, insira a linha correta no fstab, definindo como ponto de montagem o diretório do mysql e monte-a digitando o comando mount -a

3.1.5. Instalar o MariaDB

yum install mariadb-server mariadb-libs mariadb -y # Instala o servidor
chown -R mysql:mysql /var/lib/mysql # Configura as permissões no diretório usado pelo mariadb
systemctl enable mariadb # Configura o systemd para iniciar o mariadb após o boot
systemctl start mariadb # Iniciar o serviço do mariadb imediatamente

3.1.6. Permita os serviços no Firewall

firewall-cmd --permanent --add-port=3306/tcp # configura o firewalld para permitir conexões ao mariadb
firewall-cmd --permanent --add-port=10050/tcp # configura o firewalld para permitir conexões ao agente do zabbix
firewall-cmd --reload

Configure o servidor de banco de dados

3.1.7. Complete a instalação do MariaDB:

mysql_secure_installation

Com o comando acima iremos configurar a senha do usuário root para acessar o MySQL.

# Enter current password for root (enter for none): <ENTER>
# Change the root password? [Y/n] <Y>
# New password: <DIGITE UMA SENHA SEGURA>
# Re-enter new password: <DIGITE A SENHA NOVAMENTE>
# 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>

Para manter a segurança num nível aceitável, crie uma senha segura, com no mínimo 8 dígitos, contendo letras maiúsculas e minúsculas e caracteres especiais.

Observe também que esta senha deve ser guardada em local seguro para possíveis acesso e manutenções.

3.1.8. Crie a base de dados para o Zabbix

Acesse o mariadb como root:

mysql -uroot -p

Digite a senha cadastrada no passo anterior. Deverá aparecer o prompt da console do MySQL. Iremos criar a base de dados que será utilizada pelo Zabbix:

mysql>

mysql>

mysql>

create database BASE_ZABBIX;

grant all privileges on BASE_ZABBIX.* to 'USUARIO_ZABBIX'@'%' identified by 'SENHA_ZABBIX';

quit;

 O comandocreate databasecria a base de dados para o zabbix. Observe que o termo “base_zabbix” deve ser substituído pelo nome escolhido.

O comando iniciando comgrant all privileges‘ concede permissão para o usuário do zabbix com a senha a ser digitada no lugar de "senha_zabbix". Observe que o termo “usuario_zabbix” deve ser substituído pelo nome do usuário que o servidor irá utilizar ao se conectar à base de dados.

Para manter a segurança num nível aceitável, crie uma senha segura, com no mínimo 8 dígitos, contendo letras maiúsculas e minúsculas e caracteres especiais.

Observe também que esta senha deve ser guardada em local seguro para possíveis acesso e manutenções.

Essas informações serão utilizadas para o acesso a base de dados no arquivo de configuração do servidor Zabbix.

3.2. Instalando o servidor do Zabbix

Passos preparatórios

3.2.1. Após a instalação do CentOS no servidor, execute o comando abaixo para atualizar os pacotes presentes no sistema:

yum update

3.2.2. Habilite o modo permissivo do SELinux, com os comandos abaixo:

sed s/SELINUX=enforcing/SELINUX=permissive/g -i /etc/selinux/config
setenforce 0

3.2.3. Adicione os repositórios do Zabbix e MariaDB:

URL='https://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm'
rpm -ivh "$URL" # Adiciona o repositório do zabbix
printf '[mariadb]\nname = MariaDB\nbaseurl = http://yum.mariadb.org/10.3/centos7-amd64\ngpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB\ngpgcheck=1\n' > /etc/yum.repos.d/MariaDB.repo

3.2.4. Instale os pacotes necessários

yum install wget unzip net-snmp net-snmp-utils -y # Instala dependências do SNMP
yum install zabbix-agent zabbix-get -y # Instala o agente do zabbix
yum install zabbix-server-mysql mariadb -y # Instala as bibliotecas do mariadb e o servidor zabbix
yum install zabbix-web-mysql -y # Instala a interface web do servidor zabbix

3.2.5. Permita os serviços no Firewall

firewall-cmd --permanent --add-port=10050/tcp # configura o firewalld para permitir conexões ao agente do zabbix
firewall-cmd --permanent --add-port=10051/tcp # configura o firewalld para permitir conexões ao servidor do zabbix
firewall-cmd --permanent --add-service=snmp   # configura o firewalld para permitir conexões snmp
firewall-cmd --permanent --add-service=snmptrap # configura o firewalld para permitir conexões snmp
firewall-cmd --reload

3.2.6. Configure as MIBs do SNMP

cd /usr/share/snmp/mibs/
wget -c -m ftp://ftp.cisco.com/pub/mibs/v2/
mv ftp.cisco.com/pub/mibs/v2/* .
rm -fr ftp.cisco.com/
for line in $(ls *.my); do base=$(echo $line|cut -d'.' -f1); mv $line $base; done
cd /usr/share/snmp/mibs/
wget -c https://github.com/librenms/librenms-mibs/archive/master.zip -O Cisco-SB-MIB.zip
unzip -jo Cisco-SB-MIB.zip
rm -fr Cisco-SB-MIB.zip
for line in $(ls *.mi2); do base=$(echo $line|cut -d'.' -f1); mv -n $line $base; done

Configure a base de dados

3.2.7. Importar os schemas:

cd /usr/share/doc/zabbix-server-mysql-3.*
zcat create.sql.gz | mysql -h IP_SERVIDOR_BANCO -u USUARIO_ZABBIX -p BASE_ZABBIX  

A senha solicitada, assim como os itens "USUARIO_ZABBIX" e "BASE_ZABBIX" devem ser os mesmos configurados no passo "Crie a base de dados para o Zabbix".

Substitua o “IP_SERVIDOR_BANCO” pelo IP do servidor do banco de dados configurado anteriormente.

Configure o servidor zabbix

3.2.8. Será necessário alterar alguns parâmetros do banco de dados no arquivo de configuração /etc/zabbix/zabbix_server.conf:

cd /etc/zabbix             # Entra no diretório do zabbix
mkdir -p original          # Cria diretório para backup, se não existir
cp zabbix*.conf original/  # Copia os arquivos de configuração originais para pasta criada
sed s/'LogFileSize=0'/'LogFileSize=128'/g -i zabbix_server.conf # Define o tamanho máximo de cada arquivo de log
sed s/'Timeout=4'/'Timeout=20'/g -i zabbix_server.conf          # Define o timeout da conexão ao cliente
sed s/'# StartSNMPTrapper=0'/'StartSNMPTrapper=1'/g -i zabbix_server.conf   # Define se o SNMP trapper será ativado
sed s/'# SenderFrequency=30'/'SenderFrequency=60'/g -i zabbix_server.conf   # Frequencia submetida aos senders
sed s/'# StartDBSyncers=4'/'StartDBSyncers=8'/g -i zabbix_server.conf       # Define a quantidade de sicronizadores entre a aplicação e o bd
sed s/'# StartPollers=5'/'StartPollers=35'/g -i zabbix_server.conf          # Quantidade de pollers multipropósito (para java, ipmi e etc)  
sed s/'# HistoryCacheSize=16M'/'HistoryCacheSize=128M'/g -i zabbix_server.conf         # Tamanho do cache para histórico de alterações  
sed s/'# HistoryIndexCacheSize=4M'/'HistoryIndexCacheSize=64M'/g -i zabbix_server.conf # Tamanho do cache para o indice do histórico
sed s/'# TrendCacheSize=4M'/'TrendCacheSize=64M'/g -i zabbix_server.conf # Tamanho do cache usado para armazenar tendências
sed s/'# ValueCacheSize=8M'/'ValueCacheSize=64M'/g -i zabbix_server.conf # Tamanho do cache de valores
sed s/'# CacheSize=8M'/'CacheSize=512M'/g -i zabbix_server.conf          # Tammanho máximo que todos os caches, somados, podem alcançar 
sed s/'# StartVMwareCollectors=0'/'StartVMwareCollectors=16'/g -i zabbix_server.conf # Quantidade de coletores de dados do vmware
sed s/'# VMwareCacheSize=8M'/'VMwareCacheSize=16M'/g -i zabbix_server.conf       # Cache para os dados de vmware coletados
sed s/'# VMwareTimeout=10'/'VMwareTimeout=30'/g -i zabbix_server.conf            # Define timeout para conexão ao agente do vmware
sed s/'# DBHost=localhost'/'DBHost=IP_SERVIDOR_BANCO'/g -i zabbix_server.conf # Servidor onde está a BD do zabbix. Substitua IP_SERVIDOR_BD pelo IP correto 
sed s/'DBName=zabbix'/'DBName=BASE_ZABBIX'/g -i zabbix_server.conf         # BD a ser utilizada pelo zabbix. Substitua pelo nome correto 
sed s/'# DBPassword='/'DBPassword=SENHA_ZABBIX'/g -i zabbix_server.conf    # Senha para conexão a BD. Substitua pela senha correta 
sed s/'DBUser=zabbix'/'DBUser=USUARIO_ZABBIX'/g -i zabbix_server.conf      # Usuário para conexão a BD. Substitua pelo nome correto

A senha solicitada, assim como os itens "USUARIO_ZABBIX" e "BASE_ZABBIX" devem ser os mesmos configurados no passo "Crie a base de dados para o Zabbix".

Substitua o “IP_SERVIDOR_BANCO” pelo IP do servidor do banco de dados configurado anteriormente.

3.2.9. Configure o serviço do servidor e agente:

systemctl enable zabbix-agent zabbix-server-mysql # Configura o systemd para iniciar os serviços do zabbix após o boot
systemctl start zabbix-server zabbix-agent        # Inicia os serviços imediatamente

Realizada a instalação da base de dados e do servidor Zabbix, o próximo passo é configurar e instalar a interface web.

3.3. Instalando a interface web servidor do Zabbix

A interface web e o servidor podem ser instalados na mesma máquina. No entanto, esse procedimento não é recomendado em ambientes de alta disponibilidade.

Passos preparatórios

3.3.1. Após a instalação do CentOS no servidor, execute o comando abaixo para atualizar os pacotes presentes no sistema:

yum update

3.3.2. Habilite o modo permissivo do SELinux, com os comandos abaixo:

sed s/SELINUX=enforcing/SELINUX=permissive/g -i /etc/selinux/config
setenforce 0

3.3.3. Adicione os repositórios do Zabbix e MariaDB:

URL='https://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm'
rpm -ivh "$URL" # Adiciona o repositório do zabbix
printf '[mariadb]\nname = MariaDB\nbaseurl = http://yum.mariadb.org/10.3/centos7-amd64\ngpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB\ngpgcheck=1\n' > /etc/yum.repos.d/MariaDB.repo

3.3.4. Instale os pacotes necessários

yum install zabbix-agent zabbix-get -y # Instala o agente do zabbix
yum install mariadb zabbix-web-mysql -y # Instala as bibliotecas do mariadb e a aplicação web do zabbix

3.3.5. Permita o serviço no Firewall

firewall-cmd --permanent --add-service=http   # configura o firewalld para permitir conexões http
firewall-cmd --permanent --add-service=https # configura o firewalld para permitir conexões https
firewall-cmd --reload

Configure a aplicação web do Zabbix

3.3.6. Edite o arquivo contendo as definições do site do zabbix

cd /etc/httpd/conf.d/                            # Diretório de configuração dos sites do apache
sed s/'# php_value'/'php_value'/g -i zabbix.conf # Ativa as definições do PHP dentro do arquivo
sed s/'timezone.*'/'timezone America\/Recife'/g -i zabbix.conf # Define o timezone correto
sed s/'Alias'/'# Alias'/g -i zabbix.conf           # Retira o alias "/zabbix/"
sed '6i Alias / /usr/share/zabbix/' -i zabbix.conf # Adiciona o alias "/", redirecionando o indice no referido diretório

3.3.7. Crie o arquivo de configuração da aplicação web do zabbix

vi /etc/zabbix/web/zabbix.conf.php

As configurações deverão ficar conforme o exemplo abaixo:

<?php
// Zabbix GUI configuration file.
global $DB;
$DB['TYPE']     = 'MYSQL';
$DB['SERVER']   = 'IP_SERVIDOR_BANCO';
$DB['PORT']     = '0';
$DB['DATABASE'] = 'BASE_ZABBIX';
$DB['USER']     = 'USUARIO_ZABBIX';
$DB['PASSWORD'] = 'SENHA_ZABBIX';
 
// Schema name. Used for IBM DB2 and PostgreSQL.
$DB['SCHEMA'] = '';
 
$ZBX_SERVER      = 'localhost';
$ZBX_SERVER_PORT = '10051';
$ZBX_SERVER_NAME = 'zabbix.int.example.com';
 
$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;

Os itens "USUARIO_ZABBIX" , "SENHA_ZABBIX" e "BASE_ZABBIX" devem ser os mesmos configurados no passo "Crie a base de dados para o Zabbix".

Em $ZBX_SERVER, substitua "localhost" pelo IP ou FQDN da máquina onde o servidor Zabbix está instalado.

Em $ZBX_SERVER_NAME, substitua "zabbix.int.example.com" pelo nome a ser dado ao servidor.

Substitua o “IP_SERVIDOR_BANCO” pelo IP do servidor do banco de dados configurado anteriormente.

3.3.8. Configure o serviço utilizado pela interface gráfica:

systemctl enable httpd # Configura o systemd para iniciar o apachea pós o boot
systemctl start httpd  # Inicia osserviço imediatamente

3.4. Configurações adicionais

Passos preparatórios

3.4.1. Neste momento, abra o seu navegador favorito e insira o endereço do teu servidor, conforme o exemplo abaixo:

https://IP-DO-SERVIDOR/

Será mostrada uma tela solicitando credenciais. Faça login no sistema com o usuário Admin e a senha zabbix.

Configure o inventário e monitoramento do servidor

3.4.2. Primeiro, vamos habilitar a capacidade do Zabbix de fazer inventário de alguns itens sobre os dispositivos monitorados:

Clique em Administration > General. No dropbox à direita, clique em Others.

3.4.3. Feito isso, vamos habilitar o monitoramento do próprio servidor:

Clique em Configuration > Hosts, marque o checkbox ao lado de “Zabbix Server” e clique no botão “Enable”.