[comment]: # ({b4a007a5-02b10f8d})
# - \#2 Pré-requisitos

[comment]: # ({/b4a007a5-02b10f8d})

[comment]: # ({80330f65-80330f65})
#### Hardware

[comment]: # ({/80330f65-80330f65})

[comment]: # ({b5cb2218-4ae00568})
##### Memória

Para instalar o Zabbix existem requisitos de memória (128MB) e de
armazenamento(256MB disponíveis em disco). Entretanto, a quantidade de
memória e de disco, obviamente, dependerá da quantidade de hosts e de
parâmetros monitorados. Se você está planejando manter um longo
histórico dos parâmetros monitorados você deverá pensar em, pelo menos,
alguns gigas para ter espaço disponível para uso do banco de dados.

Cada processo *deamon* do Zabbix Server irá requerer diversas conexões
com o servidor de banco de dados. A quantidade de memória alocada para
cada conexão dependerá das configurações da *engine* do SGBD.

::: noteclassic
Regra de ouro dos bancos de dados: quanto mais memória RAM
você possui, mais rápido é o banco de dados (e mais rápido o Zabbix por
consequência!)
:::

[comment]: # ({/b5cb2218-4ae00568})

[comment]: # ({6a09ec00-7967309a})
##### CPU

O Zabbix Server e, especialmente, seu banco de dados pode exigir
quantidade significativa de recursos da CPU dependendo da quantidade de
parâmetros monitorados e da *engine* do SGDB.

[comment]: # ({/6a09ec00-7967309a})

[comment]: # ({fa6b9248-1cbee7bf})
##### Outro hardware

Para a notificação por SMS nativa da solução será requerido também uma
porta de comunicação serial e um modem GSM a ela conectado. Conexões
USB-to-serial também deverão funcionar.

[comment]: # ({/fa6b9248-1cbee7bf})

[comment]: # ({f875f544-4ce92ee0})
##### Exemplos de configuração de hardware

A tabela a seguir provê diversos exemplos de configuração de hardware:

|Nome|Plataforma|CPU/Memória|SGDB|Hosts Monitorados|
|----|----------|------------|----|-----------------|
|*Small*|CentOS|Virtual Appliance|MySQL InnoDB|100|
|*Medium*|CentOS|2 CPU cores/2GB|MySQL InnoDB|500|
|*Large*|RedHat Enterprise Linux|4 CPU cores/8GB|RAID10 MySQL InnoDB ou PostgreSQL|>1000|
|*Very large*|RedHat Enterprise Linux|8 CPU cores/16GB|RAID10 rápido MySQL InnoDB ou PostgreSQL|>10000|

::: noteclassic
A apropriada dependerá da quantidade de itens ativos e seu
intervalo de coleta, o que varia muito de um ambiente para outro. É
altamente recomendável separar o Banco de dados em um servidor em
separado em instalações maiores.
:::

[comment]: # ({/f875f544-4ce92ee0})

[comment]: # ({1ff50401-ad0c32cf})
#### Plataformas Suportadas

Devido à requisitos de segurança e natureza de missão crítica dos
servidores de monitoramento o UNIX é o único sistema operacional que
pode entregar de forma consistente os requisitos de performance,
tolerância a falha e resiliência. O Zabbix opera entre as ferramentas
líderes de mercado.

O Zabbix é testado nas seguintes plataformas:

-   Linux
-   IBM AIX
-   FreeBSD
-   NetBSD
-   OpenBSD
-   HP-UX
-   Mac OS X
-   Solaris
-   Windows: 2000, Server 2003, XP, Vista, Server 2008, 7, 8, Server
    2012 (Apenas Zabbix Agent)

::: noteclassic
O Zabbix poderá rodar em várias outras variantes do
UNIX.
:::

[comment]: # ({/1ff50401-ad0c32cf})

[comment]: # ({45a55718-323b6241})
#### Software

O Zabbix é construído em torno do servidor de páginas Apache, SGDBs
líderes de mercado e a linguagem de scripts PHP.

[comment]: # ({/45a55718-323b6241})

[comment]: # ({95680ad7-a87a4d9c})
##### Banco de dados de monitoração

