SSD Nodes Learn Hosting plans →
Guias Matt ConnorPor Matt Connor · Atualizado 2026-08-02

Como instalar o Zabbix 7.0 no Ubuntu 24.04

Instale o Zabbix 7.0 LTS no Ubuntu 24.04: configure o repositorio, importe o schema MariaDB, ajuste o nginx e corrija erros do frontend e do agent2.

O que você vai configurar

Um único VPS Ubuntu 24.04 executando toda a stack Zabbix 7.0 LTS: o daemon zabbix-server que consulta e gera alertas, um banco de dados MariaDB/MySQL que armazena todas as métricas, um frontend PHP servido pelo nginx e o zabbix-agent2 coletando métricas do próprio servidor. Depois que tudo estiver funcionando, você aponta o Zabbix para um segundo servidor, associa um template e recebe um e-mail assim que um disco ficar cheio ou um serviço parar.

O Zabbix é mais pesado que uma ferramenta de página de status: ele é um sistema de séries temporais em tempo real, com templates, triggers, escalonamento e retenção de histórico. Quase todos os problemas ocorrem em três etapas que as pessoas ignoram: importar o schema do banco de dados, definir a senha do banco que o servidor realmente lê e remover os comentários de duas linhas na configuração do nginx. Faça isso corretamente e o restante será um assistente. Se você quer apenas verificações de disponibilidade e uma página de status compartilhável, um monitor de status leve, o Uptime Kuma faz isso em um único container; o Zabbix compensa o custo quando você precisa de limites por métrica e escalonamento em muitos hosts.

Use a linha 7.0 LTS: o server, o frontend, o agent2 e o schema têm versões compatíveis, e recebem correções de segurança por anos. Antes de copiar o nome do arquivo do repositório abaixo, consulte rapidamente a página oficial de download do Zabbix. O pacote de release latest sempre aponta para a versão pontual 7.0 mais recente, mas, se preferir fixar uma compilação 7.0-N exata, a página também lista esse nome de arquivo. Todos os outros comandos deste tutorial permanecem estáveis em toda a linha 7.0.

Dimensionamento, portas e pré-requisitos

Considere uma VPS KVM Ubuntu 24.04 recém-instalada, com root ou sudo. Seja realista quanto aos recursos: 2 GB de RAM e dois vCPUs são o mínimo prático para executar server, database, nginx e PHP no mesmo host e monitorar alguns hosts. Um host com 1 GB inicia, mas deixa o database sem recursos à medida que o histórico cresce; planeje 4 GB para mais de algumas dezenas de hosts e, acima de cem hosts, mova o database para um servidor próprio. O uso de disco cresce conforme a quantidade de itens coletados e o tempo de retenção do histórico; reserve alguns gigabytes inicialmente. O housekeeper remove os dados antigos de acordo com 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 porta TCP 10051 para receber dados enviados por active agents, e cada agent escuta na porta TCP 10050 para que o server faça polling. Abra somente as portas que você expõe se houver um firewall na frente. Vale a pena ter um registro DNS A para o frontend, porque você precisará de um certificado real nele. Um servidor Zabbix monitora todos os outros serviços executados por você; portanto, ele faz parte de uma stack mais ampla de self-hosting que vale a pena executar em 2026, em vez de ser instalado como algo secundário.

Etapa 1, adicione o repositório oficial do Zabbix 7.0

O pacote zabbix-release faz uma única coisa: instala a lista de fontes do apt e a chave de assinatura no sistema. Instale-o e 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 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 exata de zabbix-release exibida. Um apt update limpo mostra uma linha repo.zabbix.com e nenhum aviso de chave; The following signatures couldn't be verified because the public key is not available significa que o pacote da versão não instalou a chave. Execute novamente dpkg -i e atualize o índice.

Etapa 2, instale o servidor, o frontend e o agente

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

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

