Мониторинг 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 installroot@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 startroot@server:~# vzwatchd start
Starting /usr/local/bin/vzwatchd serverТеперь вы будете получать уведомления по электронной почте, когда ваш виртуальный сервер OpenVZ достигнет одного из лимитов контейнера OpenVZ.
Ссылки
- OpenVZ
- Vzwatchd
Get new posts in your inbox
No spam. Unsubscribe anytime.