Olá!

Em ambientes Zimbra, especialmente após incidentes operacionais (reinicializações abruptas, falta de espaço em disco ou intervenções manuais), é relativamente comum encontrar inconsistências nos serviços auxiliares.

Recentemente, durante uma análise em produção, me deparei com o seguinte erro ao iniciar o zmstat:

zmstatctl start
Can't kill a non-numeric process ID at /opt/zimbra/bin/zmstatctl line 204.

Entendendo o problema

O zmstat é responsável pela coleta de métricas do sistema (CPU, memória, IO, processos, etc.), sendo utilizado internamente pelo Zimbra para monitoramento.

Esse erro ocorre quando o script tenta manipular um PID inválido, normalmente causado por:

  • Arquivos de PID corrompidos ou inconsistentes
  • Processos antigos ainda em execução
  • Permissões incorretas no diretório /opt/zimbra/zmstat
  • Execução de componentes com usuário incorreto (principalmente root)

Durante a análise, foi possível identificar um comportamento específico:

ps aux | grep -i zmstat

Parte dos processos estava sendo executada como zimbra, porém o coletor zmstat-fd estava sendo executado como root:

root      2820  ... sudo /opt/zimbra/libexec/zmstat-fd
root 2843 ... /usr/bin/perl -w /opt/zimbra/libexec/zmstat-fd

Além disso, ao tentar validar os arquivos de PID:

cat /opt/zimbra/zmstat/pid/*

foi apresentado erro de permissão:

Permission denied

Ou seja, o próprio usuário zimbra não conseguia acessar os arquivos de controle do serviço.

Causa

O problema está diretamente relacionado a:

  • Arquivos de PID com ownership incorreto
  • Processos antigos mantidos em execução
  • Inconsistência no controle de estado do zmstat

Esse cenário leva o zmstatctl a tentar finalizar processos utilizando PIDs inválidos ou inacessíveis, resultando no erro apresentado.

Solução

A correção consiste em limpar completamente o estado do zmstat e restabelecer as permissões corretas.

1. Finalizar processos antigos

Executar como root:

pkill -f /opt/zimbra/libexec/zmstat-
pkill -f zmstat-fd

Validar:

ps aux | grep -i zmstat

O esperado é não haver processos ativos (exceto o próprio grep).


2. Corrigir permissões

chown -R zimbra:zimbra /opt/zimbra/zmstat
chmod -R u+rwX /opt/zimbra/zmstat

3. Remover arquivos de PID

rm -f /opt/zimbra/zmstat/pid/*

4. Subir novamente o serviço

su - zimbra -c "zmstatctl start"

Validar:

zmstatctl status

Considerações finais

Esse tipo de problema não está relacionado a falha estrutural do Zimbra, mas sim a inconsistências de estado após eventos operacionais.

Em ambientes críticos, é importante observar:

  • Evitar interrupções abruptas do sistema
  • Garantir espaço em disco adequado
  • Evitar execução manual de componentes do Zimbra como root
  • Sempre utilizar os comandos oficiais (zmcontrol, zmstatctl, etc.)

Esse tipo de ajuste é simples, mas quando não identificado corretamente pode gerar ruído desnecessário em troubleshooting e impactar a visibilidade operacional do ambiente.

Deixe um comentário

Tendência