zabbix-server-mysql é o servidor compilado para MySQL/MariaDB; para PostgreSQL, instale zabbix-server-pgsql e ajuste as etapas de banco de dados abaixo. zabbix-sql-scripts contém o esquema que você importará em seguida. No 7.0, ele é um pacote separado, e esquecê-lo é exatamente o motivo de o caminho de importação não ser encontrado depois. Nenhum desses pacotes instala um mecanismo de banco de dados. Portanto, instale o MariaDB agora se o servidor ainda não tiver um.

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

Etapa 3, crie o banco de dados com o conjunto de caracteres correto

O Zabbix exige uma collation específica: o banco de dados deve ser utf8mb4 com utf8mb4_bin, ou a importação falha no meio do processo com erros de chave estrangeira. 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 funciona como uma medida de segurança para a importação. O schema do Zabbix cria funções armazenadas, e uma conta que não seja SUPER, como zabbix, não pode criá-las enquanto o registro binário estiver ativado. O MySQL 8 ativa o registro binário por padrão, e algumas compilações gerenciadas do MariaDB também o fazem (o MariaDB padrão não). Se você omitir essa flag em um servidor com o registro binário ativado, a importação será interrompida com ERROR 1419 (HY000): You do not have the SUPER privilege and binary logging is enabled. Defini-la como root resolve o problema; desative-a novamente após a importação. Anote a senha exatamente, pois a configuração do servidor precisa conter a mesma sequência de caracteres, byte a byte.

Etapa 4, importe o schema (a etapa que as pessoas ignoram)

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

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

Será solicitada a senha de zabbix. O processo leva de trinta a sessenta segundos em um VPS pequeno e não exibe nada quando é concluído com sucesso. Nesse caso, o silêncio é esperado. zcat: /usr/share/zabbix-sql-scripts/mysql/server.sql.gz: No such file or directory significa que o pacote zabbix-sql-scripts não está instalado (volte à Etapa 2). ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' significa que a senha ou a concessão de acesso da Etapa 3 está incorreta. Quando terminar, desative novamente o sinalizador de segurança:

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

Confirme o carregamento com sudo mysql -e "SELECT COUNT(*) FROM zabbix.users;". Um número, e não um erro doesn't exist, significa que o schema foi carregado.

Etapa 5, defina a senha do banco de dados em zabbix_server.conf

O servidor lê as credenciais do banco de dados de /etc/zabbix/zabbix_server.conf. Somente a senha precisa ser definida; DBName e DBUser já têm zabbix como valor padrão. Remova o comentário da linha # DBPassword= e defina o valor:

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

A senha deve ser exatamente igual, byte a byte, à usada na Etapa 3. Um DBPassword vazio ou incorreto é a principal causa da mensagem "O servidor Zabbix não está em execução" exibida mais adiante: o daemon é iniciado, falha ao fazer login e encerra. Nada na tela informa isso; somente o log mostra o problema.

Etapa 6, Aponte o nginx para o frontend

O pacote zabbix-nginx-conf instala um bloco de servidor em /etc/zabbix/nginx.conf e cria um link para ele no nginx a partir de /etc/nginx/conf.d/zabbix.conf, mas é distribuído com as linhas listen e server_name comentadas. Por isso, o nginx não serve 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 você ainda não tiver DNS. Há dois pontos importantes. O site de boas-vindas padrão do nginx no Ubuntu também escuta na porta 80 e é definido como o servidor padrão. Portanto, ele atende qualquer solicitação cujo nome não corresponda ao bloco. Remova-o, ou a página incorreta será carregada: sudo rm -f /etc/nginx/sites-enabled/default. Se /etc/nginx/conf.d/zabbix.conf estiver ausente por algum motivo, uma particularidade conhecida do 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

