このエントリーをはてなブックマークに追加

システムの状態を参照するツールはたくさんあって悩むところです。なにかおかしい?というのに気づいてから原因を分析するためには、過去のシステム状態を保存しておいて、ある時間帯に負荷が上がっていないかなど、いつでも参照できるようにしておくと便利です。 そのようなシステム状態の保存・参照に便利なツールとしてsysstatというのがあります。

sysstatは、sar, sadc, pidstat, iostatなど様々なツールから成り立っています。中心となるのはデータ収集ツールを直接キックしたり閲覧に使ったりするsarであったり、バックグラウンドで動いてデータを収集するsadcだったりします。

よくsarで負荷を見る、iostatで~、pidstatで~と言っているときは、sysstatのことです。

ちなみにdstatは、後発のツールでsysstatとは別物です。まぎらわしいですね。

インストール

$ sudo yum install sysstat
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: www.ftp.ne.jp
 * epel: ftp.iij.ad.jp
 * extras: www.ftp.ne.jp
 * rpmforge: mirror.fairway.ne.jp
 * updates: www.ftp.ne.jp
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package sysstat.x86_64 0:9.0.4-20.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

========================================================================
 Package       Arch       Version          Repository       Size
========================================================================
Installing:
 sysstat       x86_64     9.0.4-20.el6     base             225 k

Transaction Summary
========================================================================
Install       1 Package(s)

Total download size: 225 k
Installed size: 807 k
Is this ok [y/N]: y
Downloading Packages:
sysstat-9.0.4-20.el6.x86_64.rpm                                                                                                                                                                        | 225 kB     00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : sysstat-9.0.4-20.el6.x86_64                                                                                                                                                                                1/1
  Verifying  : sysstat-9.0.4-20.el6.x86_64                                                                                                                                                                                1/1

Installed:
  sysstat.x86_64 0:9.0.4-20.el6

Complete!

sysstatをインストールすると以下に相当するcron設定が追加されます。(以下はCentOS 6.4の手元のVMの例です)

$ cat /etc/cron.d/sysstat
# Run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib64/sa/sa1 1 1
# 0 * * * * root /usr/lib64/sa/sa1 600 6 &
# Generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib64/sa/sa2 -A

この中で動いているのは、以下の2つのコマンドです。

sa1(8) collects and stores binary data in the system activity daily data file. It is a front end to sadc designed to be run from cron. sa2(8) writes a summarized daily activity report. It is a front end to sar designed to be run from cron.

sa1が、システム状態を取得、バイナリ形式で保存してくれるもので、cronから呼び出すためのsadcのフロントエンドということ。 sa2が、dailyのサマリーを作ってくれるもので、cronから呼び出すためのsarのフロントエンドということ。

上のcron設定の場合は、sa1が10分に一度システム状態を取得して/var/log/sa/saDD(DDの部分は日付)に状態を記録して、一日の終わりにsa2が集計結果を/var/log/sa/sarDDに記録します。

そして、

sar(1) collects, reports and saves system activity information (CPU, memory, disks, interrupts, network interfaces, TTY, kernel tables,etc.) sadc(8) is the system activity data collector, used as a backend for sar.

sarはデータを集め、レポートして、システム情報を保存する機能を持っており、その裏でデータを集める部分はsadcが担っているようです。 要するに、sysstatのキモは、sadcがシステム情報を収集・保存しておいて、sarがレポーティングや収集したシステム情報の閲覧に使われるようです。

chkconfig --listを見る限り、sysstatと呼ばれるプロセスが起動するように設定されます。

$ chkconfig --list sysstat
sysstat         0:off   1:on    2:on    3:on    4:on    5:on    6:off

$ service sysstat status
(まだ何も表示されない)

$ ps aux | egrep \(sysstat\|sar\|sadc\) | grep -v grep
(何も表示されない)

sar

ではsarの使い方に入ります。

何も指定せずにsarを実行するとログファイルから読み込んで以下のような表示をします。 もしもインストールした直後や、日付が変わった直後でログファイルが全くない場合は最初の1行だけの出力になります。

$ sar
Linux 2.6.32-279.2.1.el6.x86_64 (c6)    2013年10月30日  _x86_64_        (1 CPU)

00時00分01秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
07時30分01秒     all      0.02      0.00      0.07      2.87      0.00     97.03
07時40分01秒     all      0.04      0.00      0.15      0.00      0.00     99.81
08時30分01秒     all      0.04      0.00      0.13      0.00      0.00     99.83
08時40分02秒     all      0.08      0.00      0.25      0.00      0.00     99.66
08時50分01秒     all      0.13      0.00      0.28      0.00      0.00     99.59
09時10分01秒     all      0.04      0.01      0.19      0.00      0.00     99.75
平均値:      all      0.06      0.00      0.20      0.07      0.00     99.66

