Linux でのシステム監視のための SAR コマンドの使用例

, Author

System Activity Reporter は、システム管理者がサーバー マシンの概要を、異なる時点の異なる重要な指標のステータスで把握するのに役立つ重要なツールです。 Linuxシステム管理者の多くが最初に行うことは、同じ問題が以前発生したときのことを思い出すことであり、もし以前の発生日を覚えていれば、内部システムの統計と現在の統計を簡単に比較することができます。

SAR はまさにこれを行うのに非常に役立ちます。

最初に行う必要があるのは、マシンに SAR ユーティリティがインストールされているかどうかをチェックし確認することです。 これは、すべての rpm をリストして、このユーティリティを見つけることで確認できます。

SAR は sysstat 内のユーティリティの 1 つです。 SAR は sysstat に含まれるユーティリティのひとつで、YUM を使って簡単にダウンロードし、インストールすることができます。 (しかし、ほとんどのディストリビューションには sysstat toolsmiley がプリパックされているので心配ありません。)

# yum install sysstat

そうですが、インストール時に epel や rpmformge リポジトリが有効になっていることを確認します。 そうでなければ、ディストリビューション DVD はパッケージを探すのに良い場所となるでしょう。

SAR (System Activity Reporter) は、次のような情報を提供します。

  1. System Buffer activity
  2. Information about system calls
  3. Block device information
  4. Overall paging information
  5. Semaphore and memory allocation information
  6. CPU utilization and process report

SAR に関して理解しなければいけないことは、すべてが cron を使って行われることです。 多くの Linux ディストリビューションでは、デフォルトで /etc/cron.d/sysstat.

それでは、SAR が実際にどのように動作するか見てみましょう。 つまり、監視システムは、与えられた時間のマシンの統計情報を提供できなければなりません。 統計を収集する時間間隔を短くすれば、(システムに関するより多くのデータを持つことになるため)詳細な統計の量が増えます。

SAR はまさにそれを行います。 そのため、SAR は CRON.

# cat /etc/cron.SAR を通して実行されます。d/sysstat# run system activity accounting tool every 10 minutes*/10 * * * root /usr/lib64/sa/sa1 1 1# generate a daily summary of process accounting at 23.d/sysstat# run system activity accounting tool every 10 minutes*/10 * * * * * root /usr/lib64/sa/sa1 1 # create a daily summary of process accounting at 23:5353 23 * * root /usr/lib64/sa/sa2 -A
  • つまり、上記の SAR の cron ファイルから、10 分ごとに “/usr/lib64/sa/” にある “sa1” スクリプトを実行していることが分かります
  • また、一日の終わりには約 23 時に /usr/lib64/sa/sa2 スクリプトも実行しているのです。53

つまり、SAR (/usr/lib64/sa/sa1) の最初の cron エントリは 10 分ごとに実行され、sadc ユーティリティを呼び出してシステム統計を収集し、バイナリ ファイル (1 日で 1 ファイル) に保存します

そして 2 番目の cron エントリがそのバイナリ ファイルの内容をすべて別のテキスト ファイルにダンプします。

# cat /etc/sysconfig/sysstat# How long to keep log files (days), maximum is a monthHISTORY=7

そこで、ファイルを編集して簡単に HISTORY エントリを変更することが可能です。

そのため、システム統計は cron で 10 分ごとに収集されていますが (より正確な情報を得るには cron を 1 分ごとに実行するように修正します)、統計情報を確認するには、次のようなコマンドを実行する必要があります。

12:00:01 AM CPU %user %nice %system %iowait %steal %idle12:01:01 AM all 73.28 0.00 1.25 0.00 0.00 25.4712:02:01 AM all 7.83 0.00 0.44 0.00 0.00。00 91.7312:03:01 AM all 61.65 0.00 0.70 0.00 0.00 37.6612:04:01 AM all 57.85 0.00 0.82 0.00 0.00 41.3412:05:01 AM all 4.25 0.00 0.41 0.00 0.00 95.3412:06:01 AM all 4.25 0.00 1.20 0.00 0.22 0.00 0.00 95.5812:07:01 AM all 5.05 0.00 0.33 0.00 0.00 94.6312:08:01 AM all 4.76 0.00 0.06 0.00 0.00 95.1812:09:01 AM all 37.57 0.00 0.37 0.00 0.00 62.0512:10:01 AM all 70.04 0.00 0.80 0.00 0.00 29.1612:11:01 AM all 5.03 0.00 0.12 0.00 0.00 94.84