nginx -t deve exibir test is successful. Se, em vez disso, exibir nginx: [emerg] a duplicate default server for 0.0.0.0:80, o site padrão e o bloco do Zabbix estão declarando default_server. Remova o site padrão e teste novamente. Com mais frequência, o teste é aprovado exibindo apenas um aviso conflicting server name, mas o navegador ainda mostra a página de boas-vindas simples. Isso indica que o site padrão está vencendo para um nome sem correspondência. Removê-lo corrige o problema.

Etapa 7, inicie e habilite os serviços

Inicie o servidor, o agente, o PHP-FPM e o nginx, e habilite-os para que continuem ativos após uma reinicialização.

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 inclui o PHP 8.3, portanto o serviço FPM é php8.3-fpm; o pacote zabbix-nginx-conf executa o frontend usando esse mesmo processo principal. Confirme que o servidor foi iniciado e permaneceu 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 servidor iniciado e os 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 da Etapa 5 não corresponde. Corrija-o e reinicie. Uma linha [Z3005] query failed: [1146] Table 'zabbix.dbversion' doesn't exist indica que você não importou o esquema na Etapa 4, portanto o servidor não tem dados para ler.

Etapa 8, finalize o assistente de configuração web

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

  1. Boas-vindas, escolha um idioma.
  2. Verificação dos pré-requisitos, todas as linhas devem exibir OK por padrão; o pool /etc/zabbix/php-fpm.conf fornecido já aumenta os limites do PHP necessários para o Zabbix.
  3. Configuração da conexão com o banco de dados, tipo de banco MySQL, host localhost, porta 0 (que indica a porta ou o socket padrão), nome do banco zabbix, usuário zabbix e a senha da Etapa 3. Credenciais incorretas ou um schema ausente serão identificados nesta etapa.
  4. Configurações, mantenha o host do servidor Zabbix localhost, a porta 10051 e defina o nome da instalação.
  5. Resumo da pré-instalação e, em seguida, Instalar; o assistente gravará /etc/zabbix/web/zabbix.conf.php.
  6. Concluir, faça login como Admin (com A maiúsculo) usando a senha zabbix e altere essa senha imediatamente em Usuários.

Se o assistente informar Cannot create the configuration file, o usuário web não poderá gravar em /etc/zabbix/web/. Baixe o zabbix.conf.php oferecido, coloque-o nesse local manualmente com sudo e clique em Concluir.

Etapa 9, Adicione o host local e vincule um template

O Zabbix não monitora a si mesmo automaticamente. Acesse Coleta de dados → Hosts → Criar 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 a porta 10050. Em Templates, vincule Linux by Zabbix agent (a variante de consulta passiva; Linux by Zabbix agent active usa o envio pelo agent). Salve.

Em até um minuto, a linha do host exibirá um rótulo ZBX verde, e as métricas aparecerão em Monitoramento → Dados mais recentes. Um rótulo ZBX vermelho significa que o servidor não consegue alcançar o agent. Essa falha é explicada abaixo e não indica um erro nesta etapa.

Etapa 10, um acionador útil e um alerta por email

O template Linux by Zabbix agent já inclui acionadores para CPU alta, memória insuficiente e discos cheios. Assim, você recebe alertas assim que vincula o template. Para ver como um acionador é criado, adicione um próprio: abra o host, acesse Triggers → Create trigger, dê a ele o nome 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 usado que a descoberta de sistemas de arquivos do template cria para o sistema de arquivos raiz. O template Linux da versão 7.0 coleta vfs.fs.get uma vez e deriva itens dependentes para cada ponto de montagem. Por isso, o acionador é executado sem coleta de dados adicional. Salve-o.

Um acionador apenas altera a cor de uma linha no painel até que uma ação notifique alguém. Em Alerts → Media types → Email, defina o servidor SMTP, a porta, o endereço do remetente, a segurança da conexão (normalmente STARTTLS) e quaisquer credenciais do relay. Em seguida, use Test. Uma falha nesse teste significa que o caminho SMTP está incorreto, antes que qualquer alerta real dependa dele. Adicione um endereço ao usuário Admin em Users → Users → Admin → Media → Add e selecione quais severidades devem gerar notificações. Depois, configure isso em Alerts → Actions → Trigger actions → Create action: adicione uma condição como Trigger severity >= Warning e, em Operations, envie a notificação para Admin via Email. Salve e habilite a ação. Prefere um chat? O Zabbix 7.0 inclui tipos de mídia webhook para Slack, Discord e Telegram. Configure um deles exatamente como o Email e atribua-o a um usuário.

