ログを見ても数値が残っていない。こんな悲しい思いをしたことはないでしょうか。
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でトレンド分析する使い方も実務で便利
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
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
# apt install sysstat -y
2. sysstatサービスを有効化する
インストール直後はデータ収集が開始されていないため、サービスを有効化します。# systemctl enable --now sysstat # 起動確認 # systemctl status 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
# ls /var/log/sa/ sa25 sa26 sar25 sar26
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
各カラムの意味は以下のとおりです。
・%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 ...
3. 時間帯を絞り込んで確認する
-s(start)と -e(end)オプションで表示範囲を絞れます。# 昨日の14:00から16:00のデータだけ確認する # sar -u -f /var/log/sa/sa25 -s 14:00:00 -e 16:00:00
各統計の読み方と実務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
`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
・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
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
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
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
キャパシティプランニングでは、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/
デフォルトでは28日分のデータが保持されます。それ以前のデータは取得できません。
「Requested activities not available」が出た時の対処法
古いsaファイルのバージョンと現在のsarコマンドのバージョンが合わない場合に発生します。# sysstatのバージョン確認 # sar --version sysstat version 12.5.4
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
本記事のまとめ
| やりたいこと | コマンド |
|---|---|
| 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 |
サーバーの性能問題を調査する際は、iostatやvmstatと並行してsarのログを確認する習慣をつけてください。
継続的なデータ収集がない環境では事後調査ができないため、まずsysstatのインストールと有効化から始めることをおすすめします。
システム管理のコマンドをもっと体系的に学びたい方は、systemd-analyze で起動時間計測やLinux ポート確認の全コマンドの記事も参考にしてください。
「サーバーが遅い」と言われた時に、データで説明できますか?
sarのようなパフォーマンス監視ツールは、障害の事後証明だけでなく予防保全にも使えます。
ネットの古い情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:getoptsコマンドでbashスクリプトの引数を処理する方法|オプション解析と実践例も
- 前のページへ:nohupコマンドでSSH切断後もコマンドを実行し続ける方法|バックグラウンド実行とログ保存の実践例も
- この記事の属するカテゴリ:Linuxtips・システム管理コマンドへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます