OpenVZ Monitoring · 6 min read · Oct 18, 2025

Cómo monitorear los límites de OpenVZ con vzwatchd en Debian y Ubuntu

Vzwatchd es un demonio de monitoreo de OpenVZ que informa al administrador del servidor por correo electrónico cuando se alcanza un límite del contenedor. OpenVZ es una tecnología de virtualización del núcleo de Linux que a menudo es utilizada por servicios de alojamiento web, es el núcleo gratuito de la aplicación comercial de virtualización virtuozzo. OpenVZ es una virtualización ligera que tiene menos sobrecarga que KVM o XEN, es más como una cárcel de Linux LXC pero con opciones avanzadas de límite para definir cuántos recursos puede usar una máquina virtual y tiene soporte para cuotas de sistema de archivos.

Este tutorial explica la instalación y configuración del demonio vzwatchd en Debian y Ubuntu.

1 ¿Mi servidor virtual usa OpenVZ?

¿Has alquilado un servidor virtual de una empresa de alojamiento sin saber qué tecnología de virtualización utiliza? Ejecuta el siguiente comando para probar si utiliza OpenVZ:

cat /proc/user_beancounters

Si la salida es similar a la de abajo, entonces tu servidor utiliza OpenVZ o una tecnología compatible y puedes usar vzwatchd para monitorear el 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

La salida muestra los límites de la máquina virtual, cada línea describe un límite y la columna que es monitoreada por vzwatchd es la última columna que cuenta cuántas veces se ha alcanzado un límite.

2 Instalar vzwatchd

Vzwatchd está escrito en Perl, se descarga e instala desde el archivo CPAN de Perl con el comando CPAN.

Instalando los requisitos previos

Realizaré los siguientes pasos como usuario root, ejecuta sudo -s en Ubuntu para convertirte en root:

sudo -s

Primero instalaré la herramienta make y el editor nano, make es utilizado por CPAN para construir vzwatchd y usaré nano más tarde para editar el archivo de configuración:

apt-get install make nano

A continuación, instalaré vzwatchd desde CPAN con este comando:

cpan -i App::OpenVZ::BCWatch

Si esta es la primera vez que usas CPAN en un servidor, el script te hará algunas preguntas sobre la configuración básica de CPAN:

¿Te gustaría configurar tanto como sea posible automáticamente? [yes]
¿Te gustaría que eligiera automáticamente algunos sitios espejo de CPAN para ti? (Esto significa conectarse a Internet) [yes]

Responde ambas preguntas con “yes”.

El instalador ahora descargará, compilará e instalará muchos módulos de Perl:

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

CPAN.pm requiere configuración, pero la mayor parte se puede hacer automáticamente.  
Si respondes 'no' a continuación, entrarás en un diálogo interactivo para cada  
opción de configuración en su lugar.  
  
¿Te gustaría configurar tanto como sea posible automáticamente? [yes] yes  
  
Autoconfigurado todo menos 'urllist'.  
  
Ahora necesitas elegir tus sitios espejo de CPAN. Puedes dejarme  
pick mirrors for you, puedes seleccionarlos de una lista o puedes  
ingresarlos a mano.  
  
¿Te gustaría que eligiera automáticamente algunos sitios espejo de CPAN  
para ti? (Esto significa conectarse a Internet) [yes] yes  
Intentando obtener una lista de espejos de Internet  
Obteniendo con LWP:  
http://www.perl.org/CPAN/MIRRORED.BY  
  
Buscando espejos de CPAN cerca de ti (por favor ten paciencia)  
.............................. ¡hecho!  
  
Nueva urllist  
 http://www.planet-elektronik.de/CPAN/  
 http://cpan.noris.de/  
 http://cpan.lnx.sk/  
  
Autoconfiguración completa.  
  
commit: escribió '/root/.cpan/CPAN/MyConfig.pm'  
  
Puedes volver a ejecutar la configuración en cualquier momento con 'o conf init' en el shell de CPAN  
Obteniendo con LWP:  
http://www.planet-elektronik.de/CPAN/authors/01mailrc.txt.gz  
Leyendo '/root/.cpan/sources/authors/01mailrc.txt.gz'  
............................................................................¡HECHO!  
Obteniendo con LWP:  
http://www.planet-elektronik.de/CPAN/modules/02packages.details.txt.gz  
Leyendo '/root/.cpan/sources/modules/02packages.details.txt.gz'  
 La base de datos fue generada el Lun, 13 Abr 2015 23:29:02 GMT  
..............  
 Nueva versión de CPAN.pm (v2.10) disponible.  
 [La versión actualmente en ejecución es v1.960001]  
 Puede que quieras intentar  
 install CPAN  
 reload cpan  
 para actualizar tanto CPAN.pm como ejecutar la nueva versión sin salir  
de la sesión actual.  
   
 [... snip ...]  
   
 CPAN.pm: Va a construir G/GW/GWOLF/Config-File-1.50.tar.gz  
  
Construyendo Config-File  
 GWOLF/Config-File-1.50.tar.gz  
 ./Build -- OK  
