sar / sysstat(パフォーマンス記録・分析)
『sar』は sysstat パッケージに含まれるパフォーマンス記録・分析ツールです。CPU・メモリ・I/O・ネットワークなどのシステム統計を時系列で収集し、過去のデータをファイルから読み出せるため、深夜に発生した高負荷や翌朝に気づいたサーバー障害の事後分析に活用できます。定期収集は systemd タイマーまたは cron で自動化されており、収集データは /var/log/sa/ 以下に日付単位で保存されます。
構文
# -----------------------------------------------
# sar の基本構文
# -----------------------------------------------
# sar [オプション] [インターバル秒数 [回数]]
# → インターバルと回数を省略するとデフォルト収集ファイルの統計を表示します
# 例: sar -u 1 5
# → CPU使用率を1秒間隔で5回リアルタイム表示します
# sar [オプション] -f {ファイルパス}
# → 保存済みの収集ファイル(/var/log/sa/saDD)から過去データを読み込みます
# 例: sar -u -f /var/log/sa/sa20
# sar [オプション] -s {開始時刻} -e {終了時刻}
# → 時刻範囲を絞って統計を表示します(-f と組み合わせて使用します)
# 例: sar -u -f /var/log/sa/sa20 -s 14:00:00 -e 16:00:00
# -----------------------------------------------
# CPU 統計
# -----------------------------------------------
# sar -u
# → CPU全体の使用率を表示します(%user / %system / %idle 等)
# 例: sar -u 1 10
# sar -u ALL
# → ゲストCPU使用率を含む詳細なCPU統計を表示します
# sar -P {CPU番号|ALL}
# → 特定のCPUコアまたは全コアごとの統計を表示します
# 例: sar -P ALL 1 3
# -----------------------------------------------
# メモリ統計
# -----------------------------------------------
# sar -r
# → メモリ使用量(kbmemfree / kbmemused / %memused / kbbuffers / kbcached)を表示します
# 例: sar -r 1 5
# sar -r ALL
# → スラブキャッシュなどを含む詳細なメモリ統計を表示します
# sar -W
# → スワップ使用量(kbswpfree / kbswpused / %swpused)を表示します
# -----------------------------------------------
# I/O 統計
# -----------------------------------------------
# sar -b
# → ブロックI/Oの転送レート(tps / rtps / wtps / bread/s / bwrtn/s)を表示します
# sar -d
# → デバイスごとのI/O統計(tps / %util / await 等)を表示します
# 例: sar -d -p 1 5 (-p でデバイス名を人間が読みやすい形式で表示します)
# -----------------------------------------------
# ネットワーク統計
# -----------------------------------------------
# sar -n DEV
# → ネットワークインターフェースごとの送受信パケット数・バイト数を表示します
# 例: sar -n DEV 1 5
# sar -n EDEV
# → ネットワークエラー統計(rxerr/s / txerr/s / rxdrop/s 等)を表示します
# sar -n SOCK
# → ソケット使用数(TCP / UDP / RAW / フラグメント)を表示します
# sar -n TCP
# → TCPコネクション統計(active/s / passive/s / iseg/s / oseg/s)を表示します
# -----------------------------------------------
# ロードアベレージ・タスク統計
# -----------------------------------------------
# sar -q
# → ロードアベレージ(runq-sz / plist-sz / ldavg-1 / ldavg-5 / ldavg-15)を表示します
# sar -A
# → すべての統計情報をまとめて表示します(出力量が多いため絞り込みと組み合わせて使用します)
構文一覧
| オプション | 説明 |
|---|---|
-u | CPU全体の使用率(%user・%system・%iowait・%idle 等)を表示します。 |
-u ALL | ゲストCPUを含む詳細なCPU統計を表示します。 |
-P {番号|ALL} | 指定したCPUコアごとの使用率を表示します。ALL で全コアを一覧表示します。 |
-r | メモリ使用量(空き・使用・バッファ・キャッシュ等)を表示します。 |
-r ALL | スラブキャッシュなどを含む詳細なメモリ統計を表示します。 |
-W | スワップ領域の使用量と使用率を表示します。 |
-b | ブロックI/Oの転送レート(tps・読み書きレート等)を表示します。 |
-d | デバイスごとのI/O統計(tps・%util・await 等)を表示します。-p で名前を読みやすくできます。 |
-n DEV | ネットワークインターフェースごとの送受信パケット数・バイト数を表示します。 |
-n EDEV | ネットワークエラー(受信エラー・送信エラー・ドロップ等)を表示します。 |
-n SOCK | ソケット使用数(TCP・UDP・RAW・フラグメント)を表示します。 |
-n TCP | TCPコネクション統計(アクティブ・パッシブ接続数・セグメント数等)を表示します。 |
-q | ロードアベレージ(1分・5分・15分)とランキュー長を表示します。 |
-A | すべての統計情報をまとめて表示します。 |
-f {ファイル} | 保存済みの収集ファイル(/var/log/sa/saDD)から過去データを読み込みます。 |
-s {HH:MM:SS} | 表示する統計データの開始時刻を指定します。-f と組み合わせて使用します。 |
-e {HH:MM:SS} | 表示する統計データの終了時刻を指定します。-f と組み合わせて使用します。 |
-o {ファイル} | リアルタイム収集データをバイナリ形式でファイルに保存します。 |
-h | 人間が読みやすい単位(K・M・G)で値を表示します。 |
使用例
CPU使用率の過去ログ確認(障害発生日の事後分析)
# ----------------------------------------------- # 碇シンジのサーバーで昨日の高負荷原因を調査します # ----------------------------------------------- # /var/log/sa/ 以下に日付単位でログが保存されています # ファイル名の数字部分は日付の日(DD)です ls /var/log/sa/ # 25日(sa25)のCPU使用率を時系列で確認します sar -u -f /var/log/sa/sa25 # 負荷が高かったと思われる14:00〜16:00に絞って確認します sar -u -f /var/log/sa/sa25 -s 14:00:00 -e 16:00:00
実行するコマンドは次の通りです。
$ sar -u -f /var/log/sa/sa25 -s 14:00:00 -e 16:00:00 Linux 5.14.0-284.el9.x86_64 (nerv-core01) 03/25/2026 _x86_64_ (4 CPU) 14:00:01 AM CPU %user %system %iowait %steal %idle 14:10:01 AM all 8.23 3.41 0.52 0.00 87.84 14:20:01 AM all 12.67 4.89 0.71 0.00 81.73 14:30:01 AM all 43.15 18.22 1.03 0.00 37.60 14:40:01 AM all 91.84 31.57 2.14 0.00 -25.55 14:50:01 AM all 89.42 29.38 1.98 0.00 -0.78 15:00:01 AM all 15.33 5.61 0.63 0.00 78.43 15:10:01 AM all 7.88 3.12 0.47 0.00 88.53 Average: all 38.36 13.74 1.07 0.00 46.83
実装例は次の通りです。
# CPUコアごとの使用率を確認して、特定コアへの偏りがないか調べます sar -P ALL -f /var/log/sa/sa25 -s 14:30:00 -e 15:00:00
実行するコマンドは次の通りです。
$ sar -P ALL -f /var/log/sa/sa25 -s 14:30:00 -e 15:00:00 Linux 5.14.0-284.el9.x86_64 (nerv-core01) 03/25/2026 _x86_64_ (4 CPU) 14:30:01 AM CPU %user %system %iowait %steal %idle 14:30:01 AM 0 99.00 98.00 0.00 0.00 -97.00 14:30:01 AM 1 2.13 1.04 0.00 0.00 96.83 14:30:01 AM 2 1.94 0.88 0.00 0.00 97.18 14:30:01 AM 3 2.07 0.97 0.00 0.00 96.96 Average: 0 94.21 89.12 0.00 0.00 -83.33 Average: 1 2.04 0.99 0.00 0.00 96.97
メモリ使用量の時系列確認
# ----------------------------------------------- # 綾波レイのサーバーでメモリ増加傾向を調査します # ----------------------------------------------- # 25日のメモリ統計を確認します # kbmemfree: 空きメモリ(KB)/ kbmemused: 使用中(KB) # %memused: 使用率 / kbbuffers: バッファ / kbcached: ページキャッシュ sar -r -f /var/log/sa/sa25 # スワップ使用量も合わせて確認します sar -W -f /var/log/sa/sa25
実行するコマンドは次の通りです。
$ sar -r -f /var/log/sa/sa25 Linux 5.14.0-284.el9.x86_64 (rei-unit00) 03/25/2026 _x86_64_ (4 CPU) 00:00:01 AM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit 02:00:01 AM 3201448 4987256 60.92 124388 2341204 6782340 41.23 04:00:01 AM 2987312 5201392 63.53 135742 2489312 6998124 42.56 06:00:01 AM 2341208 5847496 71.38 148912 2654108 7412680 45.09 08:00:01 AM 1452304 6736400 82.25 158224 2701440 7998240 48.64 10:00:01 AM 512440 7676264 93.74 162104 2723888 9112320 55.42 10:10:01 AM 87312 8101392 98.93 163440 2731200 9512040 57.86 10:20:01 AM 12480 8176224 99.85 163920 2734112 9601240 58.40 Average: 1824929 7365788 89.89 151819 2620783 8174200 49.64 $ sar -W -f /var/log/sa/sa25 10:00:01 AM pswpin/s pswpout/s 10:10:01 AM 45.32 102.87 10:20:01 AM 312.44 589.21
ネットワーク統計の確認
# ----------------------------------------------- # 惣流アスカのサーバーでネットワーク負荷を確認します # ----------------------------------------------- # ネットワークインターフェースごとの送受信統計を確認します # rxpck/s: 受信パケット数/秒 / txpck/s: 送信パケット数/秒 # rxkB/s: 受信バイト数/秒 / txkB/s: 送信バイト数/秒 sar -n DEV -f /var/log/sa/sa25 -s 14:30:00 -e 15:00:00 # ネットワークエラーが発生していないか確認します sar -n EDEV -f /var/log/sa/sa25 -s 14:30:00 -e 15:00:00
実行するコマンドは次の通りです。
$ sar -n DEV -f /var/log/sa/sa25 -s 14:30:00 -e 15:00:00 Linux 5.14.0-284.el9.x86_64 (asuka-unit02) 03/25/2026 _x86_64_ (4 CPU) 14:30:01 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 14:30:01 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 14:30:01 AM eth0 4521.34 3892.12 5842.31 4124.67 0.00 0.00 0.00 14:40:01 AM eth0 4389.22 3741.88 5672.44 3988.12 0.00 0.00 0.00 14:50:01 AM eth0 4612.78 3934.45 5924.89 4201.34 0.00 0.00 0.00 Average: eth0 4507.78 3856.15 5813.21 4104.71 0.00 0.00 0.00 $ sar -n EDEV -f /var/log/sa/sa25 -s 14:30:00 -e 15:00:00 14:30:01 AM IFACE rxerr/s txerr/s coll/s rxdrop/s txdrop/s 14:30:01 AM eth0 0.00 0.00 0.00 0.00 0.00 Average: eth0 0.00 0.00 0.00 0.00 0.00
リアルタイム収集とロードアベレージの確認
# ----------------------------------------------- # 葛城ミサトのサーバーでリアルタイム監視を行います # ----------------------------------------------- # CPU使用率をリアルタイムで1秒間隔・10回表示します sar -u 1 10 # ロードアベレージを2秒間隔・5回表示します # runq-sz: 実行待ちプロセス数 / plist-sz: プロセス・スレッド総数 # ldavg-1: 1分平均 / ldavg-5: 5分平均 / ldavg-15: 15分平均 sar -q 2 5 # 収集データを今日のファイルに保存しながら表示します(加持リョウジによる定点観測) sar -u -o /tmp/kaji_monitor_$(date +%Y%m%d).dat 5 12
実行するコマンドは次の通りです。
$ sar -q 2 5 Linux 5.14.0-284.el9.x86_64 (misato-nerv) 03/25/2026 _x86_64_ (4 CPU) 03:45:12 PM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked 03:45:14 PM 1 412 0.24 0.31 0.28 0 03:45:16 PM 2 413 0.24 0.31 0.28 0 03:45:18 PM 1 413 0.24 0.31 0.28 0 03:45:20 PM 0 413 0.22 0.30 0.28 0 03:45:22 PM 1 413 0.22 0.30 0.28 0 Average: 1 413 0.23 0.31 0.28 0
sysstat の有効化とデータ収集設定
# ----------------------------------------------- # sysstat パッケージをインストールして自動収集を有効化します # ----------------------------------------------- # RHEL / AlmaLinux / Rocky Linux 系 sudo dnf install sysstat # Debian / Ubuntu 系 sudo apt install sysstat # sysstat サービスを起動して自動起動を有効にします # systemd タイマー(sysstat.service + sysstat-collect.timer)が # デフォルトで10分ごとにデータを収集します sudo systemctl enable --now sysstat # 収集状況を確認します sudo systemctl status sysstat # 収集済みファイルを確認します(DD は日付の日部分) ls -lh /var/log/sa/
実行するコマンドは次の通りです。
$ ls -lh /var/log/sa/ total 8.2M -rw-r--r-- 1 root root 412K Mar 23 23:50 sa23 -rw-r--r-- 1 root root 412K Mar 24 23:50 sa24 -rw-r--r-- 1 root root 209K Mar 25 15:50 sa25 -rw-r--r-- 1 root root 412K Mar 23 23:50 sar23 -rw-r--r-- 1 root root 412K Mar 24 23:50 sar24
概要
『sar』(System Activity Reporter)は sysstat パッケージが提供するパフォーマンス記録ツールです。CPU・メモリ・I/O・ネットワークなど多岐にわたるシステム統計を定期収集し、過去のデータをファイルから時系列で読み出せる点が最大の特徴です。systemctl で sysstat サービスを有効化するとデフォルトで10分ごとにデータが /var/log/sa/saDD へ蓄積されます。障害発生後の事後分析では -f でファイルを指定し -s/-e で時刻範囲を絞ることで、問題発生時刻の統計を効率よく絞り込めます。リアルタイム監視にはインターバルと回数を指定して実行しますが、瞬時の値を対話的に監視したい場合は journalctl と組み合わせてログと突き合わせるとより効果的です。長期的なトレンド分析が必要な場合は収集データを -o で保存しておき、後から -f で読み出す運用が推奨されます。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。