OpenVZ Monitoramento · 6 min read · Oct 18, 2025

Como monitorar limites do OpenVZ com vzwatchd no Debian e Ubuntu

Vzwatchd é um daemon de monitoramento do OpenVZ que informa o administrador do servidor por e-mail quando um limite do contêiner é atingido. OpenVZ é uma tecnologia de virtualização do Kernel Linux que é frequentemente usada por serviços de hospedagem na web, é o núcleo gratuito do aplicativo de virtualização comercial virtuozzo. OpenVZ é uma virtualização leve que tem menos sobrecarga do que KVM ou XEN, é mais como uma prisão Linux LXC, mas com opções avançadas de limite para definir quantos recursos uma máquina virtual pode usar e tem suporte para cota de sistema de arquivos.

Este tutorial explica a instalação e configuração do daemon vzwatchd no Debian e Ubuntu.

1 Meu servidor virtual usa OpenVZ

Você alugou um servidor virtual de uma empresa de hospedagem sem saber qual tecnologia de virtualização ele usa? Execute o seguinte comando para testar se ele usa OpenVZ:

cat /proc/user_beancounters

Se a saída for semelhante à abaixo, então seu servidor usa OpenVZ ou uma tecnologia compatível e você pode usar vzwatchd para monitorar o vserver.

root@www:/# cat /proc/user_beancounters  
Version: 2.5  
 uid resource held maxheld barrier limit failcnt  
 101: kmemsize 190939926 274194432 9223372036854775807 9223372036854775807 0  
 lockedpages 0 3211 1048576 1048576 0  
 privvmpages 749006 781311 9223372036854775807 9223372036854775807 0  
 shmpages 22506 30698 9223372036854775807 9223372036854775807 0  
 dummy 0 0 9223372036854775807 9223372036854775807 0  
 numproc 237 312 9223372036854775807 9223372036854775807 0  
 physpages 486543 804959 0 1048576 0  
 vmguarpages 0 0 3145728 9223372036854775807 0  
 oomguarpages 233498 242378 1048576 9223372036854775807 0  
 numtcpsock 111 298 9223372036854775807 9223372036854775807 0  
 numflock 253 294 9223372036854775807 9223372036854775807 0  
 numpty 1 12 9223372036854775807 9223372036854775807 0  
 numsiginfo 0 33 9223372036854775807 9223372036854775807 0  
 tcpsndbuf 7083944 11209000 9223372036854775807 9223372036854775807 0  
 tcprcvbuf 3300832 10792248 9223372036854775807 9223372036854775807 0  
 othersockbuf 261256 1008400 9223372036854775807 9223372036854775807 0  
 dgramrcvbuf 0 5152 9223372036854775807 9223372036854775807 0  
 numothersock 166 526 1024 1024 0  
 dcachesize 168291899 247843839 9223372036854775807 9223372036854775807 0  
 numfile 3098 5205 9223372036854775807 9223372036854775807 0  
 dummy 0 0 9223372036854775807 9223372036854775807 0  
 dummy 0 0 9223372036854775807 9223372036854775807 0  
 dummy 0 0 9223372036854775807 9223372036854775807 0  
 numiptent 28 35 9223372036854775807 9223372036854775807 0

A saída mostra os limites da máquina virtual, cada linha descreve um limite e a coluna que é monitorada pelo vzwatchd é a última coluna que conta quantas vezes um limite foi atingido.

2 Instalar vzwatchd

Vzwatchd é escrito em Perl, é baixado e instalado do arquivo CPAN do Perl com o comando CPAN.

Instalando os pré-requisitos

Eu farei os seguintes passos como usuário root, execute sudo -s no Ubuntu para se tornar root:

sudo -s

Primeiro, instalarei a ferramenta make e o editor nano, make é usado pelo CPAN para construir o vzwatchd e usarei o nano mais tarde para editar o arquivo de configuração:

apt-get install make nano

Em seguida, instalarei o vzwatchd do CPAN com este comando:

cpan -i App::OpenVZ::BCWatch

Se esta for a primeira vez que você usa o CPAN em um servidor, o script fará algumas perguntas sobre a configuração básica do CPAN:

Would you like to configure as much as possible automatically? [yes]
Would you like me to automatically choose some CPAN mirror sites for you? (This means connecting to the Internet) [yes]

Responda ambas as perguntas com “yes”.

O instalador agora fará o download, compilará e instalará muitos módulos Perl:

root@rz3:~# cpan -i App::OpenVZ::BCWatch  

CPAN.pm requires configuration, but most of it can be done automatically.  
If you answer 'no' below, you will enter an interactive dialog for each  
configuration option instead.  
  
Would you like to configure as much as possible automatically? [yes] yes  
  
Autoconfigured everything but 'urllist'.  
  
Now you need to choose your CPAN mirror sites. You can let me  
pick mirrors for you, you can select them from a list or you  
can enter them by hand.  
  
Would you like me to automatically choose some CPAN mirror  
sites for you? (This means connecting to the Internet) [yes] yes  
Trying to fetch a mirror list from the Internet  
Fetching with LWP:  
http://www.perl.org/CPAN/MIRRORED.BY  
  
Looking for CPAN mirrors near you (please be patient)  
.............................. done!  
  
New urllist  
 http://www.planet-elektronik.de/CPAN/  
 http://cpan.noris.de/  
 http://cpan.lnx.sk/  
  
