SSD Nodes Learn
Guias Matt ConnorPor Matt Connor · Atualizado 2026-07-24

Como instalar Zabbix 7.0 LTS no Ubuntu 24.04

Guia para instalar Zabbix 7.0 LTS no Ubuntu 24.04 com nginx e MySQL. Aprenda a importar o schema e configurar o agent2 sem erros de permissão ou conexão.

O que você está construindo

Um único VPS Ubuntu 24.04 executando a stack completa do Zabbix 7.0 LTS: o daemon zabbix-server para coleta e alertas, um banco de dados MariaDB/MySQL para armazenar métricas, um frontend PHP servido pelo nginx e o zabbix-agent2 coletando métricas do próprio servidor. Após a instalação, você o aponta para um segundo servidor, anexa um template e recebe um e-mail no momento em que um disco enche ou um serviço para de funcionar.

O Zabbix é mais robusto que uma ferramenta de status-page: é um sistema real de séries temporais com templates, triggers, escalonamento e retenção de histórico. A maioria dos problemas ocorre em três etapas que as pessoas pulam — importar o schema do banco de dados, configurar a senha do banco que o servidor utiliza e descomentar duas linhas no arquivo de configuração do nginx. Se configurar isso corretamente, o restante é simples. Se você precisa apenas de verificações de up/down e uma página de status compartilhável, um monitor de status leve como o Uptime Kuma faz isso em um único container; o Zabbix é indicado quando você precisa de limites por métrica e escalonamento em múltiplos hosts.

Use a linha 7.0 LTS: o server, frontend, agent2 e o schema são versionados juntos e recebem correções de segurança por anos. Antes de copiar o nome do repositório abaixo, verifique a página oficial de download do Zabbix — o pacote de release latest sempre aponta para a versão 7.0 mais recente, mas se preferir fixar um build 7.0-N específico, a página também lista esse nome de arquivo. Todos os outros comandos aqui são estáveis para toda a linha 7.0.

Dimensionamento, portas e pré-requisitos

Considere um VPS Ubuntu 24.04 KVM recém-instalado com acesso root ou sudo. Seja realista quanto aos recursos: 2 GB de RAM e duas vCPUs são o mínimo real para rodar server, database, nginx e PHP em uma única máquina monitorando alguns hosts. Uma máquina com 1 GB inicia o sistema, mas o banco de dados ficará sem recursos conforme o histórico cresce; planeje 4 GB após alguns dezenas de hosts e, acima de cem, mova o banco de dados para um servidor próprio. O uso de disco aumenta conforme a quantidade de itens coletados e o tempo de retenção do histórico; reserve alguns gigabytes para começar; o housekeeper remove dados antigos conforme as janelas de retenção configuradas.

Portas: 80 e 443 para o frontend, públicas ou restritas ao seu próprio IP. O server escuta na TCP 10051 para agentes ativos que enviam dados, e cada agente escuta na TCP 10050 para o server realizar o polling. Abra apenas o que for exposto se houver um firewall na frente. Ter um registro DNS A para o frontend é recomendável, pois você precisará de um certificado real para ele — um servidor Zabbix monitora todos os outros serviços que você executa, portanto, ele deve fazer parte de stack de self-hosting recomendada para 2026 em vez de ser adicionado posteriormente.

Passo 1 — Adicione o repositório oficial do Zabbix 7.0

O pacote zabbix-release realiza apenas uma tarefa: ele insere a lista de fontes do apt e a chave de assinatura no seu sistema. Instale-o e depois atualize o índice.

wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu24.04_all.deb
sudo dpkg -i zabbix-release_latest_7.0+ubuntu24.04_all.deb
sudo apt update

Se o comando wget retornar 404 Not Found, o nome do arquivo mudou — abra a página de download do Zabbix, selecione Ubuntu 24.04 e copie a URL zabbix-release exata exibida. Um apt update limpo mostra uma linha repo.zabbix.com e não apresenta avisos de chave; The following signatures couldn't be verified because the public key is not available significa que o pacote de release não instalou a chave, portanto, execute o dpkg -i novamente e atualize de novo.

Passo 2 — Instalar o server, frontend e agent

Instale o server compilado para MySQL, o frontend PHP, a configuração do nginx, os arquivos de schema SQL e o agent2 de uma só vez.

sudo apt install -y zabbix-server-mysql zabbix-frontend-php \
  zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2

