Monitoramento, Agendador e Firewall

O PrimeForge observa seus servidores continuamente: o agente Go instalado em cada máquina coleta métricas a cada 30 segundos e as envia ao painel pelo WebSocket. Com isso você acompanha CPU, memória, disco e rede em gráficos, agenda tarefas cron por servidor, gerencia o firewall UFW sem abrir uma sessão SSH, e conta com a auto-recuperação de serviços — se um serviço bare-metal cair, o PrimeForge tenta reiniciá-lo sozinho. Esta página cobre as sub-páginas Monitoramento e Agendador de um servidor, e a metade de firewall da página Rede.

Monitoramento

A sub-página Monitoramento de um servidor mostra o estado atual e o histórico de consumo de recursos. É onde você diagnostica lentidão, planeja capacidade e confirma que os serviços de infraestrutura estão saudáveis.

Cartões de estatística

No topo da página, cartões de estatística resumem os valores atuais mais importantes — uso de CPU (com o número de núcleos), memória usada versus total, disco usado versus total, e as taxas de rede de entrada e de saída em MB/s. Quando o agente reporta os contadores HTTP do nginx, entra também um cartão de requisições por segundo. Eles dão o "raio-x" imediato do servidor.

Acima dos cartões, um carimbo diz há quanto tempo foi a leitura, e uma faixa âmbar aparece quando os números não são mais ao vivo — agente em silêncio ou servidor em modo de manutenção. A página se relê a cada 30 segundos, só enquanto a aba está visível.

Cartões de estatística do monitoramento do servidor, com o carimbo de atualização

As métricas coletadas pelo agente incluem:

Métrica Descrição
Uso de CPU Percentual total de utilização do processador
Memória RAM usada versus total
Disco Espaço em disco usado versus total
Rede Banda de entrada e saída (RX/TX)
Disco I/O Taxa de leitura e escrita em disco
Sites Número de sites em execução no servidor
Uptime Há quanto tempo o servidor está no ar

Seletor de período e gráficos

Um seletor de período rotulado permite ver as métricas na última 1 hora, 6 horas, 24 horas ou 7 dias. Abaixo dele, os gráficos mostram a evolução ao longo do tempo, com um eixo de tempo de verdade:

  • CPU — utilização do processador
  • Memória — consumo de RAM
  • Rede — banda de entrada e saída
  • Disco I/O — throughput de leitura e escrita

Página de monitoramento com gráficos e tabelas de serviços

Tabela de recursos por site e serviços de infraestrutura

Mais abaixo, duas tabelas quebram o consumo por origem:

  • Recursos por site — o consumo de cada site (CPU e memória), lido do slice systemd/cgroup v2 de cada site, com links para o domínio e o código HTTP mais recente da sonda de saúde; a barra de memória é escalada pelo limite daquele site, e não pela RAM da máquina. Aparece só em servidores que hospedam sites. É aqui que você identifica qual site está pesando no servidor.
  • Serviços de infraestrutura — o estado dos serviços bare-metal (PostgreSQL, MySQL, Redis, MinIO, Reverb etc.) com nomes amigáveis, para você ver de relance se algum está fora do ar.

Tabela de serviços de infraestrutura no monitoramento do servidor

Auto-recuperação de serviços

Para servidores com serviços bare-metal (tipos All-in-One, Banco de dados, Serviços, Armazenamento S3 e Redis), o PrimeForge monitora a saúde de cada serviço e tenta consertá-lo automaticamente se ele cair — você não precisa ficar de plantão.

O ciclo de auto-recuperação funciona assim:

  1. O agente verifica o estado de cada serviço via systemctl is-active a cada 30 segundos.
  2. Se um serviço cai, o PrimeForge envia systemctl restart automaticamente e marca o serviço como Recuperando.
  3. Há um intervalo de 60 segundos entre tentativas de reinício, para evitar reinícios em rajada.
  4. Após 3 tentativas de reinício sem sucesso, o serviço é marcado como Falhou e um alerta crítico é criado.
  5. Quando o serviço volta a responder, as tentativas são zeradas e o alerta é resolvido automaticamente.

A saúde dos serviços aparece na visão geral do servidor e também nas páginas dos sites — quando um serviço do qual um site depende (banco, Redis, S3) está fora do ar, o site exibe uma faixa de aviso de degradação.

A auto-recuperação fica suspensa enquanto o servidor está em modo de manutenção. Se você mesmo parou um serviço para fazer manutenção planejada, entre em modo de manutenção (em Configurações do servidor) para que o PrimeForge não fique lutando com você, reiniciando o que você desligou de propósito e disparando alertas.

Agendador

Cada servidor pode ter tarefas agendadas (cron jobs) que rodam em intervalos definidos. A sub-página Agendador (grupo Cargas de trabalho, para Developer ou acima) oferece um CRUD completo dessas tarefas, sem que você precise editar o crontab manualmente — o Agent sincroniza tudo.