Autoconfiguration complete.  
  
commit: wrote '/root/.cpan/CPAN/MyConfig.pm'  
  
You can re-run configuration any time with 'o conf init' in the CPAN shell  
Fetching with LWP:  
http://www.planet-elektronik.de/CPAN/authors/01mailrc.txt.gz  
Going to read '/root/.cpan/sources/authors/01mailrc.txt.gz'  
............................................................................DONE  
Fetching with LWP:  
http://www.planet-elektronik.de/CPAN/modules/02packages.details.txt.gz  
Going to read '/root/.cpan/sources/modules/02packages.details.txt.gz'  
 Database was generated on Mon, 13 Apr 2015 23:29:02 GMT  
..............  
 New CPAN.pm version (v2.10) available.  
 [Currently running version is v1.960001]  
 You might want to try  
 install CPAN  
 reload cpan  
 to both upgrade CPAN.pm and run the new version without leaving  
the current session.  
   
 [... snip ...]  
   
 CPAN.pm: Going to build G/GW/GWOLF/Config-File-1.50.tar.gz  
  
Building Config-File  
 GWOLF/Config-File-1.50.tar.gz  
 ./Build -- OK  
Running Build test  
t/pod.t ........... Subroutine main::all_pod_files_ok redefined at /usr/local/share/perl/5.14.2/Test/Pod.pm line 90.  
t/pod.t ........... ok  
t/pod_coverage.t .. ok  
t/test.t .......... 1/11 Invalid characters in key to'be^ignored at line 10 - Ignoring at /root/.cpan/build/Config-File-1.50-NjLxod/blib/lib/Config/File.pm line 41,  line 10.  
Line format invalid at line 11: 'malformed line that should be also dropped (no equal sign)' at /root/.cpan/build/Config-File-1.50-NjLxod/blib/lib/Config/File.pm line 35,  line 11.  
t/test.t .......... ok  
All tests successful.  
Files=3, Tests=13, 0 wallclock secs ( 0.03 usr 0.00 sys + 0.13 cusr 0.02 csys = 0.18 CPU)  
Result: PASS  
 GWOLF/Config-File-1.50.tar.gz  
 ./Build test -- OK  
Running Build install  
Building Config-File  
Installing /usr/local/share/perl/5.14.2/Config/File.pm  
Installing /usr/local/man/man3/Config::File.3pm  
 GWOLF/Config-File-1.50.tar.gz  
 ./Build install -- OK  

É importante que você veja a linha

./Build install -- OK

no final da saída da compilação. Se você receber um erro em vez disso, então execute o comando novamente. Eu tive que executar o comando duas vezes para compilar todos os módulos com sucesso.

Para verificar se a instalação foi bem-sucedida, execute o comando:

vzwatchd check

Isso verificará a instalação e criará um arquivo de configuração de exemplo.

root@server:~# vzwatchd check  
/etc/vzwatchd.conf does not exist, creating one with defaults.  
Edit /etc/vzwatchd.conf to suit your needs and then start /usr/local/bin/vzwatchd again.

3 Configurar e ativar vzwatchd

Agora eu vou editar o arquivo vzwatchd.conf e definir o endereço de e-mail para as mensagens de notificação.

nano /etc/vzwatchd.conf

O arquivo de configuração deve ficar assim após você editá-lo, apenas com seu próprio endereço de e-mail, é claro.

mail[from] = [email protected]  
mail[to] = [email protected]  
mail[subject] = vzwatchd on server.example.com: NOTICE  
sleep = 60  
verbose = 0  
monitor_fields = failcnt  
_active = 1

As mudanças são:

  • A linha “mail[from]” contém o endereço de origem dos e-mails de notificação.
  • A linha “mail[to]” contém o endereço de e-mail que deve receber as notificações.
  • O valor na linha “_active” deve ser alterado para 1 para ativar o vzwatchd.
  • Quando você executa vários servidores OpenVZ, pode ser útil alterar “mail[subject]” para conter o nome do servidor.

Configure o vzwatchd para iniciar automaticamente quando o servidor estiver inicializando:

vzwatchd install
root@server:~# vzwatchd install  
+ /usr/sbin/update-rc.d vzwatchd defaults  
update-rc.d: warning: /etc/init.d/vzwatchd missing LSB information  
update-rc.d: see   
Adding system startup for /etc/init.d/vzwatchd ...  
/etc/rc0.d/K20vzwatchd -> ../init.d/vzwatchd  
/etc/rc1.d/K20vzwatchd -> ../init.d/vzwatchd  
/etc/rc6.d/K20vzwatchd -> ../init.d/vzwatchd  
/etc/rc2.d/S20vzwatchd -> ../init.d/vzwatchd  
/etc/rc3.d/S20vzwatchd -> ../init.d/vzwatchd  
/etc/rc4.d/S20vzwatchd -> ../init.d/vzwatchd  
/etc/rc5.d/S20vzwatchd -> ../init.d/vzwatchd

E inicie o daemon de monitoramento vzwatchd:

vzwatchd start
root@server:~# vzwatchd start  
Starting /usr/local/bin/vzwatchd server

Agora você será notificado por e-mail quando seu servidor virtual OpenVZ atingir um dos limites do contêiner OpenVZ.

Links

  • OpenVZ
  • Vzwatchd
Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.