zabbix-server-mysql é o server compilado para MySQL/MariaDB; para PostgreSQL, instale zabbix-server-pgsql e ajuste os passos de banco de dados abaixo. zabbix-sql-scripts contém o schema que você importará a seguir — na versão 7.0, ele é um pacote separado; esquecer este pacote fará com que o caminho de importação não seja encontrado posteriormente. Nenhum destes pacotes instala um motor de banco de dados, portanto, instale o MariaDB agora se o servidor ainda não possuir um.

sudo apt install -y mariadb-server
sudo systemctl enable --now mariadb

Passo 3 — Criar o banco de dados com o character set correto

O Zabbix exige uma collation específica: o banco de dados deve ser utf8mb4 com utf8mb4_bin, caso contrário a importação falhará com erros de foreign-key. Abra um shell root com sudo mysql e execute:

CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER zabbix@localhost IDENTIFIED BY 'choose-a-strong-password';
GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost;
SET GLOBAL log_bin_trust_function_creators = 1;
FLUSH PRIVILEGES;

A linha SET GLOBAL serve como uma medida de segurança para a importação. O schema do Zabbix cria stored functions, e um usuário não-SUPER como o zabbix não consegue criá-las com o binary logging ativado — o MySQL 8 habilita o binary logging por padrão, e algumas versões gerenciadas do MariaDB também (o MariaDB padrão não habilita). Se você pular essa flag em um servidor com binary logging ativado, a importação parará com ERROR 1419 (HY000): You do not have the SUPER privilege and binary logging is enabled. Definir como root resolve isso; desative o recurso novamente após a importação. Anote a senha exatamente — a configuração do servidor exige a mesma string, byte a byte.

Passo 4 — Importar o schema (o passo que as pessoas pulam)

Este é o motivo mais comum para um frontend recém-instalado não carregar: o banco de dados criado está vazio. Importe o schema contido em zabbix-sql-scripts para dentro dele.

zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | \
  mysql --default-character-set=utf8mb4 -uzabbix -p zabbix

O comando solicitará a senha do zabbix, levará de trinta a sessenta segundos em uma VPS pequena e não exibirá mensagens em caso de sucesso — o silêncio indica que o processo foi concluído corretamente. zcat: /usr/share/zabbix-sql-scripts/mysql/server.sql.gz: No such file or directory indica que o pacote zabbix-sql-scripts não está instalado (volte ao Passo 2). ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' indica que a senha ou a permissão do Passo 3 está incorreta. Assim que terminar, desative a flag de segurança novamente:

sudo mysql -e "SET GLOBAL log_bin_trust_function_creators = 0;"

Confirme a importação com sudo mysql -e "SELECT COUNT(*) FROM zabbix.users;" — um número, e não um erro de doesn't exist, confirma que o schema foi importado.

Passo 5 — Defina a senha do banco de dados em zabbix_server.conf

O servidor lê as credenciais do banco de dados em /etc/zabbix/zabbix_server.conf. Apenas a senha precisa ser configurada — DBName e DBUser já possuem o padrão zabbix. Descomente a linha # DBPassword= e defina-a:

DBName=zabbix
DBUser=zabbix
DBPassword=choose-a-strong-password

A senha deve ser idêntica à definida no Passo 3. Uma DBPassword em branco ou incorreta é a principal causa do erro "Zabbix server is not running" que aparece posteriormente: o daemon inicia, falha no login e encerra a execução. Nenhuma mensagem aparece na tela — apenas nos logs.

Passo 6 — Aponte o nginx para o frontend

O pacote zabbix-nginx-conf instala um server block em /etc/zabbix/nginx.conf e cria um link simbólico para o nginx a partir de /etc/nginx/conf.d/zabbix.conf, mas as linhas listen e server_name vêm comentadas. O nginx não servirá nada para o Zabbix até que você as edite:

server {
    listen          80;
    server_name     zabbix.example.com;
    ...
}

Use seu domínio ou o IP público do servidor se ainda não tiver DNS. Dois pontos de atenção. O site de boas-vindas padrão do nginx no Ubuntu também escuta na porta 80 e é definido como o servidor padrão; por isso, ele responde a qualquer requisição cujo nome não coincida com o seu — remova-o para evitar que a página errada seja carregada: sudo rm -f /etc/nginx/sites-enabled/default. E se o /etc/nginx/conf.d/zabbix.conf estiver ausente (um problema conhecido de empacotamento), crie o link manualmente com sudo ln -s /etc/zabbix/nginx.conf /etc/nginx/conf.d/zabbix.conf. Em seguida, teste e recarregue:

sudo nginx -t
sudo systemctl reload nginx

O comando nginx -t deve exibir test is successful. Se exibir nginx: [emerg] a duplicate default server for 0.0.0.0:80, tanto o site padrão quanto o bloco do Zabbix estão tentando responder em default_server — remova o site padrão e teste novamente. Frequentemente, o teste passa com apenas um aviso de conflicting server name, mas o navegador ainda exibe a página de boas-vindas padrão: isso ocorre porque o site padrão está respondendo a um nome não correspondente; removê-lo resolve o problema.

Passo 7 — Iniciar e habilitar os serviços

Inicie o server, o agent, o PHP-FPM e o nginx, e habilite-os para que iniciem automaticamente após um reboot.

sudo systemctl restart zabbix-server zabbix-agent2 nginx php8.3-fpm
sudo systemctl enable  zabbix-server zabbix-agent2 nginx php8.3-fpm

O Ubuntu 24.04 utiliza o PHP 8.3, portanto o serviço FPM é php8.3-fpm; o pacote zabbix-nginx-conf executa o frontend sob esse mesmo master. Confirme se o server iniciou e permanece ativo:

sudo systemctl status zabbix-server --no-pager
sudo tail -n 20 /var/log/zabbix/zabbix_server.log

Um log saudável termina com o server iniciado e seus processos housekeeper, poller e trapper em execução. Se você vir [Z3001] connection to database 'zabbix' failed: [1045] Access denied for user 'zabbix'@'localhost', o DBPassword do Passo 5 está incorreto — corrija-o e reinicie. Uma linha [Z3005] query failed: [1146] Table 'zabbix.dbversion' doesn't exist significa que você pulou a importação do schema no Passo 4, portanto o server não tem dados para ler.

Passo 8 — Finalizar o assistente de configuração web

Acesse http://your-domain-or-ip. O assistente de configuração do Zabbix será aberto. Siga os passos:

  1. Welcome — escolha um idioma.
  2. Check of pre-requisites — todas as linhas devem exibir OK por padrão; o pool /etc/zabbix/php-fpm.conf já define os limites de PHP necessários para o Zabbix.
  3. Configure DB connection — tipo de banco de dados MySQL, host localhost, porta 0 (porta padrão ou socket), nome do banco de dados zabbix, usuário zabbix e a senha do Passo 3. Credenciais incorretas ou esquema ausente causarão erro nesta etapa.
  4. Settings — mantenha o host do servidor Zabbix como localhost, porta 10051, e defina um nome para a instalação.
  5. Pre-installation summary, depois Install — o assistente criará o arquivo /etc/zabbix/web/zabbix.conf.php.
  6. Finish — faça login como Admin (A maiúsculo) com a senha zabbix e altere essa senha imediatamente em Users.

Se o assistente reportar Cannot create the configuration file, o usuário web não consegue escrever em /etc/zabbix/web/ — baixe o arquivo zabbix.conf.php sugerido, coloque-o manualmente no diretório usando sudo e clique em Finish.

Passo 9 — Adicionar o host local e anexar um template

O Zabbix não monitora a si mesmo automaticamente. Vá em Data collection → Hosts → Create host, defina o nome do host como zabbix-server, adicione-o ao grupo Linux servers e adicione uma interface Agent com o IP 127.0.0.1 e porta 10050. Em Templates, vincule o Linux by Zabbix agent (a variante de passive-poll; o Linux by Zabbix agent active utiliza agent push). Salve.

Em menos de um minuto, a linha do host exibirá o rótulo verde ZBX e as métricas aparecerão em Monitoring → Latest data. Um rótulo ZBX vermelho indica que o servidor não consegue alcançar o agent — este é um erro de conectividade detalhado abaixo, não um erro deste passo.

Passo 10 — Um trigger útil e um alerta por e-mail

O template Linux by Zabbix agent já possui triggers para CPU alta, memória baixa e discos cheios, portanto você terá alertas assim que vinculá-lo. Para ver como um é construído, adicione o seu: abra o host, vá em Triggers → Create trigger, nomeie como Root filesystem over 90% full on {HOST.NAME}, defina a severidade como High e use esta expressão:

last(/zabbix-server/vfs.fs.dependent.size[/,pused])>90

