sarコマンドでシステムパフォーマンスを時系列で確認する方法|CPU・メモリ・ディスク統計の読み方と活用も

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtips, システム管理コマンド > sarコマンドでシステムパフォーマンスを時系列で確認する方法|CPU・メモリ・ディスク統計の読み方と活用も
「サーバーが遅い」と言われたが、今は正常に動いている。あの瞬間、何が起きていたのか調べる手段がない。
ログを見ても数値が残っていない。こんな悲しい思いをしたことはないでしょうか。

sarコマンドを使えば、CPU・メモリ・ディスク・ネットワークの負荷統計を過去に遡って確認できます。
RHEL 9 / Rocky Linux 9 / Ubuntu 24.04 LTS で動作確認済みです。

この記事では、sarコマンドの基本的な使い方から、実務で役立つ過去データの読み方、スワップ・ロードアベレージの確認、CSV出力による分析活用、よくあるトラブルの対処法まで解説します。

この記事のポイント

・ sar -u/-r/-d/-S/-q で CPU・メモリ・ディスク・スワップ・ロードを時系列で確認できる
・ sar -f /var/log/sa/saXX で過去の統計データをさかのぼって参照できる
・ sysstatパッケージのインストールとcron設定が前提条件(Ubuntu は ENABLED="true" が別途必要)
・ sadf -d でCSV出力してExcelでトレンド分析する使い方も実務で便利


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

sarコマンドとは?sysstatが提供するパフォーマンス記録の仕組み

sarはSystem Activity Reporterの略で、sysstatパッケージに含まれるコマンドです。

Linuxのカーネルが収集しているCPU・メモリ・ディスクI/O・ネットワークなどのパフォーマンス統計を、時系列で記録・参照できます。

topやvmstatは「今この瞬間」の値しか確認できませんが、sarは「昨日の15時ごろのCPU使用率」「先週のメモリ使用量の推移」を確認できます。障害の事後調査(ポストモーテム)やキャパシティプランニングに欠かせないツールです。

リアルタイム監視:topやvmstat
過去の履歴確認:sar(sysstat)

この使い分けが実務での基本です。sysstatをインストールすると、cronが10分おきにシステム統計を収集し、/var/log/sa/ 以下にバイナリ形式で保存します。デフォルトで28日分のデータが保持されます。

sysstatのインストールと有効化

1. sysstatパッケージをインストールする

RHEL系(Rocky Linux / AlmaLinux / RHEL)の場合:

# dnf install sysstat -y

Ubuntu / Debianの場合:

# apt install sysstat -y

2. sysstatサービスを有効化する

インストール直後はデータ収集が開始されていないため、サービスを有効化します。

# systemctl enable --now sysstat # 起動確認 # systemctl status sysstat

Ubuntuではsysstatの有効化設定が別途必要です。/etc/default/sysstatを編集してください。

# /etc/default/sysstatを編集 ENABLED="true" # sysstatサービスを再起動 # systemctl restart sysstat

3. データ収集の確認

インストール後、cronジョブとデータファイルの生成を確認します。RHEL系では /etc/cron.d/sysstat で確認できます。

# cat /etc/cron.d/sysstat # Run system activity accounting tool every 10 minutes */10 * * * * root /usr/lib64/sa/sa1 1 1 # Generate a daily summary of process accounting at 23:53 53 23 * * * root /usr/lib64/sa/sa2 -A

数分待ってから /var/log/sa/ にファイルが生成されているか確認します。

# ls /var/log/sa/ sa25 sa26 sar25 sar26

「sa日付数字」がバイナリデータ、「sar日付数字」がテキスト形式のレポートです。

sarの基本的な使い方

1. CPU使用率をリアルタイムで確認する

# sar -u 1 5 Linux 5.14.0-362.8.1.el9_3.x86_64 (web01.example.com) 2026-04-26 _x86_64_ (4 CPU) 12:00:01 CPU %user %nice %system %iowait %steal %idle 12:00:02 all 5.26 0.00 1.50 0.25 0.00 92.99 12:00:03 all 4.77 0.00 1.25 0.00 0.00 93.98 12:00:04 all 6.52 0.00 2.01 0.00 0.00 91.47 12:00:05 all 5.01 0.00 1.48 0.13 0.00 93.38 12:00:06 all 5.39 0.00 1.56 0.06 0.00 92.99 Average: all 5.39 0.00 1.56 0.09 0.00 92.96

`sar -u 1 5` は「1秒間隔で5回取得する」という意味です。末尾のAverageが全測定の平均値です。

各カラムの意味は以下のとおりです。
%user:ユーザープロセスがCPUを使った割合
%system:カーネルがCPUを使った割合
%iowait:ディスクI/O待ちによってCPUが空いた割合。高いとディスクがボトルネックの可能性があります
%idle:CPUが何もしていない割合