cronでは10分間隔で取得するように設定されているのですが、VMをちょいちょい落としているので一部が抜けています。

取得間隔と表示回数を指定することもできます。

$ sar 1 5
Linux 2.6.32-279.2.1.el6.x86_64 (c6)    2013年10月31日  _x86_64_        (1 CPU)

09時07分18秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
09時07分19秒     all      0.00      0.00      3.96      0.00      0.00     96.04
09時07分20秒     all      1.01      0.00      2.02      0.00      0.00     96.97
09時07分21秒     all      0.00      0.00      3.00      0.00      0.00     97.00
09時07分22秒     all      0.00      0.00      3.03      0.00      0.00     96.97
09時07分23秒     all      0.00      0.00      3.00      0.00      0.00     97.00
平均値:      all      0.20      0.00      3.01      0.00      0.00     96.79

CPU使用率の確認は-uオプションを使います。これは-uを指定しない場合と同じです。

 $ sar -u 1 5
 Linux 2.6.32-279.2.1.el6.x86_64 (c6)    2013年10月31日  _x86_64_        (1 CPU)

 09時07分54秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
 09時07分55秒     all      0.00      0.00      4.00      0.00      0.00     96.00
 09時07分56秒     all      0.00      0.00      2.02      0.00      0.00     97.98
 09時07分57秒     all      0.00      0.00      3.03      0.00      0.00     96.97
 09時07分58秒     all      0.00      0.00      3.00      0.00      0.00     97.00
 09時07分59秒     all      0.99      0.00      2.97      0.00      0.00     96.04
 平均値:      all      0.20      0.00      3.01      0.00      0.00     96.79

メモリ状態を表示するには-mオプションかと思いきや、-rでした。

$ sar -r 1 5
Linux 2.6.32-279.2.1.el6.x86_64 (c6)    2013年10月31日  _x86_64_        (1 CPU)

20時41分50秒 kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit
20時41分51秒    243192    773480     76.08     98608    328988    405180     13.15
20時41分52秒    243192    773480     76.08     98608    328988    405180     13.15
20時41分53秒    243192    773480     76.08     98608    328988    405180     13.15
20時41分54秒    243192    773480     76.08     98608    328988    405180     13.15
20時41分55秒    243192    773480     76.08     98608    328988    405180     13.15
平均値:     243192    773480     76.08     98608    328988    405180     13.15

ちなみに-mオプションは、CPUの電源状態の表示です。

$ sar -m 1 5
Linux 2.6.32-279.2.1.el6.x86_64 (c6)    2013年10月31日  _x86_64_        (1 CPU)

20時42分34秒     CPU       MHz
20時42分35秒     all   2791.10
20時42分36秒     all   2791.10
20時42分37秒     all   2791.10
20時42分38秒     all   2791.10
20時42分39秒     all   2791.10
平均値:      all   2791.10

ネットワークデバイス(NIC)の通信状態を確認するためには、"-n DEV"を追加します。

$ sar -n DEV 1 5
Linux 2.6.32-279.2.1.el6.x86_64 (c6)    2013年10月31日  _x86_64_        (1 CPU)

09時19分29秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
09時19分30秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
09時19分30秒      eth0      1.01      1.01      0.06      0.39      0.00      0.00      0.00

09時19分30秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
09時19分31秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
09時19分31秒      eth0      1.01      2.02      0.06      0.78      0.00      0.00      0.00

09時19分31秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
09時19分32秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
09時19分32秒      eth0      1.01      2.02      0.06      0.78      0.00      0.00      0.00

09時19分32秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
09時19分33秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
09時19分33秒      eth0      0.99      1.98      0.06      0.76      0.00      0.00      0.00

09時19分33秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
09時19分34秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
09時19分34秒      eth0      1.01      2.02      0.06      0.78      0.00      0.00      0.00

平均値:      IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
平均値:         lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均値:       eth0      1.01      1.81      0.06      0.70      0.00      0.00      0.00

-n DEVのキーワード部分はDEV以外にも以下のようなものがつかえますので、いろいろ試してみると目的のものが見つかると思います。

DEV、EDEV、NFS、NFSD、SOCK、IP、EIP、ICMP、EICMP、TCP、ETCP、UDP、SOCK6、IP6、EIP6、ICMP6、EICMP6、 UDP6

ブロックデバイス(ハードディスク等)の動作については-dオプションを使用します。

$ sar -d 1 5
Linux 2.6.32-279.2.1.el6.x86_64 (c6)    2013年10月31日  _x86_64_        (1 CPU)

