
私は、VM パーク内のマシンのクラスターに接続し、それらの使用レベルをチェックする新しいプログラムのスクリプトを作成しています。VM クライアントは RHEL と CentOS の組み合わせであり、複数の KVM ホストで実行されます。
現在何に使用されているかを確認することで、不要になった VM を見つけられるようになることを期待しています。
システムの使用状況を示す良い指標は何でしょうか。また、それに応じてシステムを評価するのに役立つコマンドは何でしょうか。
uptime、"chkconfig --list"、last、ps などのコマンドを組み合わせれば、使用率を判断できると思いますが、非常に不正確なレベルです。
システムの使用状況については、マシンが使用中かどうか、またはアプリケーションやユーザーに害を与えることなくシャットダウンできるかどうかを考えています。
これらの例から、他のサーバーと大きく異なるサーバーがあるかどうかは判断できますが、それが使用されているかどうかは判断できません。
答え1
監視
これはかなり幅広い質問です。サーバーの CPU 負荷、ネットワーク トラフィック、ファイル I/O などを監視するために使用できるアプリケーションは数多くあります。
最も基本的なレベルでは、VM の CPU 負荷を監視することから始めます。これは、VM 自体内または VM ホスト上の外部の 2 つの方法で監視できます。
KVMホストを介した監視
VM は最も基本的なレベルでは単なるアプリケーションであるため、対応する qemu プロセスを監視するだけで、KVM サーバー上の各 VM を監視できます。
$ ps -C qemu-kvm -o pid,time,etime,pcpu,args|perl -lane 'printf "%-7s %-12s %-12s %-5s %-5s %-s\n", @F[0..3,9,13]'
PID TIME ELAPSED %CPU
3860 11:37:32 85-10:32:43 0.5 512 mungr
4005 3-22:34:33 85-10:32:25 4.6 512 cobbler
4447 4-20:11:27 85-10:31:14 5.6 2048 mercury
6788 02:28:58 54-08:59:04 0.1 1024 xwiki
23916 1-03:46:02 80-09:51:47 1.4 512 fan
32539 02:17:48 1-08:50:54 6.9 1024 visualstudio
たとえば、上記のようなものは、KVM の名前 (6 列目)、使用されている CPU の割合 (4 列目)、これまでに使用された実際の CPU 時間 (2 列目)、および実行中の経過時間 (3 列目) を表示します。5 列目には、KVM に割り当てられた RAM の量が表示されます。
KVMゲストによる監視
より詳細なビューが必要な場合は、実際に各 VM を調べて、ローカルでその内部のデータを収集する必要があります。非常に優れたデータを取得する 1 つの方法は、ツールを使用することですsar
。ほとんどの RHEL、CentOS、および Fedora OS には、このパッケージがデフォルトでインストールされています。
注記: sar
sysstat パッケージの一部です。
引数を指定しない場合、基本sar
コマンドは、当日の午前 12 時から現在の時刻までの CPU 使用率を返します。
例えば:
$ date
Tue May 7 21:31:54 EDT 2013
$ sar
Linux 2.6.35.14-106.fc14.x86_64 (grinchy) 05/07/2013 _x86_64_ (4 CPU)
12:00:01 AM CPU %user %nice %system %iowait %steal %idle
12:10:01 AM all 24.86 0.00 3.98 6.01 0.00 65.16
12:20:01 AM all 25.12 0.00 3.98 5.98 0.00 64.93
...
...
09:20:01 PM all 36.06 0.00 5.00 4.95 0.00 54.00
09:30:01 PM all 35.40 0.00 4.97 4.66 0.00 54.97
Average: all 22.29 0.08 4.37 4.80 0.00 68.46
最後の行には、対応する各測定値の全体的な平均が表示されます。また、データは 10 分ごとにサンプリングされていることにも注意してください。これはもちろん設定可能です。
このsar
ツールは、CPU 使用率だけでなく、さまざまな機能を備えています。完全なパッケージであり、ファイル I/O、ネットワーク、メモリ ページングなどを監視できます。
さらに、データを CSV または XML 形式 (その他) で生成したり、レポートを生成することもできます。
パッケージのインストール
あなたが使用するアイデアは、chkconfig --list
特定のボックスでどのサービスが構成されているかを判断するための最初の方法です。ボックスの設定方法によって異なりますが、通常はランレベル 3 で実行するように設定されています。私は次のコマンドを使用します。
$ chkconfig --list |grep 3:on
abrtd 0:off 1:off 2:off 3:on 4:off 5:on 6:off
acpid 0:off 1:off 2:on 3:on 4:on 5:on 6:off
auditd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
avahi-daemon 0:off 1:off 2:off 3:on 4:on 5:on 6:off
...
...
vboxdrv 0:off 1:off 2:on 3:on 4:on 5:on 6:off
vboxweb-service 0:off 1:off 2:on 3:on 4:on 5:on 6:off
xinetd 0:off 1:off 2:off 3:on 4:on 5:on 6:off
ユーザーのログイン
このツールを使用すると、ac
ユーザーがシステムにログインしているかどうか、またログインしている時間はどのくらいかを確認できます。
例えば:
$ ac -pd
sam 0.15
Apr 28 total 0.15
sam 0.32
Apr 29 total 0.32
sam 0.00
Apr 30 total 0.00
sam 0.01
joeuser 0.00
May 3 total 0.01
sam 1.54
May 5 total 1.54
sam 0.01
Today total 0.01
特定のユーザーがシステムにログインしていた時間を日ごとに内訳で表示します。
プロセス会計
Linux ボックスで何が起こっているかを真剣に追跡したい場合は、プロセス アカウントを有効にすることができます。これはサービスです/etc/init.d/psacct
。これにより、サービスが最後に実行された日時、特定のユーザーが最後に実行したコマンドなどの詳細が提供されます。ほぼすべてが揃っています。
例
ユーザー vivek によって最後に実行されたコマンド
$ lastcomm vivek
userhelper S X vivek pts/0 0.00 secs Mon Nov 13 23:58
userhelper S vivek pts/0 0.00 secs Mon Nov 13 23:45
rpmq vivek pts/0 0.01 secs Mon Nov 13 23:45
rpmq vivek pts/0 0.00 secs Mon Nov 13 23:45
rpmq vivek pts/0 0.01 secs Mon Nov 13 23:45
gcc vivek pts/0 0.00 secs Mon Nov 13 23:45
最後にrmが実行された時刻
$ lastcomm rm
rm S root pts/0 0.00 secs Tue Nov 14 00:39
rm S root pts/0 0.00 secs Tue Nov 14 00:39
rm S root pts/0 0.00 secs Tue Nov 14 00:38
たとえば、この最後の手法を使用すると、Apache が最後に実行された時刻 (httpd) を確認できます。
パッケージpsacct
には他にも多くのツールが含まれています。これは、いくつかのアイデアを提供して、開始するためのものです。
参考文献
答え2
走れる
ps -C qemu-kvm -o pid,time,etime,args
定期的にホスト上で実行し、CPU 時間 (フィールドtime
) の変化を確認します。これにより、より長い期間にわたる評価が可能になります。VM がクラッシュしたりシャットダウンしたりしたときに結果が失われないように、定期的に結果を保存することができます。