システムの状態を参照するツールはたくさんあって悩むところです。なにかおかしい?というのに気づいてから原因を分析するためには、過去のシステム状態を保存しておいて、ある時間帯に負荷が上がっていないかなど、いつでも参照できるようにしておくと便利です。 そのようなシステム状態の保存・参照に便利なツールとして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を実行するとログファイルから読み込んで以下のような表示をします。 もしもインストールした直後や、日付が変わった直後でログファイルが全くない場合は最初の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
他にも紹介していないオプションがあります。結構必要なステータスはとれると思いますのでいろいろ試してください。