前提
linuxのリソースを監視するのに便利なsysstat(sarコマンド)をインストールすることにより、現在のサーバリソースを確認でき、さらに過去にさかのぼって負荷状態を確認できるようになる。
インストール&設定
$ sudo yum install -y sysstat # sysstatのインストール
$ sudo vi /etc/cron.d/sysstat # configの修正
設定例
# 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
運用
sysstatの起動
$ sudo systemctl start sysstat.service # CentOS7.x
$ sudo service sysstat start # CentOS6.x / Amazon Linux
sysstatの停止(必要な時だけ)
$ sudo systemctl stop sysstat.service # CentOS7.x
$ sudo service sysstat stop # CentOS6.x / Amazon Linux
sarコマンドで現在のcpuを確認
$ sar
or
$ sar -q
LINUXが再起動した時刻には以下のように「LINUX RESTART」と記録されます。
02:59:46 PM LINUX RESTART
sarコマンドで過去のcpuを確認
- saxxのxxは2桁日付
$ sar -f /var/log/sa/sa08
sarコマンドで時間指定
$ sar -s 11:00:00 -e 12:00:00
sarコマンドでリアルタイム確認
- 1秒ごと10回
- 回数は省略可能
$ sar 1 10
そのほかオプション
option | 説明 |
---|---|
-u | CPU |
-u -P ALL | CPUを各コアごとに |
-q | ロードアベレージ |
-r | メモリ |
-W | スワップ |
-n DEV | ネットワーク |
-b | ディスクIO |
-d | ディスク動作 |
利用例
アプリであれば通知が遅いとか、Webであれば表示が遅いなどのときにサーバにログインして実際に何か重い処理が張り付いていないかを確認するときに便利です。
CPU
$ sar 1 1 -u
Linux 3.10.0-327.el7.x86_64 (server01) 11/08/2016 _x86_64_ (1 CPU)
02:51:30 PM CPU %user %nice %system %iowait %steal %idle
02:51:31 PM all 0.00 0.00 0.00 0.00 0.00 100.00
Average: all 0.00 0.00 0.00 0.00 0.00 100.00
CPUを各コアごとに
$ sar 1 1 -u -P ALL
Linux 3.10.0-327.el7.x86_64 (server01) 11/08/2016 _x86_64_ (1 CPU)
02:52:30 PM CPU %user %nice %system %iowait %steal %idle
02:52:31 PM all 0.00 0.00 1.00 0.00 0.00 99.00
02:52:31 PM 0 0.00 0.00 1.00 0.00 0.00 99.00
Average: CPU %user %nice %system %iowait %steal %idle
Average: all 0.00 0.00 1.00 0.00 0.00 99.00
Average: 0 0.00 0.00 1.00 0.00 0.00 99.00
ロードアベレージ
$ sar 1 1 -q
Linux 3.10.0-327.el7.x86_64 (server01) 11/08/2016 _x86_64_ (1 CPU)
02:55:33 PM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
02:55:34 PM 1 181 13.00 13.01 13.05 0
Average: 1 181 13.00 13.01 13.05 0
メモリ
$ sar 1 1 -r
Linux 3.10.0-327.el7.x86_64 (server01) 11/08/2016 _x86_64_ (1 CPU)
02:55:52 PM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
02:55:53 PM 122688 378092 75.50 20 189084 630208 40.68 114828 143148 5632
Average: 122688 378092 75.50 20 189084 630208 40.68 114828 143148 5632
スワップ
$ sar 1 1 -W
Linux 3.10.0-327.el7.x86_64 (server01) 11/08/2016 _x86_64_ (1 CPU)
02:56:16 PM pswpin/s pswpout/s
02:56:17 PM 0.00 0.00
Average: 0.00 0.00
ネットワーク
$ sar 1 1 -n DEV
Linux 3.10.0-327.el7.x86_64 (server01) 11/08/2016 _x86_64_ (1 CPU)
02:56:45 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
02:56:46 PM enp0s3 0.99 0.99 0.06 0.16 0.00 0.00 0.00
02:56:46 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
02:56:46 PM docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
Average: enp0s3 0.99 0.99 0.06 0.16 0.00 0.00 0.00
Average: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
ディスクIO
$ sar 1 1 -b
Linux 3.10.0-327.el7.x86_64 (server01) 11/08/2016 _x86_64_ (1 CPU)
02:58:06 PM tps rtps wtps bread/s bwrtn/s
02:58:07 PM 0.00 0.00 0.00 0.00 0.00
Average: 0.00 0.00 0.00 0.00 0.00
ディスク動作
$ sar 1 1 -d
Linux 3.10.0-327.el7.x86_64 (server01) 11/08/2016 _x86_64_ (1 CPU)
02:58:27 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
02:58:28 PM dev8-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
02:58:28 PM dev253-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
02:58:28 PM dev253-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
02:58:28 PM dev253-2 0.00 0.00 0.00 0.00 115.31 0.00 0.00 99.41
02:58:28 PM dev253-3 0.00 0.00 0.00 0.00 394.64 0.00 0.00 99.41
Average: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
Average: dev8-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: dev253-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: dev253-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: dev253-2 0.00 0.00 0.00 0.00 115.31 0.00 0.00 99.41
Average: dev253-3 0.00 0.00 0.00 0.00 394.64 0.00 0.00 99.41
注意点
サイズに注意
configの修正で*/10
を*/1
に変更することで、10分間隔から1分間隔に変更できるが、その分ディスク容量を使用することとなる。(ただし、デフォルトの 10 分間隔で、500 KB/日 程度のため、1分間隔で1ヵ月貯めても100MBを超えない)
その他
- ログをテキスト化してグラフ化したりすることも可能。
Ksarでsarをグラフ化するのが便利すぎる