Instalação a partir do código-fonte
Você pode obter a versão mais recente do Zabbix compilando-a a partir do código-fonte. Veja também Obtendo o código-fonte do Zabbix.
Um tutorial passo a passo para instalar o Zabbix a partir do código-fonte é fornecido aqui.
Instalando os daemons do Zabbix
1 Baixe o arquivo de origem
Acesse a página de download do Zabbix e baixe o arquivo de origem. Após o download, extraia os arquivos de origem executando:
tar -zxvf zabbix-8.0.0.tar.gz
Insira a versão correta do Zabbix no comando. Ela deve corresponder ao nome do arquivo baixado.
2 Criar conta de usuário
Todos os processos do daemon do Zabbix são executados sob usuários de sistema sem privilégios. Se um daemon do Zabbix for iniciado a partir de uma conta de usuário sem privilégios, ele continuará sendo executado como esse usuário.
Na configuração padrão, se um daemon for iniciado como root, ele mudará para a conta de usuário zabbix, que deve estar presente.
Para criar um usuário e grupo de sistema zabbix, execute os comandos listados abaixo.
Sistema baseado em RedHat:
groupadd --system zabbix
useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix
Sistema baseado em Debian:
addgroup --system --quiet zabbix
adduser --quiet --system --disabled-login --ingroup zabbix --home /var/lib/zabbix --no-create-home zabbix
Não é necessário criar uma conta de usuário separada para o frontend do Zabbix.
Recomendação de segurança
Se o server e o agent do Zabbix forem executados na mesma máquina, recomenda-se executá-los sob contas de usuário separadas. Executar ambos como o mesmo usuário permite que o agent acesse o arquivo de configuração do server, o que pode expor informações confidenciais—como a senha do banco de dados—para qualquer usuário com nível de Admin no Zabbix.
Executar o Zabbix como root, bin ou qualquer outra conta com direitos especiais é um risco de segurança.
Diretório home (opcional)
Os processos do Zabbix não exigem um diretório home, portanto, geralmente não é recomendada a criação de um. No entanto, se você precisar de uma funcionalidade que exija um diretório home (por exemplo, armazenar credenciais do MySQL em $HOME/.my.cnf), você pode criá-lo usando os comandos listados abaixo.
Em sistemas baseados em RedHat, execute:
mkdir -m u=rwx,g=rwx,o= -p /usr/lib/zabbix
chown zabbix:zabbix /usr/lib/zabbix
Em sistemas baseados em Debian, execute:
mkdir -m u=rwx,g=rwx,o= -p /var/lib/zabbix
chown zabbix:zabbix /var/lib/zabbix
3 Criar o banco de dados do Zabbix
Para os processos do Zabbix server e proxy, bem como para o frontend do Zabbix, é necessário um banco de dados. Não é necessário para executar o Zabbix agent.
Scripts SQL são fornecidos para criar o esquema do banco de dados e inserir o conjunto de dados. O banco de dados do proxy Zabbix precisa apenas do esquema, enquanto o banco de dados do server Zabbix requer também o conjunto de dados além do esquema.
Tendo criado um banco de dados Zabbix, prossiga para as etapas seguintes de compilação do Zabbix.
4 Configurar os fontes
C99 com extensões GNU é necessário para compilar o Zabbix server, Zabbix proxy ou Zabbix agent. Esta versão pode ser explicitamente especificada definindo CFLAGS="-std=gnu99":
export CFLAGS="-std=gnu99"
Se estiver instalando a partir do repositório Git do Zabbix, é necessário executar primeiro:\
./bootstrap.sh
Ao configurar os fontes para um Zabbix server ou proxy, você deve especificar o tipo de banco de dados a ser usado. Apenas um tipo de banco de dados pode ser compilado com um processo de server ou proxy por vez.
Para ver todas as opções de configuração suportadas, dentro do diretório de fontes extraído do Zabbix, execute:
./configure --help
Para configurar os fontes para um Zabbix server e agent, você pode executar algo como:
./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --with-ares
Para configurar os fontes para um Zabbix server (com PostgreSQL etc.), você pode executar:
./configure --enable-server --with-postgresql --with-net-snmp
Para configurar os fontes para um Zabbix proxy (com SQLite etc.), você pode executar:
./configure --prefix=/usr --enable-proxy --with-net-snmp --with-sqlite3 --with-ssh2
Para configurar os fontes para um Zabbix agent, você pode executar:
./configure --enable-agent
ou, para o Zabbix agent 2:
./configure --enable-agent2
Uma versão Go suportada deve ser instalada para compilar o Zabbix agent 2.
Notas sobre as opções de compilação:
--enable-agent- compila o Zabbix agent, bem como as utilidades de linha de comando Zabbix get e Zabbix sender.--with-libcurl- necessário para monitoramento de máquinas virtuais, autenticação SMTP eweb.page.*itens do Zabbix agent. Veja também: Requisitos (libcurl).--with-libxml2- necessário para monitoramento de máquinas virtuais.--with-libpcre2[=DIR]- o Zabbix sempre compila com a biblioteca PCRE2; esta opção apenas permite especificar um caminho de instalação personalizado para o PCRE2.--with-mysql=/path/to/mysql_config- especifica o caminho para uma configuração específica da biblioteca cliente MySQL. Útil quando múltiplas versões do MySQL ou MariaDB estão instaladas.--enable-static- vincula as bibliotecas estaticamente (não suportado no Solaris). Use isso se você planeja distribuir binários compilados para sistemas sem as bibliotecas necessárias. Não recomendado ao compilar o Zabbix server. Para compilar o server estaticamente, é necessária uma versão estática de cada biblioteca externa. O script configure não verifica isso automaticamente.--with-stacksize=<valor>- define o tamanho da pilha por thread em kilobytes (por exemplo,--with-stacksize=512). Você pode aumentar esse valor se o Zabbix travar ou congelar devido a estouros de pilha (por exemplo, durante o pré-processamento em sistemas com limites de pilha de thread padrão baixos).
Se o ./configure falhar devido à falta de bibliotecas ou outros problemas, verifique o arquivo config.log para obter informações detalhadas sobre o erro.
Por exemplo, se o libssl estiver ausente, a mensagem de erro imediata pode ser enganosa:
checking for main in -lmysqlclient... no
configure: error: Not found mysqlclient library
Neste caso, o config.log revela a causa real:
/usr/bin/ld: cannot find -lssl
/usr/bin/ld: cannot find -lcrypto
Veja também:
5 Compile e instale tudo
Se estiver instalando a partir do repositório Git do Zabbix, é necessário executar primeiro:\
$ make dbschema
make install
Esta etapa deve ser executada como um usuário com permissões suficientes (comumente
'root', ou usando sudo).
Executar make install irá, por padrão, instalar os binários dos daemons
(zabbix_server, zabbix_agentd, zabbix_proxy) em /usr/local/sbin e
os binários dos clientes (zabbix_get, zabbix_sender) em /usr/local/bin.
Para especificar um local diferente de /usr/local, use a chave --prefix na etapa anterior de configuração das fontes, por exemplo --prefix=/home/zabbix. Neste caso, os binários dos daemons serão instalados em <prefix>/sbin, enquanto as utilidades em <prefix>/bin. As páginas de manual serão instaladas em <prefix>/share.
6 Revise e edite os arquivos de configuração
- edite o arquivo de configuração do Zabbix agent /usr/local/etc/zabbix_agentd.conf
Você precisa configurar este arquivo para cada host com o zabbix_agentd instalado.
Você deve especificar o endereço IP do Zabbix server no arquivo. Conexões de outros hosts serão negadas.
- edite o arquivo de configuração do Zabbix server /usr/local/etc/zabbix_server.conf
Você deve especificar o nome do banco de dados, usuário e senha (se estiver usando algum).
O restante dos parâmetros será adequado para você com seus valores padrão se você tiver uma instalação pequena (até dez hosts monitorados). No entanto, você deve alterar os parâmetros padrão se quiser maximizar o desempenho do Zabbix server (ou proxy).
- se você instalou um Zabbix proxy, edite o arquivo de configuração do proxy /usr/local/etc/zabbix_proxy.conf
Você deve especificar o endereço IP do server e o hostname do proxy (deve ser conhecido pelo server), bem como o nome do banco de dados, usuário e senha (se estiver usando algum).
Com o SQLite, o caminho completo para o arquivo do banco de dados deve ser especificado; usuário e senha do banco de dados não são necessários.
7 Inicie os daemons
Execute o zabbix_server no lado do servidor.
zabbix_server
Certifique-se de que seu sistema permite a alocação de 36MB (ou um pouco mais) de memória compartilhada, caso contrário, o servidor pode não iniciar e você verá "Cannot allocate shared memory for <type of cache>." no arquivo de log do servidor. Isso pode acontecer no FreeBSD, Solaris 8.\
Execute o zabbix_agentd em todas as máquinas monitoradas.
zabbix_agentd
Certifique-se de que seu sistema permite a alocação de 2MB de memória compartilhada, caso contrário, o agent pode não iniciar e você verá "Cannot allocate shared memory for collector." no arquivo de log do agent. Isso pode acontecer no Solaris 8.
Se você instalou o Zabbix proxy, execute o zabbix_proxy.
zabbix_proxy
Instalando a interface web do Zabbix
Copiando arquivos PHP
O frontend do Zabbix é escrito em PHP, portanto, para executá-lo, é necessário um servidor web com suporte a PHP. A instalação é feita simplesmente copiando os arquivos PHP do diretório ui para o diretório de documentos HTML do servidor web.
Os locais comuns dos diretórios de documentos HTML para servidores web Apache incluem:
- /usr/local/apache2/htdocs (diretório padrão ao instalar o Apache a partir do código-fonte)
- /srv/www/htdocs (OpenSUSE, SLES)
- /var/www/html (Debian, Ubuntu, Fedora, RHEL)
Recomenda-se usar um subdiretório em vez da raiz HTML. Para criar um subdiretório e copiar os arquivos do frontend do Zabbix para ele, execute os seguintes comandos, substituindo <htdocs> pelo diretório real:
mkdir <htdocs>/zabbix
cd ui
cp -a . <htdocs>/zabbix
Se planeja usar qualquer outro idioma além do inglês, consulte Instalação de idiomas adicionais do frontend para obter instruções.
Instalando o frontend
Consulte a página Instalação da interface web para obter informações sobre o assistente de instalação do frontend do Zabbix.
Instalando plugins carregáveis do agent 2 do Zabbix
A instalação de plugins carregáveis do agent 2 do Zabbix só é necessária se você quiser monitorar alvos não cobertos pelos plugins internos (por exemplo, servidores ou clusters MongoDB, PostgreSQL e seus forks, etc.). Veja a lista completa de plugins carregáveis e plugins internos.
Antes de instalar um plugin, verifique o arquivo README. Ele pode conter requisitos específicos e instruções de instalação.
Para instalar a partir do código-fonte, primeiro baixe e extraia o arquivo de origem do plugin carregável.
Para compilar o plugin, navegue até o diretório extraído do plugin e execute make:
make
Uma versão suportada do Go deve estar instalada para compilar plugins carregáveis do agent 2 do Zabbix.
O executável do plugin pode ser colocado em qualquer lugar, desde que seja carregável pelo agent 2 do Zabbix. Especifique o caminho para o binário do plugin no arquivo de configuração do plugin, por exemplo, em postgresql.conf para o plugin PostgreSQL:
Plugins.PostgreSQL.System.Path=/caminho/para/executavel/zabbix-agent2-plugin-postgresql
O caminho para o arquivo de configuração do plugin deve ser especificado no parâmetro Include do arquivo de configuração do agent 2 do Zabbix:
Include=/caminho/para/arquivo/de/configuracao/do/plugin/postgresql.conf
Prossiga para a configuração para mais detalhes sobre como configurar plugins.
Os plugins carregáveis fornecidos pelo Zabbix usam makefiles simples com os seguintes alvos de compilação:
make- compila o pluginmake clean- exclui todos os arquivos criados pela compilação do pluginmake check- executa auto-testes (requer um alvo real de monitoramento, por exemplo, um banco de dados PostgreSQL)make style- verifica o estilo do código Go comgolangci-lintmake format- formata o código Go comgo fmtmake dist- cria um arquivo de origem incluindo todas as dependências
Instalando o Java gateway
É necessário instalar o Java gateway apenas se você quiser monitorar aplicações JMX. O Java gateway é leve e não requer um banco de dados.
Para instalar a partir do código-fonte, primeiro baixe e extraia o arquivo de origem.
Para compilar o Java gateway, execute o script ./configure com a opção --enable-java. Recomenda-se que você especifique a opção --prefix para solicitar um caminho de instalação diferente do padrão /usr/local, pois a instalação do Java gateway criará toda uma árvore de diretórios, não apenas um único executável.
./configure --enable-java --prefix=$PREFIX
Para compilar e empacotar o Java gateway em um arquivo JAR, execute make. Observe que, para esta etapa, você precisará dos executáveis javac e jar em seu caminho.
make
Agora você tem um arquivo zabbix-java-gateway-$VERSION.jar em src/zabbix_java/bin. Se você se sentir confortável em executar o Java gateway a partir de src/zabbix_java no diretório de distribuição, então pode prosseguir para as instruções de configuração e execução do Java gateway.
Caso contrário, certifique-se de ter privilégios suficientes e execute make install.
make install
Prossiga para a configuração para mais detalhes sobre como configurar e executar o Java gateway.
Instalando o serviço web do Zabbix
A instalação do serviço web do Zabbix só é necessária se você quiser usar relatórios agendados.
Para instalar a partir do código-fonte, primeiro baixe e extraia o arquivo de código-fonte.
Para compilar o serviço web do Zabbix, execute o script ./configure com a opção
--enable-webservice.
Uma versão do Go suportada deve ser instalada para compilar o serviço web do Zabbix.
Execute o zabbix_web_service na máquina onde o serviço web está instalado:
zabbix_web_service
Prossiga para a configuração para mais detalhes sobre como configurar a geração de Relatórios agendados.
Obtendo o código-fonte do Zabbix
Existem várias maneiras de obter o código-fonte do Zabbix:
- Você pode baixar as versões estáveis lançadas no site oficial do Zabbix
- Você pode baixar as versões noturnas na página de desenvolvedores do site oficial do Zabbix
- Você pode obter a versão de desenvolvimento mais recente do sistema de repositório de código-fonte Git:
- O local principal do repositório completo é em https://git.zabbix.com/scm/zbx/zabbix.git
- O master e as versões suportadas também são espelhados no Github em https://github.com/zabbix/zabbix
Um cliente Git deve estar instalado para clonar o repositório. O pacote oficial do cliente Git de linha de comando é comumente chamado de git nas distribuições. Para instalar, por exemplo, no Debian/Ubuntu, execute:
sudo apt-get update
sudo apt-get install git
Para obter todo o código-fonte do Zabbix, altere para o diretório onde deseja colocar o código e execute:
git clone https://git.zabbix.com/scm/zbx/zabbix.git
Problemas de compilação
Estes são os problemas conhecidos relacionados à compilação do Zabbix a partir do código-fonte. Para todos os outros casos, consulte a página de Problemas conhecidos.
Biblioteca em um local não padrão
O Zabbix permite que você especifique uma biblioteca localizada em um local não padrão. No exemplo abaixo, o Zabbix executará o curl-config a partir do local não padrão especificado e usará sua saída para determinar a libcurl correta a ser usada.
$ ./configure --enable-server --with-mysql --with-libcurl=/usr/local/bin/curl-config
Isso funcionará se for a única libcurl instalada no sistema, mas pode não funcionar se houver outra libcurl instalada em um local padrão (pelo gerenciador de pacotes, por exemplo). Isso ocorre quando você precisa de uma versão mais recente da biblioteca para o Zabbix e da versão mais antiga para outros aplicativos.
Portanto, especificar um componente em um local não padrão nem sempre funcionará quando o mesmo componente também existir em um local padrão.
Por exemplo, se você usar uma libcurl mais recente instalada em /usr/local com o pacote libcurl ainda instalado, o Zabbix pode escolher a errada e a compilação falhará:
usr/bin/ld: ../../src/libs/zbxhttp/libzbxhttp.a(http.o): in function 'zbx_http_convert_to_utf8':
/tmp/zabbix-master/src/libs/zbxhttp/http.c:957: undefined reference to 'curl_easy_header'
collect2: error: ld returned 1 exit status
Aqui, a função curl_easy_header() não está disponível na /usr/lib/x86_64-linux-gnu/libcurl.so mais antiga, mas está disponível na /usr/local/lib/libcurl.so mais recente.
O problema está na ordem das flags do linker, e uma solução é especificar o caminho completo para a biblioteca em uma variável LDFLAGS:
$ LDFLAGS="-Wl,--no-as-needed /usr/local/lib/libcurl.so" ./configure --enable-server --with-mysql --with-libcurl=/usr/local/bin/curl-config
Observe a opção -Wl,--no-as-needed, que pode ser necessária em alguns sistemas (veja também: opções de link padrão em sistemas baseados em Debian).
Tamanho da pilha muito pequeno em alguns sistemas
Se o Zabbix travar ou congelar devido a estouros de pilha, você pode aumentar o tamanho da pilha por thread usando a opção --with-stacksize ao configurar os fontes.
Esse problema pode ocorrer em sistemas com limites de pilha de thread padrão baixos, especialmente durante o pré-processamento, onde várias threads são criadas.
O exemplo a seguir define o tamanho da pilha para 512 KB por thread:
./configure --enable-server --with-mysql --with-stacksize=512
Você pode verificar os limites de pilha de thread do sistema em tempo de execução usando o comando ulimit -s em sistemas baseados em Linux.