サーバーの使用レベルを判断するためのコマンド

サーバーの使用レベルを判断するためのコマンド

私は、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 には、このパッケージがデフォルトでインストールされています。

注記: sarsysstat パッケージの一部です。

引数を指定しない場合、基本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 がクラッシュしたりシャットダウンしたりしたときに結果が失われないように、定期的に結果を保存することができます。

関連情報