Página do agendador com tarefas cron por servidor

A tabela mostra, para cada tarefa, o nome, o comando, o site (quando a tarefa é de um site), a frequência, o interruptor Ativada, o estado de sincronização com o crontab, o resultado da última execução, a última e a próxima execução e, quando ligado, o estado do heartbeat. Cada linha traz Executar agora, Saída (a saída da última execução), Editar e Excluir (este último para Admin ou acima). O botão Reenviar crontab, no cabeçalho, reescreve o crontab do servidor com as tarefas atuais — útil se alguém mexeu no crontab à mão.

Quando um site Laravel tem o agendador ligado (página Serviços do site), a tarefa schedule:run dele aparece aqui como Instalada: o próprio painel a mantém, então ela não pode ser editada nem desligada nesta página.

Criar uma tarefa agendada

  1. Abra a página Agendador do servidor. Tarefas de um site específico também podem ser criadas na página Agendador daquele site, no grupo Processos (veja Daemons e Workers).
  2. Clique em Nova tarefa.
  3. Configure, em três seções:
Campo Descrição
Nome Um nome descritivo para identificar a tarefa
Comando O comando de shell a executar (por exemplo /usr/local/bin/limpar-tmp.sh, ou php artisan app:relatorio-diario quando a tarefa é de um site)
Usuário root ou primeforge — o usuário do sistema que executa o comando
Site (opcional) Quando definido, o comando roda como o usuário Linux do site, no diretório do site (/home/{usuário do site}/current)
Fuso horário Fuso IANA em que a frequência é interpretada (ex.: America/Sao_Paulo; padrão UTC)
Timeout (segundos) Tempo máximo de execução (padrão 3600)
Sem sobreposição Pula a execução se a anterior ainda estiver rodando
Frequência A cada minuto, 5, 15 ou 30 minutos, a cada hora, diariamente, semanalmente, mensalmente, ou Personalizada — que abre o campo Expressão Cron (ex.: 0 */6 * * *)
Ativada Liga/desliga sem precisar excluir a tarefa
Monitorar com heartbeat O painel passa a esperar um ping depois de cada execução e abre um incidente se ele não chegar (veja Configuração de Sites)

Modal Nova tarefa agendada

A expressão cron é validada no próprio formulário: o Agent aceita campos numéricos e as macros @daily/@hourly, mas não meses ou dias da semana por nome nem L/W/#. Depois de criada, a tarefa passa a ser executada pelo Agent no servidor e os resultados de execução são enviados de volta ao painel.

Rotinas do próprio painel

Além das tarefas que você cria, o PrimeForge roda rotinas de manutenção nos bastidores, a partir do painel — elas não aparecem no Agendador:

  • Reconciliação de saúde — verifica a saúde dos sites e reinicia as unidades systemd por site que travaram
  • Limpeza de backups — remove arquivos de backup que passaram da retenção
  • Verificação de versão do Agent — detecta Agents desatualizados
  • Reconciliação da malha WireGuard — refaz túneis entre servidores que ficaram para trás
  • Verificação de heartbeats — abre um incidente quando um heartbeat fica em silêncio além do prazo

Firewall

O firewall UFW do servidor é gerenciado através do agente — sem necessidade de uma sessão SSH — na metade de baixo da página Rede (grupo Rede e segurança), logo abaixo da malha WireGuard. As duas coisas eram páginas separadas e viraram uma só; os endereços antigos /connections e /firewall redirecionam para /network.

Seção de firewall da página Rede, com o status do UFW e a tabela de regras

O que a página oferece:

  • Status do Firewall — indica se o UFW está ativo, com as ações Ativar firewall / Desativar firewall. Desativar pede confirmação em vermelho: isso expõe todas as portas do servidor.
  • Tabela de regras — cada regra com seu número, porta/serviço-alvo, ação (permitir/negar) e origem.
  • Adicionar regra — porta (1–65535) ou nome de serviço, protocolo (tcp / udp / qualquer), ação, origem (any, um IP ou um intervalo CIDR) e um comentário. As entradas são estritamente validadas antes de chegarem ao servidor.
  • Excluir — apaga uma regra pelo número. Regras de sistema que mantêm a plataforma funcionando (SSH, HTTP, HTTPS, a malha WireGuard) são protegidas e não podem ser removidas pelo painel.

Permissões e auditoria

Visualizar o firewall é aberto a todos os membros da organização; adicionar, remover, ativar e desativar exigem o papel Admin ou superior. Toda alteração é registrada na auditoria. Se o agente do servidor estiver offline, a página mostra um aviso e as alterações ficam indisponíveis até ele reconectar — o painel prefere dizer que não sabe a mostrar um estado de firewall desatualizado como se fosse o atual.

Próximos passos