|Software|Versão|Comentários|
|--------|-------|------------|
|*MySQL*|5.0.3 ou superior|Se for o SGDB escolhido como *backend database*. A engine InnoDB é requerida.|
|*Oracle*|10g ou superior|Se for o SGDB escolhido como *backend database*.|
|*PostgreSQL*|8.1 ou superior|Se for o SGDB escolhido como *backend database*<br>Entretanto é sugerido o uso do PostgreSQL 8.3 ou posterior, com o suporte [ao VACUUM otimizado](http://www.postgresql.org/docs/8.3/static/release-8-3.html).|
|*SQLite*|3.3.5 ou superior|Se for o SGDB escolhido como *backend database*.|
|*IBM DB2*|9.7 ou superior|Se for o SGDB escolhido como *backend database*.|

::: noteimportant
O uso do IBM DB2 é experimental!
:::

::: noteimportant
Enquatno o uso do SQLite3 com o Zabbix Proxy é até
recomendado, **o uso com o Zabbix Server não é recomendável**. Desde o
Zabbix 2.4.0, os requisitos de acessos simultâneos do Zabbix Server e da
interface web podem levar à corromper o banco de dados!
:::

[comment]: # ({/95680ad7-a87a4d9c})

[comment]: # ({b0d3ab01-75f0586e})
##### Interface Web

Para o funcionamento da interface web do Zabbix será necessário:

|Software|Versão|Comentários|
|--------|-------|------------|
|*Apache*|1.3.12 ou superior|<|
|*PHP*|5.4.0 ou superior|A versão 7 do PHP ainda não é suportada.|
|Extensões do PHP:|<|<|
|*gd*|2.0 ou superior|A extensão PHP GD precisa suportar imagens PNG (*--with-png-dir*), JPEG (*--with-jpeg-dir*) e FreeType 2 (*--with-freetype-dir*).|
|*bcmath*|<|php-bcmath (*--enable-bcmath*)|
|*ctype*|<|php-ctype (*--enable-ctype*)|
|*libXML*|2.6.15 ou superior|php-xml ou php5-dom, se forem fornecidas de forma separada pela distribuição escolhida.|
|*xmlreader*|<|php-xmlreader, se for fornecido de forma separada pela distribuição escolhida.|
|*xmlwriter*|<|php-xmlwriter, se for fornecidp de forma separada pela distribuição escolhida.|
|*session*|<|php-session, se for fornecido de forma separada pela distribuição escolhida.|
|*sockets*|<|php-net-socket (*--enable-sockets*). Necessário para o suporte a scripts de usuário.|
|*mbstring*|<|php-mbstring (*--enable-mbstring*)|
|*gettext*|<|php-gettext (*--with-gettext*). Necessário para o recurso de tradução.|
|*ldap*|<|php-ldap. Necessário somente se a autenticação na interface web for através do LDAP.|
|*ibm\_db2*|<|Necessário se a tecnologia de banco de dados escolhida para o repositório da monitoração for o IBM DB2.|
|*mysqli*|<|Necessário se a tecnologia de banco de dados escolhida para o repositório da monitoração for o MySQL.|
|*oci8*|<|Necessário se a tecnologia de banco de dados escolhida para o repositório da monitoração for o Oracle.|
|*pgsql*|<|Necessário se a tecnologia de banco de dados escolhida para o repositório da monitoração for o PostgreSQL.|
|*sqlite3*|<|Necessário se a tecnologia de banco de dados escolhida para o repositório da monitoração for o SQLite.|

::: noteclassic
O Zabbix também poderá funcionar em versões anteriores do
Apache, MySQL, Oracle, e PostgreSQL.
:::

::: noteimportant
Para outras fontes como a default DejaVu, a função
PHP [imagerotate](http://php.net/manual/en/function.imagerotate.php)
poderá ser necessária. Se estiver ausente, estas fontes poderão não ser
corretamente renderizadas no cabeçalho da visão geral da monitoração
(Monitoração → Overview) e em outros locais. Esta função só está
disponível se o PHP for compilado com o suporte ao GD, o que não é o
caso para o Debian e outras distribuições.
:::

[comment]: # ({/b0d3ab01-75f0586e})

[comment]: # ({ed7240f3-dda86afe})
##### Navegadores WEB no lado cliente

O suporte a Cookies e Java Script deverá estar habilitado.\
Últimas versões do Google Chrome, Mozilla Firefox, Microsoft Internet
Explorer e Opera são suportadas. Outros navegadores (Apple Safari,
Konqueror) também poderão funcionar.

[comment]: # ({/ed7240f3-dda86afe})

[comment]: # ({cfd8f568-464c269c})
##### Zabbix Server

Os requisitos obrigatórios são sempre necessários, os opcionais são
necessários quando utilizar alguma função específica.

|Requirement|Description|
|-----------|-----------|
|*OpenIPMI*|Necessário para o suporte a IPMI.|
|*libssh2*|Necessário para o suporte ao SSH, na versão 1.0 ou superior.|
|*fping*|Necessário para o suporte a [itens de ping ICMP](/pt/manual/config/items/itemtypes/simple_checks#icmp_pings).|
|*libcurl*|Necessário para o suporte a verificação web, monitoração de máquinas virtuais VMWare e SMTP autenticado. Para o SMTP autenticado é necessário no mínimo a versão 7.20.0.|
|*libiksemel*|Necessário para o suporte a envio de mensagens instantâneas / Jabber.|
|*net-snmp*|Necessário para o suporte ao SNMP.|

[comment]: # ({/cfd8f568-464c269c})

[comment]: # ({dd81de8f-fe8d3bc7})
##### Zabbix Java Gateway

Se você instalou através do código fonte, as dependências necessárias
foram atendidas durante a instalação (pois elas são verificadas durante
o processo de compilação).

Se você instalou o Zabbix através dos pacotes distribuídos, as
dependências foram resolvidas durante o processo de instalação.

Em ambos os casos o software está pronto para uso e não requer downloads
adicionais.

Se, por qualquer motivo, você deseja fornecer as suas próprias versões
destas dependências (por exemplo, se você está preparando um novo pacote
para alguma distribuição do Linux), a lista a seguir lista as
bibliotecas e versões que já testamos o funcionamento. É possível que o
Zabbix funcione também com outras versões.

A tabela a seguir lista os arquivos JAR que são empacotados atualmente
em conjunto com o Zabbix Java Gateway:

|Biblioteca|Licença|Site|Comentários|
|----------|--------|----|------------|
|*logback-core-0.9.27.jar*|EPL 1.0, LGPL 2.1|<http://logback.qos.ch/>|Testado com 0.9.27, 1.0.13, e 1.1.1.|
|*logback-classic-0.9.27.jar*|EPL 1.0, LGPL 2.1|<http://logback.qos.ch/>|Testado com 0.9.27, 1.0.13, e 1.1.1.|
|*slf4j-api-1.6.1.jar*|MIT License|<http://www.slf4j.org/>|Testado com 1.6.1, 1.6.6, e 1.7.6.|
|*android-json-4.3\_r3.1.jar*|Licença Apache 2.0|<https://android.googlesource.com/platform/libcore/+/master/json>|Testado com 2.3.3\_r1.1 e 4.3\_r3.1. Veja src/zabbix\_java/lib/README por instruções sobre como criar um arquivo JAR.|

O Zabbix Java Gateway é compilável e executável com o Java 1.6 ou
superior. É recomendável que se forneça uma versão pré-compilada do
mesmo de modo a permitir que outras versões do Java também possam ser
utilizadas.

[comment]: # ({/dd81de8f-fe8d3bc7})

[comment]: # ({7edca746-cd28f674})
#### Tamanho do Banco de Dados

Os dados de configuração do Zabbix requerem um tamanho praticamente fixo
de espaço em disco pois não crescem de forma significativa.

O tamanho do banco de dados do Zabbix depende, principalmente, do
período de retenção dos dados coletados (histórico e médias). O primeiro
ponto a se observar é:

-   A quantidade de novos valores processados por segundo (*Values Per
    Second / VPS*)

Esta é a quantidade média de novos valores (chaves de itens coletadas)
que o Zabbix Sever recebe a cada segundo. Por exemplo, se nós temos 3000
itens para monitorar com um intervalo de coleta de 60 segundos, a
quantidade de itens por segundo pode ser calculada conforme a seguir:

    3000/60 = **50**.

Isso significa que 50 novos valores (50 novos registros) serão
adicionados no banco de dados a cada segundo.

-   Configurações do histórico no Housekeeper

O Zabbix guarda os valores por um período fixo de tempo, normalmente
várias semanas ou meses. Cada novo valor precisa de uma quantidade
determinada de espaço em disco para guardar o dado (seu valor) e os
índices associados ao registro.

Logo, se nós queremos manter por 30 dias o histórico e recebemos 50
novos valores por segundo, podemos obter o total de valores através de
um simples cálculo (**30**\*24\*3600)\* **50** = 129.600.000, ou cerca
de 130M de valores.

Dependendo do SGBD utilizado, do tipo do valor (ponto flutuante,
inteiro, caractere, log, etc), a quantidade necessária de disco para
armazenar um simples valor pode variar de 40 bytes para centenas de
bytes. Normalmente é algo em torno de 90 bytes por valor. Em nosso caso,
isso quer dizer que os quase 130.000 valores irão precisar de cerca de
**10.9GB** de espaço em disco (130M \* 90 bytes = **10.9GB**).

<​note>Observe que é impossível prever o tamanho ocupado pelos
campos do tipo texto ou log, mas estimamos algo em torno de 500 bytes
por valor (média com grande margem de erro).</​note>​

-   Configurações das médias no Housekeeper

A cada hora o Zabbix guarda um kit de valores (max/min/avg/count) para
cada item coletado que possua configuração de médias. Estes dados são
salvos nas tabelas **trends**. Estes dados são utilizados para agilizar
a construção de gráficos em longos períodos. O intervalo das médias não
pode ser customizado.

Dependendo do tipo do SGDB cada registro de média consumirá cerca de 90
bytes.

Suponha que nós precisemos guardar os dados de médias por 5 anos. Os
valores dos 3000 itens agora irão requerer 3000\*24\*365\* **90** =
**2.2GB** por ano, ou **11GB** para 5 anos.

-   Configurações de eventos no Housekeeper

Cada evento no Zabbix requer aproximadamente 170 bytes de espaço em
disco. É muito difícil estimar a quantidade de eventos gerada pelo
Zabbix Sever por dia. No pior cenário nós recomendamos assumir que o
Zabbix gere um evento por segundo.

Isso significa que se nós precisarmos manter 3 anos de eventos, isso irá
requerer **3**\*365\*24\*3600\* **170** = **15GB** .

A tabela a seguir contêm as fórmulas utilizadas para calcular o espaço
em disco aproximado que será requerido pela solução Zabbix:

|Parâmetro|Fórumla de cálculo de disco (em bytes)|
|----------|----------------------------------------|
|*Configuração do Zabbix*|Tamanho fixo. Estimado em 10MB ou menos.|
|*Histórico*|dias\*(items/intervalo de coleta)\*24\*3600\*bytes<br>items : quantidade de items<br>dias : quantidade em dias da retenção do histórico<br>intervalo de atualização: tempo médio entre coletas do item<br>bytes : quantidade de bytes necessária para guardar cada valor. Varia entre os SGDBs, mas normalmente é de aproximadamente 90 bytes.|

AQUI

|   |   |
|---|---|
|*Médias*|dias\*(items/3600)\*24\*3600\*bytes<br>items : quantidade de items<br>dias : quantidade em dias da retenção das médias<br>bytes : quantidade de bytes necessária para guardar cada valor. Varia entre os SGDBs, mas normalmente é de 128 bytes.|
|*Eventos*|dias\*eventos\*24\*3600\*bytes<br>eventos : quantidade de eventos por segundo. Um (1) evento por segundo no pior caso.<br>dias : quantidade em dias da retenção de eventos<br>bytes : quantidade de bytes necessária para guardar cada valor. Varia entre os SGDBs, mas normalmente é de aproximadamente 170 bytes.|

<​note>Os valores médios (90 bytes para itens numéricos e 170 para
eventos) foram obtidos através de estatísticas em cenários reais de
ambientes monitorados pelo Zabbix utilizando como SGDB o
MySQL.</​note>​

Então, o total de espaço em disco pode ser obtido através da fórmula a
seguir:\

**Configuração + Histórico + Médias + Eventos**\

É claro que estes cálculos não pretendem obter o espaço em disco
utilizado logo após o início da monitoração e sim o máximo de disco que
o Banco irá precisar consumir para guardar os dados do Zabbix.

[comment]: # ({/7edca746-cd28f674})

[comment]: # ({dca87c1f-149075a3})
#### Sincronização de hora

É muito importante que você tenha um sistema preciso de sincronismo de
hora entre todos os servidores monitorados, inclusive o Zabbix. O
[ntpd](http://www.ntp.org/) é o deamon mais popular para sincronizar o
horário de todo o ambiente.

Se os horários não estiverem sincronizados o Zabbix irá converter as
marcas de tempo de os dados recolhidos no servidor Zabbix utilizando
**timestamps** do cliente / servidor depois de estabelecer a conexão de
dados e ajustar a data e hora do valor do item recebido pela diferença
de tempo entre o cliente e o servidor. Para manter este processo mais
simples e evitar possíveis complicações a latência da conexão é
ignorada. Os dados de latência da conexão serão adicionados às marcas de
tempo de dados adquiridos a partir de conexões ativas (agente ativo,
Proxy ativa, o remetente) e subtraído da data e hora dos dados obtidos
através de conexões passivas (proxy passivo). Todas as demais
verificações são feitas usando como referência o horário do servidor e,
neste caso, não ocorrem ajustes.

[comment]: # ({/dca87c1f-149075a3})

[comment]: # ({1d73b238-1d73b238})
#### Database size

Zabbix configuration data require a fixed amount of disk space and do
not grow much.

Zabbix database size mainly depends on these variables, which define the
amount of stored historical data:

-   Number of processed values per second

This is the average number of new values Zabbix server receives every
second. For example, if we have 3000 items for monitoring with a refresh
rate of 60 seconds, the number of values per second is calculated as
3000/60 = **50**.

It means that 50 new values are added to Zabbix database every second.

-   Housekeeper settings for history

Zabbix keeps values for a fixed period of time, normally several weeks
or months. Each new value requires a certain amount of disk space for
data and index.

So, if we would like to keep 30 days of history and we receive 50 values
per second, the total number of values will be around
(**30**\*24\*3600)\* **50** = 129.600.000, or about 130M of values.

Depending on the database engine used, type of received values (floats,
integers, strings, log files, etc), the disk space for keeping a single
value may vary from 40 bytes to hundreds of bytes. Normally it is around
90 bytes per value for numeric items^**2**^. In our case, it means that
130M of values will require 130M \* 90 bytes = **10.9GB** of disk space.

::: noteclassic
The size of text/log item values is impossible to predict
exactly, but you may expect around 500 bytes per value.
:::

-   Housekeeper setting for trends

Zabbix keeps a 1-hour max/min/avg/count set of values for each item in
the table **trends**. The data is used for trending and long period
graphs. The one hour period can not be customized.

Zabbix database, depending on the database type, requires about 90 bytes
per each total. Suppose we would like to keep trend data for 5 years.
Values for 3000 items will require 3000\*24\*365\* **90** = **2.2GB**
per year, or **11GB** for 5 years.

-   Housekeeper settings for events

Each Zabbix event requires approximately 250 bytes of disk space^**1**^.
It is hard to estimate the number of events generated by Zabbix daily.
In the worst-case scenario, we may assume that Zabbix generates one
event per second.

For each recovered event, an event\_recovery record is created. Normally
most of the events will be recovered so we can assume one
event\_recovery record per event. That means additional 80 bytes per
event.

Optionally events can have tags, each tag record requiring approximately
100 bytes of disk space^**1**^. The number of tags per event (\#tags)
depends on configuration. So each will need an additional \#tags \* 100
bytes of disk space.

It means that if we want to keep 3 years of events, this would require
3\*365\*24\*3600\* (250+80+\#tags\*100) = **\~30GB**+\#tags\*100B disk
space^**2**^.

::: noteclassic
 ^**1**^ More when having non-ASCII event names, tags and
values.

^**2**^ The size approximations are based on MySQL and might be
different for other databases. 
:::

The table contains formulas that can be used to calculate the disk space
required for Zabbix system:

|Parameter|Formula for required disk space (in bytes)|
|---------|------------------------------------------|
|*Zabbix configuration*|Fixed size. Normally 10MB or less.|
|*History*|days\*(items/refresh rate)\*24\*3600\*bytes<br>items : number of items<br>days : number of days to keep history<br>refresh rate : average refresh rate of items<br>bytes : number of bytes required to keep single value, depends on database engine, normally \~90 bytes.|
|*Trends*|days\*(items/3600)\*24\*3600\*bytes<br>items : number of items<br>days : number of days to keep history<br>bytes : number of bytes required to keep single trend, depends on the database engine, normally \~90 bytes.|
|*Events*|days\*events\*24\*3600\*bytes<br>events : number of event per second. One (1) event per second in worst-case scenario.<br>days : number of days to keep history<br>bytes : number of bytes required to keep single trend, depends on the database engine, normally \~330 + average number of tags per event \* 100 bytes.|

So, the total required disk space can be calculated as:\
**Configuration + History + Trends + Events**\
The disk space will NOT be used immediately after Zabbix installation.
Database size will grow then it will stop growing at some point, which
depends on housekeeper settings.

[comment]: # ({/1d73b238-1d73b238})

[comment]: # ({520ea0fa-520ea0fa})
#### Time synchronization

It is very important to have precise system time on the server with
Zabbix running. [ntpd](http://www.ntp.org/) is the most popular daemon
that synchronizes the host's time with the time of other machines. It's
strongly recommended to maintain synchronized system time on all systems
Zabbix components are running on.

[comment]: # ({/520ea0fa-520ea0fa})