2. 主要オプション一覧

-u:CPU使用率の統計
-r:メモリ使用状況の統計
-b:ディスクI/Oの統計(tps・読み書き速度)
-d:ブロックデバイスごとのI/O統計(-p と組み合わせてデバイス名を人が読める形で表示)
-n DEV:ネットワークインターフェースの統計
-S:スワップ使用状況の統計
-q:ロードアベレージとプロセス数の統計
-A:すべての統計を一括表示
-f ファイルパス:指定したデータファイルを参照
-s HH:MM:SS:表示開始時刻を指定
-e HH:MM:SS:表示終了時刻を指定

過去のデータを参照する方法

1. 当日の統計を確認する

引数なしで実行すると、当日の統計が表示されます。

# sar -u # または明示的にファイルを指定する # sar -u -f /var/log/sa/sa26

2. 過去の日付のデータを参照する

saファイルを -f で指定することで、過去の日付のデータを確認できます。

# 25日のCPU統計を確認する # sar -u -f /var/log/sa/sa25 Linux 5.14.0-362.8.1.el9_3.x86_64 (web01.example.com) 2026-04-25 _x86_64_ (4 CPU) 00:00:01 CPU %user %nice %system %iowait %steal %idle 00:10:01 all 2.13 0.00 0.85 0.05 0.00 96.97 00:20:01 all 2.45 0.00 0.91 0.03 0.00 96.61 ... 15:00:01 all 72.35 0.00 18.42 3.21 0.00 6.02 15:10:01 all 83.12 0.00 14.97 2.88 0.00 0.03 15:20:01 all 25.14 0.00 5.43 0.95 0.00 68.48 ...

15時台に `%user` が急増しているのが確認できます。これが「遅かった時間帯」の証拠になります。

3. 時間帯を絞り込んで確認する

-s(start)と -e(end)オプションで表示範囲を絞れます。

# 昨日の14:00から16:00のデータだけ確認する # sar -u -f /var/log/sa/sa25 -s 14:00:00 -e 16:00:00

報告された障害発生時刻の前後30分を確認するとき、このオプションで素早く絞り込めます。

各統計の読み方と実務Tips

1. メモリ統計(-r)

# sar -r -f /var/log/sa/sa25 -s 15:00:00 -e 16:00:00 15:00:01 kbmemfree kbavail kbmemused %memused kbbuffers kbcached kbcommit %commit 15:00:01 125440 4250112 3874560 96.89 102400 2048000 8192000 102.40

`%memused` が90%を超えている場合はスワップへの圧力が高まっています。
`kbavail`(実際に利用可能なメモリ)が極端に少なければ、プロセスのメモリリーク調査が必要です。

2. ディスクI/O統計(-d)

-p オプションを組み合わせると、デバイス名が人が読める形(sda、nvme0n1など)で表示されます。

# sar -d -p -f /var/log/sa/sa25 -s 15:00:00 -e 16:00:00 15:00:01 DEV tps rkB/s wkB/s areq-sz aqu-sz await %util 15:00:01 sda 342.60 684.20 8192.00 26.01 8.34 243.56 98.40

tps:1秒あたりのI/Oリクエスト数
wkB/s:1秒あたりの書き込み量(KB)
%util:デバイスの使用率。80%を超えたらI/Oボトルネックの目安
await:I/Oリクエストの平均待ち時間(ms)。高いほど遅延が大きい

`bwrtn/s`(ブロック数ベースで確認したい場合は -b オプション)が継続して大きければ、大量書き込み処理を疑います。

3. ネットワーク統計(-n DEV)

# sar -n DEV -f /var/log/sa/sa25 -s 15:00:00 -e 15:30:00 15:00:01 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 15:00:01 eth0 520.33 480.12 62.45 48.12 0.00 0.00 0.00

`rxkB/s`(受信)と `txkB/s`(送信)で帯域の使用量を確認できます。
NICの上限に近づいている場合は、トラフィック急増かDDoS攻撃の可能性があります。

4. スワップ使用量(-S)

# sar -S -f /var/log/sa/sa25 -s 15:00:00 -e 16:00:00 15:00:01 kbswpfree kbswpused %swpused kbswpcad %swpcad 15:00:01 4194304 0 0.00 0 0.00 15:10:01 2097152 2097152 50.00 524288 25.00 15:20:01 524288 3670016 87.50 917504 25.00

スワップが急増している時間帯は、-r オプションのメモリ使用量と併せて確認しましょう。OOM Killerが発動した可能性があれば /var/log/messages で詳細を確認できます。

5. ロードアベレージ(-q)

# sar -q -f /var/log/sa/sa25 -s 15:00:00 -e 16:00:00 15:00:01 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked 15:00:01 1 412 0.12 0.15 0.18 0 15:10:01 48 687 12.34 10.21 8.45 5