09時13分27秒       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
09時13分28秒    dev8-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
09時13分28秒  dev253-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
09時13分28秒  dev253-1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

09時13分28秒       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
09時13分29秒    dev8-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
09時13分29秒  dev253-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
09時13分29秒  dev253-1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

09時13分29秒       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
09時13分30秒    dev8-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
09時13分30秒  dev253-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
09時13分30秒  dev253-1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

09時13分30秒       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
09時13分31秒    dev8-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
09時13分31秒  dev253-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
09時13分31秒  dev253-1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

09時13分31秒       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
09時13分32秒    dev8-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
09時13分32秒  dev253-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
09時13分32秒  dev253-1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

平均値:        DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
平均値:     dev8-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均値:   dev253-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均値:   dev253-1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

I/O送受信に関しては-bオプションを使用します。

$ sar -b 1 5
Linux 2.6.32-279.2.1.el6.x86_64 (c6)    2013年10月31日  _x86_64_        (1 CPU)

09時12分29秒       tps      rtps      wtps   bread/s   bwrtn/s
09時12分30秒      0.00      0.00      0.00      0.00      0.00
09時12分31秒      0.00      0.00      0.00      0.00      0.00
09時12分32秒      0.00      0.00      0.00      0.00      0.00
09時12分33秒      0.00      0.00      0.00      0.00      0.00
09時12分34秒      0.00      0.00      0.00      0.00      0.00
平均値:       0.00      0.00      0.00      0.00      0.00

最後に-Aオプションですが、-Aオプションをつけると、「sar -bBdqrRSuvwWy -I SUM -I XALL -n ALL -u ALL -P ALL」と同等になります。

$ sar -A
Linux 2.6.32-279.2.1.el6.x86_64 (c6)    2013年10月30日   _x86_64_    (1 CPU)

00時00分01秒     CPU      %usr     %nice      %sys   %iowait    %steal      %irq     %soft    %guest     %idle
07時30分01秒     all      0.02      0.00      0.07      2.87      0.00      0.00      0.00      0.00     97.03
07時30分01秒       0      0.02      0.00      0.07      2.87      0.00      0.00      0.00      0.00     97.03
07時40分01秒     all      0.04      0.00      0.07      0.00      0.00      0.00      0.09      0.00     99.81
07時40分01秒       0      0.04      0.00      0.07      0.00      0.00      0.00      0.09      0.00     99.81
(省略)
平均値:      all      0.05      0.00      0.08      0.01      0.00      0.00      0.08      0.00     99.78
平均値:        0      0.05      0.00      0.08      0.01      0.00      0.00      0.08      0.00     99.78

00時00分01秒    proc/s   cswch/s
07時30分01秒      0.12     37.54
07時40分01秒      0.00     37.00
08時30分01秒      0.12     38.21
08時40分02秒      0.08     46.24
(省略)
平均値:       0.04     37.72

00時00分01秒  pswpin/s pswpout/s
07時30分01秒      0.00      0.00
07時40分01秒      0.00      0.00
08時30分01秒      0.00      0.00
08時40分02秒      0.00      0.00
(省略)
平均値:       0.00      0.00

00時00分01秒  pgpgin/s pgpgout/s   fault/s  majflt/s  pgfree/s pgscank/s pgscand/s pgsteal/s    %vmeff
07時30分01秒      0.00      3.89     48.58      0.00     28.70      0.00      0.00      0.00      0.00
07時40分01秒      0.00      0.39      2.64      0.00      1.32      0.00      0.00      0.00      0.00
08時30分01秒      0.00      1.32     46.19      0.00     13.34      0.00      0.00      0.00      0.00
08時40分02秒      0.41      1.20     39.17      0.01     18.94      0.00      0.00      0.00      0.00
(省略)
平均値:       0.02      0.73     18.12      0.00      7.04      0.00      0.00      0.00      0.00

00時00分01秒       tps      rtps      wtps   bread/s   bwrtn/s
07時30分01秒      1.59      0.00      1.59      0.00     15.58
07時40分01秒      0.18      0.00      0.18      0.00      1.55
08時30分01秒      0.53      0.00      0.53      0.00      5.29
08時40分02秒      0.55      0.06      0.48      1.63      4.80
(省略)
平均値:       0.30      0.00      0.30      0.07      2.91

00時00分01秒   frmpg/s   bufpg/s   campg/s
07時30分01秒     12.24      0.00      0.02
07時40分01秒     -0.05      0.00      0.00
08時30分01秒     -2.34      0.00      0.01
08時40分02秒     -0.21      0.01      0.10
(省略)
平均値:      -0.06      0.00      0.01

