OpenVZ監視 · 2 min read · Oct 18, 2025

DebianおよびUbuntuでvzwatchdを使用してOpenVZの制限を監視する方法

Vzwatchdは、コンテナの制限に達したときにサーバー管理者にメールで通知するOpenVZ監視デーモンです。OpenVZは、Webホスティングサービスでよく使用されるLinuxカーネルの仮想化技術であり、商業的なvirtuozzo仮想化アプリケーションの無料コアです。OpenVZは、KVMやXENよりもオーバーヘッドが少ない軽量の仮想化であり、Linux LXC監獄に似ていますが、仮想マシンが使用できるリソースの数を定義するための高度な制限オプションを備えており、ファイルシステムのクォータもサポートしています。

このチュートリアルでは、DebianおよびUbuntuにおけるvzwatchdデーモンのインストールと設定について説明します。

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

出力は仮想マシンの制限を示しており、各行は1つの制限を説明し、vzwatchdが監視する列は、制限に達した回数をカウントする最後の列です。

2 vzwatchdをインストールする

VzwatchdはPerlで書かれており、CPANコマンドを使用してPerl CPANアーカイブからダウンロードしてインストールします。

前提条件のインストール

私はrootユーザーとして次の手順を実行します。Ubuntuでは、rootになるためにsudo -sを実行します:

sudo -s

まず、makeツールとnanoエディタをインストールします。makeはCPANによってvzwatchdをビルドするために使用され、後でnanoを使用して設定ファイルを編集します:

apt-get install make nano

次に、次のコマンドを使用してCPANからvzwatchdをインストールします:

cpan -i App::OpenVZ::BCWatch

サーバーでCPANを初めて使用する場合、スクリプトは基本的なCPAN設定に関するいくつかの質問をします:

自動的にできるだけ多くの設定を行いますか? [yes]
自動的にいくつかのCPANミラーサイトを選択しますか?(これはインターネットに接続することを意味します) [yes]

両方の質問に「yes」と答えます。

インストーラーは、今、たくさんのPerlモジュールをダウンロード、コンパイル、インストールします:

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

CPAN.pmは設定を必要としますが、そのほとんどは自動的に行うことができます。  
以下で「no」と答えると、各設定オプションについてインタラクティブなダイアログに入ります。  

自動的にできるだけ多くの設定を行いますか? [yes] yes  

すべてを自動的に設定しましたが、「urllist」だけです。  

今、CPANミラーサイトを選択する必要があります。  
ミラーを自動的に選択させることも、リストから選択することも、手動で入力することもできます。  

自動的にいくつかのCPANミラーサイトを選択しますか?(これはインターネットに接続することを意味します) [yes] yes  
インターネットからミラーリストを取得しようとしています  
LWPを使用して取得中:  
http://www.perl.org/CPAN/MIRRORED.BY  

あなたの近くのCPANミラーを探しています(お待ちください)  
.............................. 完了!  

新しいurllist  
 http://www.planet-elektronik.de/CPAN/  
 http://cpan.noris.de/  
 http://cpan.lnx.sk/  

自動設定が完了しました。  

コミット: '/root/.cpan/CPAN/MyConfig.pm' に書き込みました  

CPANシェルで 'o conf init' を使用して、いつでも設定を再実行できます  
LWPを使用して取得中:  
http://www.planet-elektronik.de/CPAN/authors/01mailrc.txt.gz  
'/root/.cpan/sources/authors/01mailrc.txt.gz' を読み込みます  
............................................................................完了  
LWPを使用して取得中:  
http://www.planet-elektronik.de/CPAN/modules/02packages.details.txt.gz  
'/root/.cpan/sources/modules/02packages.details.txt.gz' を読み込みます  
 データベースは2015年4月13日月曜日23:29:02 GMTに生成されました  
..............  
 新しいCPAN.pmバージョン(v2.10)が利用可能です。  
 [現在の実行バージョンはv1.960001です]  
 CPANをインストールしてみることをお勧めします  
 reload cpan  