vfs.fs.dependent.size[/,pused] é o item de percentual de uso que o filesystem discovery do template cria para o filesystem root (o template Linux do 7.0 coleta vfs.fs.get uma única vez e deriva os itens dependentes por mount), portanto o trigger dispara sem coleta de dados adicional. Salve-o.

Um trigger apenas altera a cor de uma linha no dashboard até que uma action notifique alguém. Em Alerts → Media types → Email, configure o servidor SMTP, porta, endereço do remetente, segurança de conexão (geralmente STARTTLS) e as credenciais de relay, então use o Test — uma falha ali indica que o caminho SMTP está incorreto antes que qualquer alerta real dependa dele. Atribua um endereço ao usuário Admin em Users → Users → Admin → Media → Add e escolha quais severidades devem notificar. Em seguida, configure em Alerts → Actions → Trigger actions → Create action: adicione uma condição como Trigger severity >= Warning e, em Operations, envie para o Admin via Email. Salve e habilite. Prefere chat? O Zabbix 7.0 possui media types de webhook para Slack, Discord e Telegram — configure um exatamente como o Email e atribua-o a um usuário.

Monitorando um segundo servidor com o agent

Para monitorar outro servidor, adicione também o repositório do Zabbix nele — o Ubuntu 24.04 não possui pacotes do Zabbix nativos — e instale apenas o agent:

wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu24.04_all.deb
sudo dpkg -i zabbix-release_latest_7.0+ubuntu24.04_all.deb
sudo apt update
sudo apt install -y zabbix-agent2

Edite o arquivo /etc/zabbix/zabbix_agent2.conf, defina Server com o IP do servidor Zabbix (para polling passivo) e, para checks ativos, defina ServerActive junto a um Hostname único que corresponda ao host criado na interface web:

Server=10.0.0.10
ServerActive=10.0.0.10
Hostname=web-01

Execute sudo systemctl enable --now zabbix-agent2 e libere a porta TCP 10050 no servidor Zabbix para esta máquina. Na interface web, crie um host com a interface Agent apontando para o IP desta máquina, vincule o template de Linux e o reporte ocorrerá em menos de um minuto.

Modos de falha e as strings que você verá

O frontend exibe Error connecting to database ou um erro de banco de dados. No passo de DB do wizard, Access denied for user 'zabbix'@'localhost' (using password: YES) significa que a senha não coincide com o Passo 3 ou o GRANT nunca foi executado. Se o banco de dados conecta, mas o frontend reporta The frontend does not match Zabbix database ou Table 'zabbix.users' doesn't exist, a importação do schema no Passo 4 foi pulada ou falhou — execute-a novamente em um banco de dados recém-criado.

Banner laranja: Zabbix server is not running: the information displayed may not be current. O frontend está ativo, mas não consegue alcançar um servidor em execução. Três causas possíveis, sendo a primeira a mais provável. O serviço está parado — verifique systemctl status zabbix-server e inicie-o. O serviço está rodando, mas não alcança o banco de dados — o log mostra [Z3001] connection to database 'zabbix' failed: [1045] Access denied, o que significa uma DBPassword incorreta ou em branco. Ou o frontend aponta para o servidor errado, armazenado como host localhost porta 10051 em /etc/zabbix/web/zabbix.conf.php. No Ubuntu não há SELinux por padrão, portanto a causa de socket do SELinux citada em guias de RHEL não se aplica; aqui o problema é quase sempre a senha do banco de dados ou um serviço parado.

O host exibe um rótulo vermelho ZBX; erro de item Get value from agent failed: cannot connect to [[127.0.0.1]:10050]: [111] Connection refused. O agente não está rodando ou não está escutando. Verifique systemctl status zabbix-agent2 e confirme ListenPort=10050. Um timeout em vez de "connection refused" significa que um firewall está descartando a porta 10050. O erro Received empty response from Zabbix Agent. Assuming that agent dropped connection because of access permissions. relacionado significa que o agente é alcançável, mas a linha Server= não lista o IP do servidor Zabbix — adicione-o e reinicie o agente.

Página de boas-vindas padrão do nginx, ou 502 Bad Gateway. A página de boas-vindas significa que o site padrão ainda está habilitado ou o bloco do Zabbix não está linkado — remova /etc/nginx/sites-enabled/default e confirme se /etc/nginx/conf.d/zabbix.conf existe, conforme o Passo 6. Um 502 significa que o nginx alcançou o PHP, mas o PHP-FPM está parado ou escutando em um socket diferente — inicie o php8.3-fpm e verifique se o socket fastcgi_pass no bloco do Zabbix coincide com o pool em execução.