00時00分01秒 kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit
07時30分01秒    255848    760824     74.83     98528    329184    387720     12.58
07時40分01秒    255724    760948     74.85     98528    329188    387720     12.58
08時30分01秒    250832    765840     75.33     98528    329200    396892     12.88
08時40分02秒    250336    766336     75.38     98544    329432    396892     12.88
(省略)
平均値:     250740    765932     75.34     98557    329573    393795     12.78

00時00分01秒 kbswpfree kbswpused  %swpused  kbswpcad   %swpcad
07時30分01秒   2064376         0      0.00         0      0.00
07時40分01秒   2064376         0      0.00         0      0.00
08時30分01秒   2064376         0      0.00         0      0.00
08時40分02秒   2064376         0      0.00         0      0.00
(省略)
平均値:    2064376         0      0.00         0      0.00

00時00分01秒 dentunusd   file-nr  inode-nr    pty-nr
07時30分01秒     54761      1280     21484        21
07時40分01秒     54761      1280     21484        21
08時30分01秒     54779      1376     21518        22
08時40分02秒     55138      1376     21596        22
(省略)
平均値:      55231      1407     21614        25

00時00分01秒   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15
07時30分01秒         0       125      0.02      0.01      0.00
07時40分01秒         0       125      0.00      0.00      0.00
08時30分01秒         0       130      0.00      0.00      0.00
08時40分02秒         0       130      0.00      0.00      0.00
(省略)
平均値:          0       130      0.00      0.00      0.00

00時00分01秒       TTY   rcvin/s   xmtin/s framerr/s prtyerr/s     brk/s   ovrun/s
07時30分01秒         0      0.00      0.00      0.00      0.00      0.00      0.00
07時30分01秒         1      0.00      0.00      0.00      0.00      0.00      0.00
07時40分01秒         0      0.00      0.00      0.00      0.00      0.00      0.00
07時40分01秒         1      0.00      0.00      0.00      0.00      0.00      0.00
(省略)
平均値:          0      0.00      0.00      0.00      0.00      0.00      0.00
平均値:          1      0.00      0.00      0.00      0.00      0.00      0.00

00時00分01秒       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
07時30分01秒    dev8-0      0.62      0.00      7.79     12.62      0.03     49.37     47.13      2.91
07時30分01秒  dev253-0      0.97      0.00      7.79      8.00      0.03     32.91     29.89      2.91
07時30分01秒  dev253-1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
07時40分01秒    dev8-0      0.09      0.00      0.78      8.92      0.00      1.71      1.37      0.01
(省略)
平均値:     dev8-0      0.12      0.03      1.45     12.69      0.00      4.38      3.47      0.04
平均値:   dev253-0      0.18      0.03      1.45      8.13      0.00      5.22      2.23      0.04
平均値:   dev253-1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

00時00分01秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
07時30分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
07時30分01秒      eth0      2.87      0.02      0.28      0.01      0.00      0.00      0.00
07時40分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
07時40分01秒      eth0      0.32      0.00      0.03      0.00      0.00      0.00      0.00
(省略)
平均値:         lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均値:       eth0      0.42      0.23      0.03      0.08      0.00      0.00      0.00

00時00分01秒     IFACE   rxerr/s   txerr/s    coll/s  rxdrop/s  txdrop/s  txcarr/s  rxfram/s  rxfifo/s  txfifo/s
07時30分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
07時30分01秒      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
07時40分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
07時40分01秒      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
(省略)
平均値:         lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均値:       eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

00時00分01秒    call/s retrans/s    read/s   write/s  access/s  getatt/s
07時30分01秒      0.00      0.00      0.00      0.00      0.00      0.00
07時40分01秒      0.00      0.00      0.00      0.00      0.00      0.00
08時30分01秒      0.00      0.00      0.00      0.00      0.00      0.00
08時40分02秒      0.00      0.00      0.00      0.00      0.00      0.00
(省略)
平均値:       0.00      0.00      0.00      0.00      0.00      0.00

00時00分01秒   scall/s badcall/s  packet/s     udp/s     tcp/s     hit/s    miss/s   sread/s  swrite/s saccess/s sgetatt/s
07時30分01秒      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
07時40分01秒      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
08時30分01秒      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
08時40分02秒      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
(省略)
平均値:       0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

00時00分01秒    totsck    tcpsck    udpsck    rawsck   ip-frag    tcp-tw
07時30分01秒       198         5         0         0         0         0
07時40分01秒       198         5         0         0         0         0
08時30分01秒       203         6         0         0         0         0
08時40分02秒       203         6         0         0         0         0
(省略)
平均値:        203         5         0         0         0         0

他にも紹介していないオプションがあります。結構必要なステータスはとれると思いますのでいろいろ試してください。




記事一覧へ