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を除外しているのはループバックは見る必要がないことが多いためです。
以上。