Backups, upgrades, and TLS

O banco de dados contém todo o histórico; faça o backup com mysqldump de forma programada e mantenha o dump fora do servidor:

mysqldump --single-transaction zabbix | gzip > zabbix-$(date +%F).sql.gz

Os arquivos de configuração /etc/zabbix são pequenos e também vale a pena salvá-los, mas eles podem ser recriados; os dados não. O processo de restauração é o inverso — crie o banco de dados, importe o dump e aponte a configuração para ele.

Atualizações dentro da linha 7.0 são execuções comuns de apt update && apt upgrade; o servidor aplica as migrações de schema no próximo início, portanto, atualize os pacotes e reinicie o zabbix-server. Uma mudança para uma nova linha major é um procedimento deliberado — leia as notas de atualização, faça o dump do banco de dados primeiro e esteja ciente de que a mudança de schema é irreversível. Essa irreversibilidade é o motivo exato para você utilizar uma linha LTS e permanecer nela.

Não deixe o frontend em HTTP puro. Assim que o DNS apontar para o servidor, instale um certificado usando Certbot e Let's Encrypt no nginx para Ubuntu 24.04, que reescreve o server block para escutar na porta 443 e redirecionar a 80. Enquanto você reforça a segurança de um servidor que faz login para monitorar todos os outros servidores que você opera, proteja também o SSH dele com fail2ban banindo tentativas de brute-force no SSH. Um login de monitoramento não deve trafegar em texto claro, e sua porta de entrada não deve ficar aberta para tentativas de adivinhação de senha.

FAQ

Eu preciso do Zabbix agent ou posso monitorar sem ele?

Ambos funcionam. O agent (agent2) fornece métricas detalhadas por host — CPU, memória, discos, processos, serviços, arquivos de log — e é a escolha padrão para servidores sob seu controle. O monitoramento agentless atende dispositivos onde não é possível instalar software: SNMP para switches e impressoras, ICMP ping para conectividade, verificações HTTP para endpoints e IPMI para integridade do hardware. A maioria das implementações reais utiliza ambos.

Por que o frontend diz que o Zabbix server não está rodando?

O frontend está funcionando, mas não consegue alcançar um processo zabbix-server ativo. Geralmente o servidor iniciou, mas falhou ao fazer login porque o DBPassword em zabbix_server.conf está incorreto ou vazio, e o processo encerrou. Execute systemctl status zabbix-server e leia /var/log/zabbix/zabbix_server.log; uma linha [Z3001] connection to database ... failed confirmará o erro. Corrija a senha e reinicie; o aviso desaparecerá em um minuto.

Eu tenho que usar MySQL ou posso usar PostgreSQL?

Ambos são totalmente suportados: zabbix-server-mysql com MariaDB ou MySQL, como neste guia, ou zabbix-server-pgsql com PostgreSQL. Para instalações pequenas, a escolha é irrelevante. Para instalações grandes, o PostgreSQL com a extensão TimescaleDB particiona as tabelas de histórico e reduz o custo de manutenção, por isso grandes ambientes preferem esta opção. Escolha um e mantenha-o — migrar posteriormente exige um export e import completo, não apenas uma troca de configuração.

Quanta RAM um servidor Zabbix all-in-one precisa?

Para uma única máquina monitorando poucos hosts, 2 GB é o limite mínimo realista e 4 GB é confortável após algumas dezenas de hosts; a memória é usada principalmente pelo cache do banco de dados e pelos pollers do servidor. Um VPS de 1 GB funciona, mas causará falta de memória no banco de dados conforme o histórico cresce. Acima de cem hosts, separe o banco de dados em um servidor próprio e ajuste o buffer pool em vez de adicionar mais RAM em uma única máquina.

O Zabbix é exagero para apenas alguns servidores?

Pode ser. Se você precisa apenas de "está online?" e uma página para compartilhar, uma ferramenta mais leve como Uptime Kuma para monitoramento de uptime e status é mais rápida de configurar e mais fácil de ler rapidamente. Escolha o Zabbix quando precisar de limites por métrica, gráficos históricos, templates de hosts e regras de escalonamento — recursos que um pinger simples não consegue fornecer para um parque de máquinas.