sarコマンドについてまとめる
システム・アクティビティー情報の収集、報告、保管を行うことができるsarコマンドについてまとめていきます。
LPIC201対策です。この辺のコマンドなかなか覚えられない。
特徴
- CPU, メモリ, ディスク, Swap, ネットワークなどに関する情報が取得できます
- 定期的にログに書き込むことで、システムの統計情報のレポートを得ることができます
- リアルタイムの情報も取得することができます
インストール
sysstatパッケージに含まれています。
ubuntuの場合は、apt
sudo apt install sysstat
centosの場合は、 yumでインストールすることができます。
sudo yum install sysstat
コマンド
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にサマリーを生成するようになっています。