sarコマンドについてまとめる

システム・アクティビティー情報の収集、報告、保管を行うことができるsarコマンドについてまとめていきます。

LPIC201対策です。この辺のコマンドなかなか覚えられない。

特徴

  • CPU, メモリ, ディスク, Swap, ネットワークなどに関する情報が取得できます
  • 定期的にログに書き込むことで、システムの統計情報のレポートを得ることができます
  • リアルタイムの情報も取得することができます

インストール

sysstatパッケージに含まれています。

ubuntuの場合は、apt

sudo apt install sysstat

centosの場合は、 yumでインストールすることができます。

sudo yum install sysstat

コマンド

  • sar・・・収集データを表示します
  • sadc・・・システム状況を収集し、ログに書き込みます
  • sadf・・・ログをTVS, XML, JSON等で出力します

sarコマンドの使い方

sar [ オプション ] [ <時間間隔> [ <カウント数> ] ]

リアルタイムの情報が見たいときは、表示間隔を指定します

例:

sar -A 1 10

ログファイルから過去の統計情報を見たいときは -f を指定します

例:

sar -A -f /var/log/sysstat/sa01

ログファイル

sadcによるログは /var/log/sa/saXX /var/log/sysstat/saXX などに格納されます。 XX はログを取得したときの日付が入ります

システム状況を取得する

全部ではありませんが、I/O, ネットワーク, メモリ・スワップに関する情報を見ていきます。

I/O と転送率の状況

-b オプションで確認することができます。

# sar -b

Linux 4.13.0-46-generic (hoge.example.com)         2019年10月06日  _x86_64_        (2 CPU)

14:42:32     LINUX RESTART      (2 CPU)

14時45分02秒       tps      rtps      wtps   bread/s   bwrtn/s
14時55分01秒     91.63     82.72      8.91   2884.47   1503.08
15時05分01秒      3.09      2.14      0.96     93.56     15.57
15時15分01秒    172.29    166.51      5.78   5972.43   2431.45
平均値:      88.99     83.77      5.22   2982.90   1316.42

(以下省略)
  • tps・・・I/O転送リクエスト/秒
  • rtps・・・ディスク読み込みリクエスト/秒
  • wtps・・・ディスク書き込みリクエスト/秒
  • bread/s・・・ディスク読み込みブロック数/秒
  • bwrtn/s・・・ディスク書き込みブロック数/秒

ネットワーク関連の情報を表示する

-n DEV オプションで確認することができます。

# sar -n DEV
Linux 4.13.0-46-generic (hoge.example.com)         2019年10月06日  _x86_64_        (2 CPU)

14:42:32     LINUX RESTART      (2 CPU)

14時45分02秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil
14時55分01秒 eth0      2.74      2.58      1.40      0.48      0.00      0.00      0.00      0.00
14時55分01秒        lo      0.32      0.32      0.04      0.04      0.00      0.00      0.00      0.00
15時05分01秒 eth0      2.55      2.20      1.17      0.42      0.00      0.00      0.00      0.00
15時05分01秒        lo      0.37      0.37      0.04      0.04      0.00      0.00      0.00      0.00
15時15分01秒 eth0      4.42      3.50      3.30      0.64      0.00      0.00      0.00      0.00
15時15分01秒        lo      0.47      0.47      0.05      0.05      0.00      0.00      0.00      0.00
平均値:  eth0      3.24      2.76      1.96      0.51      0.00      0.00      0.00      0.00
平均値:         lo      0.39      0.39      0.04      0.04      0.00      0.00      0.00      0.00

(以下省略)
  • IFACE・・・ネットワークインターフェース名
  • rxpck/s・・・受信パケット数/秒
  • txpck/s・・・送信パケット数/秒
  • rxkB/s・・・受信キロバイト数/秒
  • txkB/s・・・送信キロバイト数/秒
  • rxcmp/s・・・圧縮パケットの受信バイト数/秒
  • txcmp/s・・・圧縮パケットの送信バイト数/秒
  • rxmcst/s・・・マルチキャストパケットの受信パケット数/秒

ネットワーク関連のエラー情報を表示する

-n EDEV オプションで確認することができます。

# sar -n EDEV
Linux 4.13.0-46-generic (hoge.example.com)         2019年10月06日  _x86_64_        (2 CPU)

14:42:32     LINUX RESTART      (2 CPU)

14時45分02秒     IFACE   rxerr/s   txerr/s    coll/s  rxdrop/s  txdrop/s  txcarr/s  rxfram/s  rxfifo/s  txfifo/s
14時55分01秒 eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
14時55分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時05分01秒 eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時05分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時15分01秒 eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15時15分01秒        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
平均値:         lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

