Passos de Instalação do Zabbix 6.0 no Debian11 (bullseye)

Isaque Profeta
Zabbix Brasil
Published in
5 min readDec 27, 2020

Instalação do Zabbix 6 com PostgresSQL 15, todos os módulos em apenas uma máquina no Debian 11 com TimescaleDB (testado com um vagrant usando a imagem debian/bullseye64 no VirtualBox)

Todo o tutorial desta instalação prevê o uso direto do usuário root

Sistema Operacional

Para o ambiente Debian Linux é necessário um pacote especificamente para a instalação de repositórios que usam chaves GPG:

sudo apt-get -q update
sudo apt-get -q -y install gnupg2

Banco de dados: PostgreSQL 15

É necessário adicionar o repositório para o Debian e instalar os pacotes do sistema de banco de dados, iniciando em seguida o serviço, e já habilitando o mesmo na inicialização:

sudo echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.listwget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -sudo apt-get -q updatesudo apt-get -q -y install postgresql-15sudo systemctl enable --now postgresql@15-main

Uma edição necessária ao Zabbix, vamos habilitar tanto o acesso ao Banco de Dados via senha em MD5 e fazer a conectividade estar disponível para os IP’s externos (reiniciando o serviço em seguida):

sudo sed -i "s/ident/md5/g" /etc/postgresql/15/main/pg_hba.confsudo sed -i "s/#listen_addresses = 'localhost'/listen_addresses = '*'/" /etc/postgresql/15/main/postgresql.confsudo systemctl restart postgresql@15-main

Pode-se então criar um usuário no banco de dados com senha e o Banco de Dados em si que vai ser usado (o segundo comando pode apresentar um erro de “could not change directory” que deve ser ignorado):

Atenção, troque a senha abaixo de exemplo “Z4bb1xD4t4b4s3

sudo -u postgres psql -c "CREATE USER zabbix WITH ENCRYPTED PASSWORD 'Z4bb1xD4t4b4s3'" 2>/dev/nullsudo -u postgres createdb -O zabbix -E Unicode -T template0 zabbix 2>/dev/null

Zabbix Server 5.2

Agora deve-se adicionar o repositório do Zabbix, instalando o zabbix-server-pgsql em seguida:

cd /tmpwget --quiet https://repo.zabbix.com/zabbix/6.0/debian/pool/main/z/zabbix-release/zabbix-release_6.0-1+debian11_all.debsudo dpkg -i zabbix-release_6.0-1+debian11_all.debsudo apt-get -q updatesudo apt-get -q -y install zabbix-server-pgsql zabbix-sql-scripts

Importar em seguida o schema do banco de dados (novamente pode apresentar um erro de “could not change directory” que deve ser ignorado):

zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix

Alterar ou remover comentários, nas linhas de configuração referentes às credenciais de Banco de Dados no /etc/zabbix/zabbix_server.conf:

DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=<password>

Iniciar o serviço do zabbix-server e habilitar o início automático com o sistema operacional:

systemctl enable --now zabbix-server

Zabbix Frontend

Considerando que o repositório do Zabbix já foi configurado, é necessário instalar os pacotes de frontend e de configurações do NGINX:

sudo apt-get -q -y install zabbix-frontend-php php7.4-pgsql zabbix-nginx-conf

Editar o arquivo /etc/php/7.4/fpm/pool.d/zabbix-php-fpm.conf adicionando a configuração de timezone:

echo "php_value[date.timezone] = America/Sao_Paulo" >> /etc/zabbix/php-fpm.conf

Iniciar primeiro o serviço do php-fpm e depois o do Nginx, habilitando também os mesmos no início com o sistema operacional:

systemctl enable --now php7.3-fpmsystemctl enable --now nginx

Agora configura-se o Zabbix para ser o Virtual Server principal na porta 80, e em seguida é necessário substituir o padrão do NGINX do Debian pelo padrão do Zabbix:

sudo sed -i "s/#        listen          80;/        listen 80 default_server;\\n        listen [::]:80 default_server;/" /etc/zabbix/nginx.confsudo sed -i "s/#        server_name     example.com;/        server_name _;/" /etc/zabbix/nginx.confsudo rm /etc/nginx/sites-available/defaultsudo rm /etc/nginx/sites-enabled/defaultsudo rm /etc/nginx/conf.d/zabbix.confsudo ln -s /etc/zabbix/nginx.conf /etc/nginx/sites-available/defaultsudo ln -s /etc/zabbix/nginx.conf /etc/nginx/sites-enabled/default

Como este tutorial foca na língua portuguesa do Brasil, vamos habilitar no Debian todas as linguagens suportadas pelo Zabbix no Frontend Web:

mkdir -p /var/lib/locales/supported.d/rm -f /var/lib/locales/supported.d/localcat /usr/share/zabbix/include/locales.inc.php | grep display | grep true | awk '{$1=$1};1' | cut -d"'" -f 2 | sort | xargs -I '{}' bash -c 'echo "{}.UTF-8 UTF-8"' >> /etc/locale.gendpkg-reconfigure --frontend noninteractive locales

Reinicie primeiro o serviço do php-fpm e depois o do NGINX pausadamente (espere uns 10 segundos entre os comandos):

systemctl restart php7.3-fpmsystemctl restart nginx

Zabbix Frontend — Setup Wizard

Normalmente existe a configuração via wizard web, mas essa configuração será feita pela linha de comando neste artigo. (caso prefira, pode usar o link do YouTube da versão antiga deste artigo na 5.0: Link do vídeo)

sudo tee /etc/zabbix/web/zabbix.conf.php <<EOL
<?php
\$DB["TYPE"] = "POSTGRESQL";
\$DB["SERVER"] = "localhost";
\$DB["PORT"] = "5432";
\$DB["DATABASE"] = "zabbix";
\$DB["USER"] = "zabbix";
\$DB["PASSWORD"] = "Z4bb1xD4t4b4s3";
\$DB["SCHEMA"] = "";
\$DB["ENCRYPTION"] = false;
\$DB["KEY_FILE"] = "";
\$DB["CERT_FILE"] = "";
\$DB["CA_FILE"] = "";
\$DB["VERIFY_HOST"] = false;
\$DB["CIPHER_LIST"] = "";
\$DB["VAULT_URL"] = "";
\$DB["VAULT_DB_PATH"] = "";
\$DB["VAULT_TOKEN"] = "";
\$DB["DOUBLE_IEEE754"] = true;
\$ZBX_SERVER = "localhost";
\$ZBX_SERVER_PORT = "10051";
\$ZBX_SERVER_NAME = "zabbix";
\$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;
EOL

Agora basta acessar via Browser o Zabbix em http://ip_do_servidor/ (Essa instalação coloca o Zabbix direto na raiz do site “/” e não no “/zabbix”)

Zabbix Agent para a instalação deste Zabbix Server

Considerando que o repositório do Zabbix já está instalado (essa instalação coloca todos os módulos na mesma máquina), instale o agente:

apt-get -q -y install zabbix-agent

Edite, alterando ou removendo os comentários, se necessário nas linhas do arquivo /etc/zabbix/zabbix_agentd.conf:

Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=Zabbix server

Inicie o serviço do zabbix-agent e habilite o início com o sistema operacional:

systemctl enable --now zabbix-agent

Dando tudo certo

Espere alguns segundos e veja que o host zabbix-server já está com agente verde e o ambiente pronto para uso.

Caso algo dê errado

Revise todo o passo-a-passo verificando o status dos serviços e as logs, e se precisar de ajuda dê um pulo no canal do Telegram do Zabbix Brasil.

Zabbix Server:

systemctl status zabbix-servercat /var/log/zabbix/zabbix_server.log

PostgreSQL:

systemctl status postgresql-12cat /var/log/postgresql/postgresql-12-main.log

Nginx:

systemctl status nginxcat /var/log/nginx/error.log

php-fpm:

systemctl status php-fpmcat /var/log/php7.3-fpm.log

Zabbix Agente:

systemctl status zabbix-agentcat /var/log/zabbix/zabbix_agentd.log

Extra: TimescaleDB

Para usar o sistema de particionamento de tabelas do TimescaleDB, primeiro é necessário adicionar o repositório para o mesmo e instalar a extensão:

sudo echo "deb https://packagecloud.io/timescale/timescaledb/debian/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/timescaledb.listwget --quiet -O - https://packagecloud.io/timescale/timescaledb/gpgkey | sudo apt-key add -sudo apt-get -q updatesudo apt-get -q install -y timescaledb-2-postgresql-15

É preciso parar o zabbix-server para migração, em seguida executar o assistente de tunning do TimescaleDB, e aumentar um pouco o número de conexões disponíveis para depois reiniciar o SGBD e aplicar as mudanças:

systemctl stop zabbix-serverecho "shared_preload_libraries = 'timescaledb'" >> /etc/postgresql/15/main/postgresql.confsudo sed -i "s/max_connections = 20/max_connections = 50/" /etc/postgresql/15/main/postgresql.confecho "timescaledb.license=timescale" >> /etc/postgresql/15/main/postgresql.confsudo systemctl restart postgresql@15-mainsudo -u postgres timescaledb-tune --quiet --yes

Após instalado o Banco de Dados do Zabbix precisa receber a extensão e receber os comandos do script de migração:

echo "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" | sudo -u postgres psql zabbix 2>/dev/nullcat /usr/share/zabbix-sql-scripts/postgresql/timescaledb.sql | sudo -u zabbix psql zabbix

Após terminada a migração, pode-se iniciar novamente o zabbix-server e o frontend pausadamente (espere uns 10 segundos entre os comandos):

systemctl start zabbix-serversystemctl restart php7.4-fpmsystemctl restart nginx

Agora é possível configurar os prazos de dados no banco a partir do frontend web no caminho de Administration -> General -> Housekeeping:

Atualizado em 11/05/2023 para o zabbix 6.0.

Atualizado em 29/06/2021 para o zabbix 5.4.

Atualizado em 31/12/2020 devido atualizações realizadas pela Zabbix Inc no release de pacotes do Debian.

--

--

Isaque Profeta
Zabbix Brasil

Security operations automation, monitoring tools specialist and Python/JavaScript enthusiast, but sometimes I can play with OKR and ITIL too.