言語
日本語
English

Caution

お使いのブラウザはJavaScriptが無効になっております。
当サイトでは検索などの処理にJavaScriptを使用しています。
より快適にご利用頂くため、JavaScriptを有効にしたうえで当サイトを閲覧することをお勧めいたします。

Linux & Mac & Bashコマンド辞典

  1. トップページ
  2. Linux & Mac & Bashコマンド辞典
  3. sar / sysstat(パフォーマンス記録・分析)

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
#   → すべての統計情報をまとめて表示します(出力量が多いため絞り込みと組み合わせて使用します)

構文一覧

オプション説明
-uCPU全体の使用率(%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 TCPTCPコネクション統計(アクティブ・パッシブ接続数・セグメント数等)を表示します。
-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・ネットワークなど多岐にわたるシステム統計を定期収集し、過去のデータをファイルから時系列で読み出せる点が最大の特徴です。systemctlsysstat サービスを有効化するとデフォルトで10分ごとにデータが /var/log/sa/saDD へ蓄積されます。障害発生後の事後分析では -f でファイルを指定し -s/-e で時刻範囲を絞ることで、問題発生時刻の統計を効率よく絞り込めます。リアルタイム監視にはインターバルと回数を指定して実行しますが、瞬時の値を対話的に監視したい場合は journalctl と組み合わせてログと突き合わせるとより効果的です。長期的なトレンド分析が必要な場合は収集データを -o で保存しておき、後から -f で読み出す運用が推奨されます。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。