Monitorando um segundo servidor com o agente

Para monitorar outro servidor, adicione também o repositório do Zabbix nesse servidor. O Ubuntu 24.04 não fornece pacotes do Zabbix próprios. Em seguida, instale apenas o agente:

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 /etc/zabbix/zabbix_agent2.conf. Defina Server como o IP do servidor Zabbix para a coleta passiva. Para verificações ativas, defina também ServerActive e um Hostname exclusivo que corresponda ao host criado no frontend:

Server=10.0.0.10
ServerActive=10.0.0.10
Hostname=web-01

Execute sudo systemctl enable --now zabbix-agent2 e permita conexões TCP na porta 10050 do servidor Zabbix para este servidor. No frontend, crie um host cuja interface Agent aponte para o IP dessa máquina, vincule o template Linux e ele começará a enviar dados em até um minuto.

Modos de falha e as mensagens exibidas

O frontend exibe Error connecting to database ou um erro de banco de dados. Na etapa de banco de dados do assistente, Access denied for user 'zabbix'@'localhost' (using password: YES) significa que a senha não corresponde à informada na Etapa 3 ou que GRANT nunca foi executado. Se a conexão com o banco funcionar, mas o frontend informar The frontend does not match Zabbix database ou Table 'zabbix.users' doesn't exist, a importação do esquema na Etapa 4 foi ignorada 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á em execução, mas não consegue alcançar um servidor ativo. Há 3 causas, em ordem provável. O serviço está parado; verifique systemctl status zabbix-server e inicie-o. O serviço está em execução, mas não consegue acessar o banco de dados; o log exibe [Z3001] connection to database 'zabbix' failed: [1045] Access denied, indicando um DBPassword incorreto ou vazio. Ou o frontend aponta para o servidor errado, configurado como host localhost, porta 10051, em /etc/zabbix/web/zabbix.conf.php. No Ubuntu, o SELinux não vem habilitado por padrão. Portanto, a causa relacionada ao socket do SELinux citada nos guias para RHEL não se aplica. Neste caso, quase sempre o problema é a senha do banco de dados ou um serviço parado.

O host exibe o rótulo vermelho ZBX; erro do item: Get value from agent failed: cannot connect to [[127.0.0.1]:10050]: [111] Connection refused. O agent não está em execução 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 relacionado Received empty response from Zabbix Agent. Assuming that agent dropped connection because of access permissions. significa que o agent está acessível, mas a linha Server= não lista o IP do servidor Zabbix. Adicione o IP e reinicie o agent.

Página de boas-vindas padrão do nginx ou 502 Bad Gateway. A página de boas-vindas indica que o site padrão ainda está habilitado ou que o bloco do Zabbix não está vinculado. Remova /etc/nginx/sites-enabled/default e confirme que /etc/nginx/conf.d/zabbix.conf existe, conforme descrito na Etapa 6. Um 502 significa que o nginx alcançou o PHP, mas o PHP-FPM está parado ou escutando em outro socket. Inicie php8.3-fpm e verifique se o socket fastcgi_pass no bloco do Zabbix corresponde ao pool em execução.

Backups, upgrades, and TLS

O banco de dados contém todo o histórico. Faça backup dele com mysqldump conforme uma programação e mantenha o dump fora do servidor:

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

Os arquivos de configuração do /etc/zabbix também são pequenos e vale a pena salvá-los, mas podem ser recriados. Os dados, não. Para restaurar, faça o processo inverso: crie o banco de dados, importe o dump e aponte a configuração para ele.

