Поиск по сайту:

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


На этой странице

  1. 1 Использует ли мой виртуальный сервер OpenVZ?
  2. 2 Установите vzwatchd
    1. Установка необходимых компонентов

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

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

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

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

    cat /proc/user_beancounters

    Если вывод похож на приведенный ниже, ваш сервер использует OpenVZ или совместимую технологию, и вы можете использовать vzwatchd для мониторинга vserver.

    :/# 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]

    Ответьте на оба вопроса да \да\.

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

    :~# 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, <GEN0> 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, <GEN0> 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

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

    :~# 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] = 
    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
    :~# vzwatchd install
    + /usr/sbin/update-rc.d vzwatchd defaults
    update-rc.d: warning: /etc/init.d/vzwatchd missing LSB information
    update-rc.d: see <http://wiki.debian.org/LSBInitScripts>
    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
    :~# vzwatchd start
    Starting /usr/local/bin/vzwatchd server

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

    Ссылки

    • ОпенВЗ
    • Vzwatchd