Ejecutando prueba de construcción  
t/pod.t ........... Subroutine main::all_pod_files_ok redefinido en /usr/local/share/perl/5.14.2/Test/Pod.pm línea 90.  
t/pod.t ........... ok  
t/pod_coverage.t .. ok  
t/test.t .......... 1/11 Caracteres inválidos en la clave 'be^ignored en la línea 10 - Ignorando en /root/.cpan/build/Config-File-1.50-NjLxod/blib/lib/Config/File.pm línea 41,  línea 10.  
Formato de línea inválido en la línea 11: 'línea malformada que también debería ser eliminada (sin signo igual)' en /root/.cpan/build/Config-File-1.50-NjLxod/blib/lib/Config/File.pm línea 35,  línea 11.  
t/test.t .......... ok  
Todas las pruebas exitosas.  
Archivos=3, Pruebas=13, 0 segundos de reloj ( 0.03 usr 0.00 sys + 0.13 cusr 0.02 csys = 0.18 CPU)  
Resultado: PASS  
 GWOLF/Config-File-1.50.tar.gz  
 ./Build test -- OK  
Ejecutando instalación de Build  
Construyendo Config-File  
Instalando /usr/local/share/perl/5.14.2/Config/File.pm  
Instalando /usr/local/man/man3/Config::File.3pm  
 GWOLF/Config-File-1.50.tar.gz  
 ./Build install -- OK  
Ejecutando Build para S/SC/SCHUBIGER/App-OpenVZ-BCWatch-0.04.tar.gz  
 Ya ha sido descomprimido en el directorio /root/.cpan/build/App-OpenVZ-BCWatch-0.04-4Al97O  
  
 CPAN.pm: Va a construir S/SC/SCHUBIGER/App-OpenVZ-BCWatch-0.04.tar.gz  
  
Construyendo App-OpenVZ-BCWatch  
 SCHUBIGER/App-OpenVZ-BCWatch-0.04.tar.gz  
 ./Build -- OK  
Ejecutando prueba de construcción  
t/00-load.t ....... ok  
t/basic.t ......... ok  
t/pod-coverage.t .. ok  
t/pod.t ........... ok  
Todas las pruebas exitosas.  
Archivos=4, Pruebas=6, 0 segundos de reloj ( 0.04 usr 0.01 sys + 0.27 cusr 0.04 csys = 0.36 CPU)  
Resultado: PASS  
 SCHUBIGER/App-OpenVZ-BCWatch-0.04.tar.gz  
 ./Build test -- OK  
Ejecutando instalación de Build  
Construyendo App-OpenVZ-BCWatch  
Instalando /usr/local/man/man1/vzwatchd.1p  
Instalando /usr/local/share/perl/5.14.2/App/OpenVZ/BCWatch.pm  
Instalando /usr/local/man/man3/App::OpenVZ::BCWatch.3pm  
Instalando /usr/local/bin/vzwatchd  
 SCHUBIGER/App-OpenVZ-BCWatch-0.04.tar.gz  
 ./Build install -- OK

Es importante que veas la línea

./Build install -- OK

al final de la salida de compilación. Si obtienes un error en su lugar, vuelve a ejecutar el comando. Tuve que ejecutar el comando dos veces para compilar todos los módulos con éxito.

Para verificar si la instalación fue exitosa, ejecuta el comando:

vzwatchd check

Esto verificará la instalación y creará un archivo de configuración de ejemplo.

root@server:~# vzwatchd check  
/etc/vzwatchd.conf no existe, creando uno con valores predeterminados.  
Edita /etc/vzwatchd.conf para adaptarlo a tus necesidades y luego inicia /usr/local/bin/vzwatchd nuevamente.

3 Configurar y activar vzwatchd

Ahora editaré el archivo vzwatchd.conf y estableceré la dirección de correo electrónico para los mensajes de notificación.

nano /etc/vzwatchd.conf

El archivo de configuración debería verse así después de que lo edites, solo con tu propia dirección de correo electrónico, por supuesto.

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

Los cambios son:

  • La línea “mail[from]” contiene la dirección de origen de los correos electrónicos de notificación.
  • La línea “mail[to]” contiene la dirección de correo electrónico que recibirá las notificaciones.
  • El valor en la línea “_active” debe cambiarse a 1 para activar vzwatchd.
  • Cuando ejecutes múltiples servidores OpenVZ, puede ser útil cambiar “mail[subject]” para que contenga el nombre del servidor.

Configura vzwatchd para que se inicie automáticamente cuando el servidor arranque:

vzwatchd install
root@server:~# vzwatchd install  
+ /usr/sbin/update-rc.d vzwatchd defaults  
update-rc.d: advertencia: /etc/init.d/vzwatchd falta información LSB  
update-rc.d: ver   
Agregando inicio del sistema para /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

Y comienza el demonio de monitoreo vzwatchd:

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

Ahora recibirás notificaciones por correo electrónico cuando tu servidor virtual OpenVZ alcance uno de los límites del contenedor OpenVZ.

Enlaces

  • OpenVZ
  • Vzwatchd
Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.