As atualizações dentro da série 7.0 são execuções comuns de apt update && apt upgrade. O servidor aplica as migrações de esquema na próxima inicialização. Portanto, atualize os pacotes e reinicie o zabbix-server. Uma futura série principal exige uma migração planejada. Leia as notas de atualização, faça o dump do banco de dados antes e espere uma alteração de esquema unidirecional. Esse salto unidirecional é exatamente o motivo para fixar uma série LTS e permanecer nela.

Não deixe o frontend usando HTTP simples. Depois que o DNS apontar para o servidor, instale um certificado nele com Certbot e Let's Encrypt no nginx para Ubuntu 24.04. Isso reescreve o bloco do servidor para escutar na porta 443 e redirecionar a porta 80. Enquanto reforça a segurança de um servidor que faz login para monitorar todos os outros servidores que você executa, proteja também o SSH com fail2ban bloqueando tentativas de força bruta no SSH. Um login de monitoramento não deve trafegar em texto simples, e sua porta de entrada não deve ficar aberta para quem tenta adivinhar senhas.

FAQ

Preciso do agente Zabbix ou posso monitorar sem ele?

As duas opções funcionam. O agente (agent2) fornece métricas detalhadas por host, incluindo CPU, memória, discos, processos, serviços e arquivos de log. Ele é a escolha usual para servidores que você controla. O monitoramento sem agente atende a dispositivos nos quais você não pode instalar software: SNMP para switches e impressoras, ping ICMP para verificar acessibilidade, verificações HTTP para endpoints e IPMI para verificar a integridade do hardware. A maioria das implantações reais combina as duas opções.

Por que o frontend informa que o servidor Zabbix não está em execução?

O frontend funciona, mas não consegue alcançar um processo zabbix-server ativo. Normalmente, o servidor é iniciado, falha ao fazer login porque DBPassword em zabbix_server.conf está incorreto ou vazio e é encerrado imediatamente. Execute systemctl status zabbix-server e leia /var/log/zabbix/zabbix_server.log; uma linha [Z3001] connection to database ... failed confirma o problema. Corrija a senha e reinicie. O aviso desaparece em até um minuto.

Preciso usar MySQL ou posso usar PostgreSQL?

As duas opções têm suporte completo: zabbix-server-mysql com MariaDB ou MySQL, como neste guia, ou zabbix-server-pgsql com PostgreSQL. Em instalações pequenas, a escolha quase não importa. Em instalações grandes, o PostgreSQL com a extensão TimescaleDB particiona as tabelas de histórico e torna a manutenção muito mais barata. Por isso, sites grandes tendem a preferi-lo. Escolha uma opção e mantenha-a. Migrar depois exige uma exportação e uma importação completas, não apenas uma alteração na configuração.

Quanta RAM um servidor Zabbix completo precisa?

Para uma máquina que monitora alguns hosts, 2 GB é um mínimo realista e 4 GB oferece uma margem confortável para mais de algumas dezenas de hosts. A memória é usada principalmente pelo cache do banco de dados e pelos processos de coleta do servidor. Um VPS com 1 GB funciona, mas deixa o banco de dados sem memória à medida que o histórico cresce. Acima de cem hosts, coloque o banco de dados em um servidor próprio e ajuste o buffer pool, em vez de simplesmente adicionar mais RAM a uma única máquina.

O Zabbix é excessivo para alguns servidores?

Pode ser. Se você precisa apenas saber se um serviço está ativo e disponibilizar uma página para compartilhamento, uma ferramenta mais simples, como Uptime Kuma para monitoramento de disponibilidade e status, é mais rápida de instalar e mais fácil de consultar. Escolha o Zabbix quando precisar de limites por métrica, gráficos históricos, hosts baseados em templates e regras de escalonamento. Essas são funções que um verificador simples de disponibilidade não oferece em toda a sua infraestrutura.