`ldavg-1` がCPU数(4コアなら4.0)を大きく超えている時間帯は実質的なCPU飽和状態です。この時間帯のCPU統計(-u)やプロセス一覧(ps auxf)と照合して原因を特定します。

6. すべての統計を一括確認(-A)

障害調査の最初の一歩として、`-A` で全リソースのデータを一覧取得してからあとで絞り込む方法が効率的です。

# 昨日の全統計をlessで確認する # sar -A -f /var/log/sa/sa25 | less # 特定時間帯に絞り込む # sar -A -f /var/log/sa/sa25 -s 14:00:00 -e 16:00:00

CSV出力とExcel分析(sadfコマンド)

sarのデータをCSVやJSONに変換して外部ツールで分析できます。sadfコマンドを使います。

# CSV形式で出力(Excelで開ける) # sadf -d /var/log/sa/sa25 -- -u > /tmp/cpu_sa25.csv # JSON形式で出力 # sadf -j /var/log/sa/sa25 -- -u > /tmp/cpu_sa25.json # メモリ統計をCSVで出力 # sadf -d /var/log/sa/sa25 -- -r > /tmp/mem_sa25.csv

`--` の後sarオプションを指定することで、取得したいリソース種別を切り替えられます。
キャパシティプランニングでは、1週間分のCSVをExcelに取り込んでCPUやメモリのトレンドをグラフ化する使い方が便利です。

トラブルシュート・エラー対処

「Cannot open /var/log/sa/saXX」が出た時の対処法

対象日付のファイルが存在しない場合に発生します。以下を確認してください。

# sysstatサービスの状態を確認 # systemctl status sysstat # sysstatのcronジョブを確認 # cat /etc/cron.d/sysstat # 手動でデータ収集を実行(テスト用) # /usr/lib64/sa/sa1 1 1 # ls -l /var/log/sa/

cronジョブが無効になっている場合は、sysstatサービスの再有効化が必要です。
デフォルトでは28日分のデータが保持されます。それ以前のデータは取得できません。

「Requested activities not available」が出た時の対処法

古いsaファイルのバージョンと現在のsarコマンドのバージョンが合わない場合に発生します。

# sysstatのバージョン確認 # sar --version sysstat version 12.5.4

OSのメジャーバージョンアップ後にsysstatを再インストールした場合、古いsaファイルは読めなくなることがあります。

Ubuntuでデータが収集されない時の対処法

# /etc/default/sysstatの確認 # grep ENABLED /etc/default/sysstat ENABLED="false" ← この場合は "true" に変更してサービスを再起動する # sed -i 's/ENABLED="false"/ENABLED="true"/' /etc/default/sysstat # systemctl restart sysstat

表示データがすべて0になる(RHEL系)

sysstatサービスは起動しているが sa1 の実行パスが合っていない場合があります。

# sa1の場所を確認 # rpm -ql sysstat | grep sa1 /usr/lib64/sa/sa1

/etc/cron.d/sysstat 内のパスと一致しているか確認してください。

本記事のまとめ

やりたいこと コマンド
CPU使用率をリアルタイムで確認する sar -u 1 10
当日のCPU統計をすべて表示する sar -u
25日のデータを確認する sar -u -f /var/log/sa/sa25
15時から16時のデータに絞る sar -u -f /var/log/sa/sa25 -s 15:00:00 -e 16:00:00
メモリ使用状況を確認する sar -r -f /var/log/sa/sa25
ディスクI/Oをデバイス名付きで確認する sar -d -p -f /var/log/sa/sa25
ネットワーク統計を確認する sar -n DEV -f /var/log/sa/sa25
スワップ使用量を確認する sar -S -f /var/log/sa/sa25
ロードアベレージを確認する sar -q -f /var/log/sa/sa25
全リソースを一覧確認する sar -A -f /var/log/sa/sa25
CSV出力で分析ツールへ渡す sadf -d /var/log/sa/sa25 -- -u > cpu.csv
sarを使いこなせると、「何かあった後に調べる」という事後分析の精度が飛躍的に向上します。topやvmstatで見えない「あの時間帯に何が起きていたか」を証拠とともに示せるのは、サーバー管理者にとって大きな武器です。

サーバーの性能問題を調査する際は、iostatやvmstatと並行してsarのログを確認する習慣をつけてください。
継続的なデータ収集がない環境では事後調査ができないため、まずsysstatのインストールと有効化から始めることをおすすめします。

システム管理のコマンドをもっと体系的に学びたい方は、systemd-analyze で起動時間計測Linux ポート確認の全コマンドの記事も参考にしてください。

「サーバーが遅い」と言われた時に、データで説明できますか?

sarのようなパフォーマンス監視ツールは、障害の事後証明だけでなく予防保全にも使えます。
ネットの古い情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。