Мониторинг OpenVZ · 5 min read · Oct 18, 2025

Как контролировать лимиты OpenVZ с помощью vzwatchd на Debian и Ubuntu

Vzwatchd — это демон мониторинга OpenVZ, который информирует администратора сервера по электронной почте, когда достигнут лимит контейнера. OpenVZ — это технология виртуализации ядра Linux, которая часто используется веб-хостингом, это бесплатное ядро коммерческого приложения виртуализации virtuozzo. OpenVZ — это легкая виртуализация, которая имеет меньшие накладные расходы, чем KVM или XEN, она больше похожа на тюрьму Linux LXC, но с расширенными параметрами лимитов для определения того, сколько ресурсов может использовать виртуальная машина, и поддерживает файловые квоты.

Этот учебник объясняет установку и настройку демона vzwatchd на Debian и Ubuntu.

1 Использует ли мой виртуальный сервер OpenVZ

Вы арендовали виртуальный сервер у хостинг-компании, не зная, какую технологию виртуализации он использует? Выполните следующую команду, чтобы проверить, использует ли он OpenVZ:

cat /proc/user_beancounters

Если вывод похож на приведенный ниже, значит, ваш сервер использует OpenVZ или совместимую технологию, и вы можете использовать vzwatchd для мониторинга 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

Вывод показывает лимиты виртуальной машины, каждая строка описывает один лимит, а последний столбец, который отслеживается vzwatchd, подсчитывает, как часто был достигнут лимит.

2 Установите vzwatchd

Vzwatchd написан на Perl, он загружается и устанавливается из архива Perl CPAN с помощью команды CPAN.

Установка предварительных требований

Я выполню следующие шаги от имени пользователя root, выполните sudo -s на Ubuntu, чтобы стать root:

sudo -s

Сначала я установлю инструмент make и редактор nano, make используется CPAN для сборки vzwatchd, а позже я буду использовать nano для редактирования конфигурационного файла:

apt-get install make nano

Затем я установлю vzwatchd из CPAN с помощью этой команды:

cpan -i App::OpenVZ::BCWatch

Если это первый раз, когда вы используете CPAN на сервере, скрипт задаст вам несколько вопросов о базовой конфигурации 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]

Ответьте на оба вопроса “yes”.

Установщик теперь загрузит, скомпилирует и установит много модулей Perl:

root@rz3:~# cpan -i App::OpenVZ::BCWatch  
  
CPAN.pm требует конфигурации, но большую часть можно сделать автоматически.  
Если вы ответите 'no' ниже, вы войдете в интерактивный диалог для каждого  
варианта конфигурации вместо этого.  
  
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  
Running Build for S/SC/SCHUBIGER/App-OpenVZ-BCWatch-0.04.tar.gz  
 Has already been unwrapped into directory /root/.cpan/build/App-OpenVZ-BCWatch-0.04-4Al97O  
  
 CPAN.pm: Going to build S/SC/SCHUBIGER/App-OpenVZ-BCWatch-0.04.tar.gz  
  
Building App-OpenVZ-BCWatch  
 SCHUBIGER/App-OpenVZ-BCWatch-0.04.tar.gz  
 ./Build -- OK  
Running Build test  
t/00-load.t ....... ok  
t/basic.t ......... ok  
t/pod-coverage.t .. ok  
t/pod.t ........... ok  
All tests successful.  
Files=4, Tests=6, 0 wallclock secs ( 0.04 usr 0.01 sys + 0.27 cusr 0.04 csys = 0.36 CPU)  
Result: PASS  
 SCHUBIGER/App-OpenVZ-BCWatch-0.04.tar.gz  
 ./Build test -- OK  
Running Build install  
Building App-OpenVZ-BCWatch  
Installing /usr/local/man/man1/vzwatchd.1p  
Installing /usr/local/share/perl/5.14.2/App/OpenVZ/BCWatch.pm  
Installing /usr/local/man/man3/App::OpenVZ::BCWatch.3pm  
Installing /usr/local/bin/vzwatchd  
 SCHUBIGER/App-OpenVZ-BCWatch-0.04.tar.gz  
 ./Build install -- OK

Важно, чтобы вы увидели строку

./Build install -- OK

в конце вывода компиляции. Если вы получите ошибку вместо этого, повторите команду. Мне пришлось запустить команду дважды, чтобы успешно скомпилировать все модули.

Чтобы проверить, была ли установка успешной, выполните команду:

vzwatchd check

Это проверит установку и создаст пример конфигурационного файла.

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 Настройка и активация vzwatchd

Теперь я отредактирую файл vzwatchd.conf и установлю адрес электронной почты для уведомлений.

nano /etc/vzwatchd.conf

Файл конфигурации должен выглядеть так после редактирования, просто с вашим собственным адресом электронной почты, конечно.

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

Изменения следующие:

  • Строка “mail[from]” содержит адрес отправителя уведомлений по электронной почте.
  • Строка “mail[to]” содержит адрес электронной почты, который должен получать уведомления.
  • Значение в строке “_active” должно быть изменено на 1, чтобы активировать vzwatchd.
  • Если вы запускаете несколько серверов OpenVZ, может быть удобно изменить “mail[subject]”, чтобы он содержал имя сервера.

Настройте vzwatchd для автоматического запуска при загрузке сервера:

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

И запустите демон мониторинга vzwatchd:

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

Теперь вы будете получать уведомления по электронной почте, когда ваш виртуальный сервер OpenVZ достигнет одного из лимитов контейнера OpenVZ.

Ссылки

  • OpenVZ
  • Vzwatchd
Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.