現在のセッションを離れずにCPAN.pmをアップグレードし、新しいバージョンを実行します。  
   
 [... snip ...]  
   
 CPAN.pm: G/GW/GWOLF/Config-File-1.50.tar.gzをビルドします  
  
Config-Fileをビルド中  
 GWOLF/Config-File-1.50.tar.gz  
 ./Build -- OK  
ビルドテストを実行中  
t/pod.t ........... サブルーチン main::all_pod_files_ok が /usr/local/share/perl/5.14.2/Test/Pod.pm の90行目で再定義されました。  
t/pod.t ........... ok  
t/pod_coverage.t .. ok  
t/test.t .......... 1/11 無効な文字がキーに含まれています 'be^ignored' 10行目で - /root/.cpan/build/Config-File-1.50-NjLxod/blib/lib/Config/File.pmの41行目、の10行目で無視されます。  
11行目の行形式が無効です: 'malformed line that should be also dropped (no equal sign)' /root/.cpan/build/Config-File-1.50-NjLxod/blib/lib/Config/File.pmの35行目、の11行目で。  
t/test.t .......... ok  
すべてのテストが成功しました。  
Files=3, Tests=13, 0 wallclock secs ( 0.03 usr 0.00 sys + 0.13 cusr 0.02 csys = 0.18 CPU)  
結果:PASS  
 GWOLF/Config-File-1.50.tar.gz  
 ./Build test -- OK  
ビルドインストールを実行中  
Config-Fileをビルド中  
/usr/local/share/perl/5.14.2/Config/File.pmをインストール中  
/usr/local/man/man3/Config::File.3pmをインストール中  
 GWOLF/Config-File-1.50.tar.gz  
 ./Build install -- OK  
ビルド中 S/SC/SCHUBIGER/App-OpenVZ-BCWatch-0.04.tar.gz  
 すでに /root/.cpan/build/App-OpenVZ-BCWatch-0.04-4Al97O に展開されています  
  
 CPAN.pm: S/SC/SCHUBIGER/App-OpenVZ-BCWatch-0.04.tar.gzをビルドします  
  
App-OpenVZ-BCWatchをビルド中  
 SCHUBIGER/App-OpenVZ-BCWatch-0.04.tar.gz  
 ./Build -- OK  
ビルドテストを実行中  
t/00-load.t ....... ok  
t/basic.t ......... ok  
t/pod-coverage.t .. ok  
t/pod.t ........... ok  
すべてのテストが成功しました。  
Files=4, Tests=6, 0 wallclock secs ( 0.04 usr 0.01 sys + 0.27 cusr 0.04 csys = 0.36 CPU)  
結果:PASS  
 SCHUBIGER/App-OpenVZ-BCWatch-0.04.tar.gz  
 ./Build test -- OK  
ビルドインストールを実行中  
App-OpenVZ-BCWatchをビルド中  
/usr/local/man/man1/vzwatchd.1pをインストール中  
/usr/local/share/perl/5.14.2/App/OpenVZ/BCWatch.pmをインストール中  
/usr/local/man/man3/App::OpenVZ::BCWatch.3pmをインストール中  
/usr/local/bin/vzwatchdをインストール中  
 SCHUBIGER/App-OpenVZ-BCWatch-0.04.tar.gz  
 ./Build install -- OK

コンパイル出力の最後に次の行が表示されることが重要です。

./Build install -- OK

エラーが表示された場合は、コマンドを再実行してください。すべてのモジュールを正常にコンパイルするために、コマンドを2回実行する必要がありました。

インストールが成功したかどうかを確認するには、次のコマンドを実行します:

vzwatchd check

これにより、インストールが確認され、サンプル設定ファイルが作成されます。

root@server:~# vzwatchd check  
/etc/vzwatchd.confが存在しないため、デフォルトで作成します。  
/etc/vzwatchd.confを編集してニーズに合わせて調整し、再度/usr/local/bin/vzwatchdを起動してください。

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” の値は、vzwatchdを有効にするために1に変更する必要があります。
  • 複数の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   
/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コンテナの制限の1つに達したときに、メールで通知を受け取ることができます。

リンク

  • OpenVZ
  • Vzwatchd
Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。