# Zabbix: Instalando o proxy

## 1. Introdução

<span style="font-weight: 400;">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.</span>

<span style="font-weight: 400;">É 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.</span>

## <span style="font-weight: 400;">2. Ferramentas utilizadas</span>

<span style="font-weight: 400;">Os softwares utilizados na produção deste tutorial é apresentado a seguir:</span>

- <span style="font-weight: 400;">CentOS 7</span>
- <span style="font-weight: 400;">Zabbix 3.4.1</span>
- <span style="font-weight: 400;">SQLite3</span>

<span style="font-weight: 400;">O ambiente utilizado é apresentado a seguir:</span>

- <span style="font-weight: 400;">U</span><span style="font-weight: 400;">ma MV, com o sistema operacional CentOS 7, destinada ao servidor proxy do Zabbix</span>

<span style="font-weight: 400;">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](http://mirror.ufscar.br/centos/7/isos/x86_64/).</span>

## <span style="font-weight: 400;">3. Configurando o serviço</span>

<span style="font-weight: 400;">Todos os comandos executados nesse tutorial foram executados com o usuário **root**.</span>

#### <span style="font-weight: 400;">Passos preparatórios</span>

<span style="font-weight: 400;">3.1. </span><span style="font-weight: 400;">Após a instalação do CentOS, execute o comando abaixo para atualizar os pacotes presentes no sistema:</span>

```
yum update
```

<span style="font-weight: 400;">3.2. Habilite o modo permissivo do SELinux, com os comandos abaixo:</span>

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

<span style="font-weight: 400;">3.3. Adicione o repositório do Zabbix e MariaDB:</span>

```shell
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
```

<span style="font-weight: 400;">3.4. Instalar o agente do Zabbix </span>

```shell
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
```

#### <span style="font-weight: 400;">Instalando o banco de dados</span>

<span style="font-weight: 400;">3.5. </span><span style="font-weight: 400;">Após a instalação do CentOS, execute o comando abaixo para atualizar os pacotes presentes no sistema:</span>

```shell
yum install sqlite -y
```

#### <span style="font-weight: 400;">Instalando o proxy do Zabbix</span>

<span style="font-weight: 400;">3.6. </span><span style="font-weight: 400;">Após a instalação do CentOS, execute o comando abaixo para atualizar os pacotes presentes no sistema:</span>

```shell
yum install zabbix-proxy-sqlite zabbix-get zabbix-agent  -y
```

<span style="font-weight: 400;">3.7. Vamos criar os diretórios a serem utilizados pelo proxy:  
</span>

```shell
mkdir /etc/zabbix/{default,zabbix_proxy.conf.d}
chown zabbix:root -P /etc/zabbix/
touch /var/log/zabbix/snmptrap.log
chown zabbix:zabbix /var/log/zabbix/snmptrap.log
```

<span style="font-weight: 400;">3.8. configurar a base de dados do Zabbix e importar os schemas:</span>

```shell
mkdir -p /app/zabbix
cd /usr/share/doc/zabbix-proxy-sqlite3-3*
zcat schema.sql.gz | sqlite3 /app/zabbix/proxy.db
```

<span style="font-weight: 400;">3.9. alterar os parâmetros do banco de dados no arquivo de configuração `/etc/zabbix/zabbix_server.conf`:  
</span>

```shell
cd /etc/zabbix
cp *.conf default/
sed s/'# ProxyMode=0'/'ProxyMode=0'/g -i zabbix_proxy.conf
sed s/'LogFileSize=0'/'LogFileSize=128'/g -i zabbix_proxy.conf
sed s/'# StartPollers=5'/'StartPollers=35'/g -i zabbix_proxy.conf
sed s/'Server=127.0.0.1'/'Server=SERVIDOR_ZABBIX'/g -i zabbix_proxy.conf
sed s/'DBName=zabbix_proxy'/'DBName=\/app\/zabbix\/proxy.db'/g -i zabbix_proxy.conf
sed s/'# StartPollersUnreachable=1'/'StartPollersUnreachable=70'/g -i zabbix_proxy.conf
sed s/'Hostname=Zabbix proxy'/Hostname=$(hostname)/g -i zabbix_proxy.conf
sed s/'# StartIPMIPollers=0'/'StartIPMIPollers=5'/g -i zabbix_proxy.conf
sed s/'# ProxyLocalBuffer=0'/'ProxyLocalBuffer=360'/g -i zabbix_proxy.conf
sed s/'# ConfigFrequency=3600'/'ConfigFrequency=60'/g -i zabbix_proxy.conf
sed s/'# StartHTTPPollers=1'/'StartHTTPPollers=10'/g -i zabbix_proxy.conf
sed s/'# ProxyOfflineBuffer=1'/'ProxyOfflineBuffer=720'/g -i zabbix_proxy.conf
sed s/'# HeartbeatFrequency=60'/'HeartbeatFrequency=30'/g -i zabbix_proxy.conf
sed s/'# DataSenderFrequency=1'/'DataSenderFrequency=45'/g -i zabbix_proxy.conf
sed s/'# StartTrappers=5'/'StartTrappers=15'/g -i zabbix_proxy.conf
sed s/'# StartPingers=1'/'StartPingers=5'/g -i zabbix_proxy.conf
sed s/'# StartVMwareCollectors=0'/'StartVMwareCollectors=10'/g -i zabbix_proxy.conf
sed s/'# VMwareTimeout=10'/'VMwareTimeout=19'/g -i zabbix_proxy.conf
sed s/'# StartSNMPTrapper=0'/'StartSNMPTrapper=1'/g -i zabbix_proxy.conf
sed s/'# StartDBSyncers=4'/'StartDBSyncers=8'/g -i zabbix_proxy.conf
sed s/'# CacheSize=8M'/'CacheSize=32M'/g -i zabbix_proxy.conf
sed s/'# HistoryIndexCacheSize=4M'/'HistoryIndexCacheSize=16M'/g -i zabbix_proxy.conf
sed s/'# HistoryCacheSize=16M'/'HistoryCacheSize=64M'/g -i zabbix_proxy.conf
sed s/'\/var\/log\/snmptrap\/snmptrap.log'/'\/var\/log\/zabbix\/snmptrap.log'/g -i zabbix_proxy.conf
sed s/'Timeout=4'/'Timeout=19'/g -i zabbix_proxy.conf
sed s/'ExternalScripts=\/usr\/lib\/zabbix\/externalscripts'/'ExternalScripts=\/app\/zabbix\/externalscripts'/g -i zabbix_proxy.conf
sed s/'# Include=\/usr\/local\/etc\/zabbix_proxy.conf.d\/*.conf'/'\/etc\/zabbix_proxy.conf.d\/*.conf'/g -i zabbix_proxy.conf

```

<p class="callout info"><span style="font-weight: 400;">Substitua “SERVIDOR\_ZABBIX” pelo IP ou FQDN do servidor do zabbix configurado anteriormente.</span></p>

<span style="font-weight: 400;">3.10. Permita os serviços no Firewall</span>

```shell
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
```

<span style="font-weight: 400;">3.11. Configure o serviço do servidor e agente:</span>

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