出力からわかるのは、1分ごとに収集した統計情報の出力を報告していることです(つまり、私は1分間隔でcronを持っているということです)、そして一日の詳細を表示します(またはコマンドを入力したときまで収集した詳細を表示します)。 YCX5UKN5ZKEJ

%sys: プロセッサがオペレーティングシステムのタスクに費やした時間の割合を示します (前のユーザーはユーザー側プロセスの時間を示すため)

%iowait: 名前 iowait 自体が、プロセッサがデバイス (入力と出力) を待つために費やした時間であることを示します

%nice.SAR>

%sys: プロセッサが OS 側プロセスの時間を示します。 Linuxでは、niceの値を変更することで、プロセスの優先度を変更できることをご存知の方は多いと思います。 この表は、niceの値が変更されたプロセスのCPUによる消費時間を示しています。

%idle: CPUのアイドル時間

sar はデフォルトで全てのデータを /var/log/sa/ に保存し、日数は以下のように命名されます。

s01 – 月の最初の日

s02 – 月の二日

s03,s04…and so on.

SAR command の d オプション

この -d オプションはシステムに接続されている異なったデバイス(ブロックデバイス)に関するそれぞれの活動をレポートするために使用することが可能です。

12:00:01 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util12:01:01 AM dev3-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00。0012:01:01 AM dev3-64 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12:01:01 AM dev8-0 55.62 9.98 8317.87 149.72 13.68 245.96 2.61 14.5212:01:01 AM dev8-16 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12:02:01 AM dev3-0 0.00 0.00 0.00 0.00 0.01。00 0.00 0.00 0.00 0.00 12:02:01 AM dev3-64 0.00 0.00 0.00 0.00 0.00 0.00 12:02:01 AM dev8-0 1.55 0.00 35.29 22.70 0.01 7.26 1.86 0.2912:02:01 AM dev8-16 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12:03:01 AM dev3-0 0.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12:03:01 AM dev3-64 0.00 0.00 0.00 0.00 0.00 0.00 0.00 

DEV:この列はLinuxブロックデバイスのメジャーとマイナー番号に従ってマシン上のデバイス名を付けます。 以下のように、/devディレクトリでls -lを実行することで確認することができます。

brw-r----- 1 root disk 8, 0 Nov 16 16:29 sdabrw-r----- 1 root disk 8, 1 Nov 16 16:29 sda1brw-r----- 1 root disk 8, 2 Nov 16 16:29 sda2

上の ls -l の出力では sda のメジャー番号は “8” でマイナー番号は “0” になってますね。このため、sarコマンドの出力にあるディスクを簡単に特定することができます。

tps: tps は transfer per second の略で、特定のデバイスへの1秒あたりの転送量を示します。

rd_sec/s: これは、そのデバイスで読み込まれているセクタの総数を示します。

wr_sec/s: rd_sec/s が1秒あたりの読み込まれるセクタなら、 wr_sec は明らかに 1秒あたりの書き込まれるセクタを示します。

avgrq-sz: この列は平均値を示します。

await: この列は、プロセッサが IO に関する要求を待機した合計時間を示します。

%util: この列は、要求が発生したときの CPU の使用率をパーセントで示します。

SAR コマンドでメモリの使用状況を表示

sar コマンドの -r オプションは非常に便利です。

02:20:01 AM kbmemfree kbmemused %memused kbbuffers kbcached kbswpfree kbswpused %swpused kbswpcad02:30:01 AM 609500 1487652 70.0.94 242420 777560 1075980 364 0.03 36002:40:01 AM 609500 1487652 70.94 242424 777568 1075980 364 0.03 36002:50:01 AM 609500 1487652 70.94 242424 777592 1075980 364 0.03 36003:00:01 AM 608980 1488172 70.96 2424777600 1075980 364 0.03 242477777600 0.03 36003:01 AM 609500 1487652 60.94 242424777600 0.03 24242424777600 0.03 24242477777600 1075980 364 0.0303 36003:10:01 AM 608584 1488568 70.98 2424777628 1075980 364 0.03 36003:20:01 AM 608584 1488568 70.98 242477648 1075980 364 0.03 360

