sarコマンドによるLinuxのリソース情報取得方法

sarコマンドとは?

LinuxのHWリソース情報を取得できるコマンドです。
CPU、メモリ、ディスク、ネットワークといった一通りの情報が取得できます。
(以下、CentOS7.6前提で書きます。)

事前準備

sarがインストールされていない場合は下記のパッケージをインストールしましょう。

# yum install sysstat

情報取得方法

基本的にはLinux上でsarコマンドを実行するだけです。
その際、オプションを使うことで取得したいリソースを指定できますが、私が現場で良く使うオプションを紹介します。

CPU情報

"-u"を指定するとCPU使用率の情報を取得できます。

コマンド
# sar -u [取得間隔(秒)] [取得回数]
実行例
# sar -u 1 3 | egrep -v 'Average:'
Linux 3.10.0-957.el7.x86_64 (localhost.localdomain)     04/06/2019      _x86_64_        (2 CPU)

03:43:42 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
03:43:43 AM     all      0.50      0.00      0.00      0.00      0.00     99.50
03:43:44 AM     all      0.00      0.00      0.50      0.00      0.00     99.50
03:43:45 AM     all      0.00      0.00      0.00      0.00      0.00    100.00

メモリ情報

コマンド

"-r"を指定するとメモリ使用率の情報を取得できます。

# sar -r [取得間隔(秒)] [取得回数]
実行例
# sar -r 1 3 | egrep -v 'Average:'
Linux 3.10.0-957.el7.x86_64 (localhost.localdomain)     04/06/2019      _x86_64_        (2 CPU)

03:42:46 AM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
03:42:47 AM   1157720    712744     38.11      2244    502232    242848      6.12    277684    291216         0
03:42:48 AM   1157720    712744     38.11      2244    502232    242848      6.12    277688    291216         0
03:42:49 AM   1157720    712744     38.11      2244    502232    242848      6.12    277688    291216         0

ディスク情報

"-d -p"を指定するとディスクごとのIO情報を取得できます。

コマンド
# sar -d -p [取得間隔(秒)] [取得回数]
実行例
# sar -d -p 1 3 | egrep -v 'Average:'
Linux 3.10.0-957.el7.x86_64 (localhost.localdomain)     04/06/2019      _x86_64_        (2 CPU)

03:41:21 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
03:41:22 AM       sda      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:41:22 AM centos-root      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:41:22 AM centos-swap      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

03:41:22 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
03:41:23 AM       sda      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:41:23 AM centos-root      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:41:23 AM centos-swap      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

03:41:23 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
03:41:24 AM       sda      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:41:24 AM centos-root      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:41:24 AM centos-swap      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

ネットワーク情報

"-n DEV"を指定するとネットワークインタフェースごとのIO情報を取得できます。

コマンド
# sar -n DEV [取得間隔(秒)] [取得回数]
実行例
# sar -n DEV 1 3 | egrep -v 'lo|Average:'

03:51:57 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
03:51:58 AM      eth0      3.00      0.00      1.12      0.00      0.00      0.00      2.00

03:51:58 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
03:51:59 AM      eth0      6.00      1.00      2.58      0.32      0.00      0.00      5.00

03:51:59 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
03:52:00 AM      eth0      2.00      1.00      0.57      0.32      0.00      0.00      1.00

取得項目の詳細

詳しく紹介してくれている方がいるので、以下を参照してみてください。
sarコマンドの使い方
sarコマンドでLinuxサーバのシステムモニタリングを行う方法

なぜ実行例ではegrepをかけているのか

普通にコマンド出力するとAverage(平均値)の行が入るのですが、それを除外するためです。sarの出力結果をExcelで加工する際に邪魔になるので出力の段階で省いてます。私の場合は最終的にピボット表で合計や平均を出すことが多いので尚更不要です。
あとネットワークのコマンドでloを除外しているのはループバックは見る必要がないことが多いためです。


以上。