VMパーク内のマシンのクラスターに接続する新しいプログラムのスクリプトを作成しており、使用レベルを確認できれば幸いです。VMクライアントはRHELとCentOSの組み合わせであり、複数のKVMホストで実行されます。
現在使用されているVMを確認することで、不要になったVMを見つけられるようにしたいと考えています。
システムの使用状況を示す良い指標は何ですか?また、それに応じてシステムを評価するのに役立つコマンドはどれですか?
Uptime、 "chkconfig --list"、last、psなどのコマンドを組み合わせると、使用率を判断できますが、非常に不正確なレベルだと思います。
システムの使用状況では、アプリケーションやユーザーに害を及ぼすことなく、マシンが使用されているのか、それともシャットダウンできるのかを考えています。
例を使用すると、他のサーバーとは大きく異なるサーバーがあるかどうかを判断できますが、使用されているかどうかを示すことはできません。
これはかなり広く開かれた質問です。サーバーのCPU、ネットワークトラフィック、ファイルI/Oなどの負荷を監視するために使用できるアプリケーションはたくさんあります。
最も基本的なレベルでは、VMのCPU負荷を監視することから始めます。これは、VM自体の内部、またはVMホストの外部)の2つの方法で監視できます。
最も基本的なレベルのa VMは単なるアプリケーションであるため、VMサーバー上の各KVM対応するqemuプロセスを監視します。
$ 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の量を示します。
詳細ビューが必要な場合は、実際に各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
です。これにより、サービスが最後に実行された日時、特定のユーザーが最後に実行されたコマンドなどの詳細がわかります。これは、ほぼ9ヤードです。
ユーザー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
パッケージには、他にも多くのツールがあります。これは、いくつかのアイデアを提供し、開始するためだけのものです。
あなたは実行することができます
ps -C qemu-kvm -o pid,time,etime,args
ホストで定期的に確認し、CPU時間の変化を確認します(time
フィールド)。これにより、より長い期間にわたる評価が可能になります。 VMがクラッシュまたはシャットダウンしたときに結果が失われないようにするために、結果を時々保存することができます。