上記の出力でほとんどの列は自明(そしてほとんどの出力がKBである)である。
kbmemfree: 空きメモリの量
Kbmemused: 使用メモリ
%memused: 使用メモリの割合
kbbuffers: カーネルが使用しているバッファのメモリです。
kbcached: カーネルが使用するキャッシュメモリ
メモリに関する他のすべてのエントリは swap (free, used, percentage など)

How to fetch a particular day using SAR in linux

前に述べたように特定の日のすべてのメトリクスは sa<day of month> 単位で保存されます。
# sar -f /var/log/sa/sa27Linux 2.6.18-194.el5xen (archive.).r) 11/27/2012 02:20:01 AM CPU %user %nice %system %iowait %steal %idle02:30:01 AM all 2.58 0.00 0.70 1.12 0.05 95.5502:40:01 AM 全部 2.56 0.00 0.69 1.05 0.04 95.6602:50:01 AM 全部 2.64 0.00 0.65 1.15 0.05 95.5003:00:01 AM 全部 3.27 0.00 0.71 1.12 0.04 94.1.86
上のコマンドでは、その日の統計が必要なので、引数として /var/log/sa/sa27 を渡しています。上記のコマンドで必要なように、sa<day of month> を渡します

特定の日付の特定の時間のSARメトリクスを取得する方法

これは、以下のように別の引数を渡すことで実現できます。

# sar -f /var/log/sa/sa27 -s 02:20:00 -e 03:20:00Linux 2.6.18-194.el5xen (archive.r) 11/27/2012 02:20:01 AM CPU %user %nice %system %iowait %steal %idle02:30:01 AM all 2.6.58 0.00 0.70 1.12 0.05 95.5502:40:01 AM all 2.56 0.00 0.69 1.05 0.04 95.6602:50:01 AM all 2.64 0.00 0.65 1.15 0.05 95.5003:00:01 AM all 3.27 0.00 0.71 1.12 0.04 94.8603:10:01 AM 全部 2.72 1.06 0.75 1.09 0.04 94.33平均:全部 2.76 0.21 0.70 1.11 0.04 95.0。18
上に示した例では、毎月 27 日の 2:20:00 から 3:20:00 の間のメトリクスを取得するよう sar に依頼しました。
時間間隔と一緒に他のメトリクスオプションを渡すこともできます。 SAR は、特定の日の特定の時間のマシンの統計情報を正確に表示することができます…そのため、ボトルネックの特定がより簡単になります。
上記のコマンドで -A オプションを使用すると、すべて (sar が収集したすべてのメトリック) を表示します。
sar -f /var/log/sa/sa27 -s 02:20:00 -e 03:20:00 -A
出力は精巧です。この-Aオプションでsarのほぼすべてを画面に取得できます!

sarコマンドでネットワークの統計情報を表示

sarコマンドにはネットワーク統計情報も含まれています。

# sar -n DEVLinux 2.6.18-194.el5xen (archive.r) 11/27/2012 02:20:01 AM IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s02:30:01 AM lo 0.01 0.01 0.77 0.77 0.00 0.00 0.0002:30:01 AM eth0 12.30 0.12 1285.06 27.59 0.00 0.00 0.0002:30:01 AM eth1 14.45 0.00 1399.34 0.00 0.00 0.00 0.0002:30:01 AM sit0 0.00 0.00 0.00 0.00 0.00。0002:40:01 AM lo 0.01 0.01 0.77 0.00 0.00 0.0002:40:01 AM eth0 10.65 0.12 1139.38 27.00 0.00 0.00 0.0002:40:01 AM eth1 13.96 0.00 1352.0.00 0.00 0.00 0.0002:40:00 AM eth2 13.96 0.00 0.00 0.00 0.00 0.0002:40:00 AM eth1 13.97 0.97 0.97 0.9787 0.00 0.00 0.00 0.00

IFACE: nic card interface nameの略

rxpck/s: これは1秒あたりの受信パケット総量を示します

txpck/s:transmitted packets per second

rxcmp/s: compressed packets received

txcmp/s: compressed packets transmitted

rxmcst/s: packets multicasted per secondです。

Some other Metrics that can be determined using sar

-y option in sar: tty details

-X option in sar to get details of a particular process.

-n sar の SOCK オプション: このオプションは、全てのソケットの詳細を報告します。

コメントを残す

メールアドレスが公開されることはありません。