(以下省略)
  • IFACE・・・ネットワークインターフェース名
  • rxerr/s・・・受信エラーパケット数/秒
  • txerr/s・・・送信エラーパケット数/秒
  • coll/s・・・衝突パケット数/秒
  • rxdrop/s・・・バッファ不足による受信取りこぼしパケット数/秒
  • txdrop/s・・・バッファ不足による送信取りこぼしパケット数/秒
  • txcarr/s・・・送信時のキャリアエラーパケット数/秒
  • rxfram/s・・・受信時のフレーム同期エラーパケット数/秒
  • rxfifo/s・・・受信時のFIFOオーバーランパケット数/秒
  • txfifo/s・・・送信時のFIFOオーバーランパケット数/秒

メモリとスワップ関連の情報を表示する

-r オプションで確認することができます。

# sar -r
Linux 4.13.0-46-generic (hoge.example.com)         2019年10月06日  _x86_64_        (2 CPU)

14:42:32     LINUX RESTART      (2 CPU)

14時45分02秒 kbmemfree   kbavail kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
14時55分01秒    217156    475888   1685184     88.58     25292    213340   4158184    126.21    868704    381576         8
15時05分01秒    131616    416004   1770724     93.08     30996    239416   4213760    127.90    930380    403076       220
15時15分01秒    201852    653164   1700488     89.39     34228    394488   4252836    129.09    866132    391696       164
平均値:     183541    515019   1718799     90.35     30172    282415   4208260    127.73    888405    392116       131

(以下省略)
  • kbmemfree・・・空きメモリ(KB)
  • kbmemused・・・使用中メモリ(KB)
  • %memused・・・メモリの使用率
  • kbbuffers・・・バッファの使用量(KB)
  • kbcached・・・キャッシュの使用量(KB)
  • kbcommit・・・現在必要とされているメモリ総量(KB)
  • %commit・・・メモリ総量(RAM+スワップ)における必要メモリの割合(%)
  • kbactive・・・activeなメモリ(KB)
  • kbinact・・・inactiveなメモリ(KB)
  • kbdirty・・・dirtyなメモリ(KB)

sadfコマンド

sadfコマンドで、ログをTVS, XML, JSONで出力することができます。

使い方: sadf [ オプション ] [ <時間間隔> [ <カウント数> ] ] [ <データファイル 名> | -[0-9]+ ]

-- 以降はsarのオプションを指定します。

例:(一部抜粋)

# sadf -x -t -- -n EDEV

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sysstat PUBLIC "DTD v3.4 sysstat //EN"
"http://pagesperso-orange.fr/sebastien.godard/sysstat-3.4.dtd">
<sysstat
xmlns="http://pagesperso-orange.fr/sebastien.godard/sysstat"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://pagesperso-orange.fr/sebastien.godard sysstat.xsd">
        <sysdata-version>3.4</sysdata-version>
        <host nodename="hoge.example.com">
                <sysname>Linux</sysname>
                <release>4.13.0-46-generic</release>
                <machine>x86_64</machine>
                <number-of-cpus>2</number-of-cpus>
                <file-date>2019-10-06</file-date>
                <file-utc-time>05:42:32</file-utc-time>
                <statistics>
                        <timestamp date="2019-10-06" time="17:05:01" utc="0" interval="600">
                                <network per="second">
                                        <net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
                                        <net-edev iface="eth0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
                                </network>
                        </timestamp>
                </statistics>
                <restarts>
                        <boot date="2019-10-06" time="14:42:32" utc="0" cpu_count="2"/>
                        <boot date="2019-10-06" time="15:24:20" utc="0" cpu_count="2"/>
                </restarts>
        </host>
</sysstat>

crontab

統計情報を定期的に取得するために、cronで取得するようになっています。

# cat /etc/cron.d/sysstat

# run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib/sa/sa1 1 1
# generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib/sa/sa2 -A

/usr/lib/sa/sa1, /usr/lib/sa/sa2 は、それぞれシェルスクリプトで、以下の用途で実行されます。

  • sa1・・・sadcを実行し、バイナリの統計情報を生成する
  • sa2・・・sarコマンドを実行し、テキストデータを生成する

この場合、10分おきに統計情報を生成し、23:53にサマリーを生成するようになっています。

参考

IBM Knowledge Center

IBM Knowledge Center

sysstatパッケージに含まれる様々なコマンドでシステム状態を確認 | Check!Site