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

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

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

この記事では、sarコマンドの基本的な使い方から、実務で役立つ過去データの読み方、コアごとのCPU分析、スワップ・ロードアベレージの確認、高負荷インシデントの事後調査手順、CSV出力による分析活用、保存日数の調整方法、よくあるトラブルの対処法まで解説します。

この記事のポイント

・sar -u/-r/-b/-d/-S/-q で CPU・メモリ・ディスク・スワップ・ロードを時系列で確認できる
・sar -f /var/log/sa/saXX で過去の統計データをさかのぼって参照でき、-s/-e で時刻帯も絞れる
・RHEL 9 は sysstat-collect.timer の有効化、Ubuntu は ENABLED="true" への変更が前提条件
・sadf -d でCSV出力してExcelでトレンド分析する使い方も実務で便利
・-P ALL オプションでコアごとのCPU偏りも確認できる
・/etc/sysconfig/sysstat(RHEL系)の HISTORY を変更することでデータ保存日数を調整できる(デフォルト28日)


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

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

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

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

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

sysstatパッケージには、データ収集を担うsadc(System Activity Data Collector)と、それを呼び出すラッパースクリプトsa1(定期収集)・sa2(日次サマリ生成)が含まれています。RHEL 9系ではsystemdのタイマーユニット(sysstat-collect.timer)が10分おきにsa1を呼び出し、収集したバイナリデータを /var/log/sa/ に蓄積します。sarはその蓄積データを読み出して人が読める形式で出力するコマンドです。

他の監視ツールとの違いをまとめると以下のようになります。
ツール 用途 過去ログ 主な対象リソース
top / htop リアルタイム監視 なし CPU・メモリ・プロセス
vmstat リアルタイム・短期集計 なし CPU・メモリ・I/O
iostat リアルタイム・短期集計 なし CPU・ディスクI/O
sar 時系列分析・傾向把握 あり(28日分) CPU・メモリ・ディスク・ネットワーク
リアルタイム監視:topやvmstat
過去の履歴確認:sar(sysstat)

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

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

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

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

# dnf install sysstat -y

Ubuntu / Debianの場合:

# apt install sysstat -y

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

インストール直後はデータ収集が開始されていないため、収集を有効化する必要があります。RHEL 9 / Rocky Linux 9ではsysstatがsystemdのタイマーユニットで管理されているため、以下のコマンドで有効化します。

# sysstat-collect.timer を有効化(10分ごとのデータ収集) # systemctl enable --now sysstat-collect.timer # sysstat-summary.timer も有効化(日次サマリ生成) # systemctl enable --now sysstat-summary.timer # 状態確認(Active: active (waiting) が正常) # systemctl status sysstat-collect.timer

有効化後、10分おきにsadcコマンドがCPU・メモリ・ディスクI/Oなどのデータを /var/log/sa/ ディレクトリに自動保存します。有効化直後はまだデータが蓄積されていません。10分後以降にsarコマンドを実行するとデータが表示されます。

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

# /etc/default/sysstatを編集(ENABLED="false" → "true" に変更) # sed -i 's/ENABLED="false"/ENABLED="true"/' /etc/default/sysstat # sysstatサービスを再起動 # systemctl restart sysstat

3. データ収集の確認

インストール後、データファイルの生成を確認します。RHEL 9系ではcronとsystemd timerの両方で管理される場合があります。どちらが有効かは以下で確認できます。

# systemd timerの確認(RHEL 9 / AlmaLinux 9) # systemctl list-timers | grep sysstat # RHEL系のcronジョブ確認 # 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日付数字」がテキスト形式のレポートです。

4. データ保存日数を変更する(オプション)

デフォルトは28日分のデータが保持されます。長期トレンド分析や遡り調査の範囲を広げたい場合は、設定ファイルの HISTORY 値を変更します。RHEL 9系の設定ファイルは /etc/sysconfig/sysstat、Ubuntuは /etc/sysstat/sysstat です。

# RHEL 9系の場合(設定ファイルを確認) # cat /etc/sysconfig/sysstat HISTORY=28 COMPRESSAFTER=10 # 10日経過後に古いデータをgzip圧縮 # 90日分に変更する場合(ディスク容量に注意) # sed -i 's/HISTORY=28/HISTORY=90/' /etc/sysconfig/sysstat

変更後のsysstatサービス再起動は不要です。次回のタイマー実行(10分以内)から新しい設定が反映されます。長期保存にするとディスク使用量が増えるため、定期的な棚卸しも検討してください。

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が空いた割合。高いとディスクがボトルネックの可能性があります
%steal:仮想化環境(クラウドのVMなど)で、他のVMに奪われたCPU時間の割合。5%を超えると体感遅延が出始めます
%idle:CPUが何もしていない割合

2. コアごとのCPU使用率を確認する(-P ALL)

複数コアのサーバーで特定コアだけに負荷が偏っている場合、-P ALLオプションを使うと各コアの状態を個別に確認できます。

# sar -u -P ALL 1 3 12:00:01 CPU %user %nice %system %iowait %idle 12:00:02 all 8.42 0.00 2.15 0.53 88.90 12:00:02 0 15.84 0.00 4.00 0.00 80.16 12:00:02 1 1.02 0.00 0.51 0.00 98.47 12:00:02 2 2.04 0.00 1.02 1.53 95.41 12:00:02 3 14.79 0.00 3.06 0.00 82.15

コア0・3に負荷が集中してコア1・2がほぼ遊んでいる場合、マルチスレッド化が不十分なアプリケーションや特定プロセスへの偏りが疑われます。シングルスレッドのバッチ処理などでよく見られるパターンです。

3. 主要オプション一覧

-u:CPU使用率の統計
-P コア番号 / ALL:指定コア(または全コア)ごとのCPU使用率
-r:メモリ使用状況の統計
-b:ディスクI/Oの統計(tps・読み書き速度の概要)
-d:ブロックデバイスごとのI/O統計(-p と組み合わせてデバイス名を人が読める形で表示)
-n DEV:ネットワークインターフェースの統計
-n EDEV:ネットワークエラー(パケットロス・ドロップ)の統計
-S:スワップ使用状況の統計
-W:スワップイン/アウトの転送量統計
-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` が急増しているのが確認できます。これが「遅かった時間帯」の証拠になります。

gzip圧縮されたファイル(COMPRESSAFTER日数を超えた古いデータ)もsarはそのまま読み込めます。

# 保存されているsaファイルを一覧で確認 # ls -lh /var/log/sa/sa[0-9][0-9] # gzip圧縮されたファイルはそのまま読める # sar -u -f /var/log/sa/sa01.gz

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

-s(start)と -e(end)オプションで表示範囲を絞れます。報告された障害発生時刻の前後30分を確認するとき、このオプションで素早く絞り込めます。

# 昨日の14:00から16:00のCPUデータだけ確認する # sar -u -f /var/log/sa/sa25 -s 14:00:00 -e 16:00:00 # 同じ時間帯のメモリ統計と組み合わせる # sar -r -f /var/log/sa/sa25 -s 14:00:00 -e 16:00:00 # ロードアベレージで高負荷の時刻を絞り込む # sar -q -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

各列の見方のポイントです。
%memused:メモリ使用率。90%を超えているとスワップへの圧力が高まっています
kbavail:実際に利用可能なメモリ(ページキャッシュの解放分を含む)。メモリ不足の判断は kbmemfree ではなく kbavail を基準にしてください。kbavail が極端に少なければ、プロセスのメモリリーク調査が必要です
kbcommit:カーネルが「使うと約束した」仮想メモリ量(プロセスが確保を宣言したが実際には未使用の分を含む)
%commit:kbcommit が物理メモリ+スワップに対して何%か。100%を超え始めるとOOM Killerが発動するリスクが高まります

OOM Killerが発動した可能性があれば /var/log/messages で詳細を確認できます。

2. ブロックI/O概要(-b)

-b オプションはシステム全体のI/O転送量を手早く把握するのに使います。デバイス別の内訳は後述の -d で確認します。

# sar -b -f /var/log/sa/sa25 -s 15:00:00 -e 16:00:00 15:00:01 tps rtps wtps bread/s bwrtn/s 15:00:01 15.3 12.1 3.2 1024.5 256.8 15:10:01 312.4 280.1 32.3 22528.0 2592.7 15:20:01 18.2 14.5 3.7 1168.0 296.0

tps:1秒あたりのI/O転送数
rtps:読み取りリクエスト/秒
wtps:書き込みリクエスト/秒
bread/s / bwrtn/s:ブロック単位の読み取り・書き込み量/秒

15:10台にtpsが急増しているのがわかります。この時刻のCPU %iowaitと照合すれば、I/Oがボトルネックになっていたかどうかを判断できます。

3. ディスク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 12.33 45.20 92.80 11.21 0.02 1.24 1.52 15:00:01 sdb 274.33 3162.40 854.20 14.65 3.84 14.02 98.43

tps:1秒あたりのI/Oリクエスト数
wkB/s:1秒あたりの書き込み量(KB)
%util:デバイスの使用率。70%を超えたらI/Oボトルネックの目安です。sdbは98%と飽和状態
await:I/Oリクエストの平均待ち時間(ms)。高いほど遅延が大きい
aqu-sz:I/Oキューに積み上がっているリクエスト数。増加し続けている場合はデバイスが追いついていない状態です

sdbの %util が98%・aqu-sz が3.84というのは、このデバイスがほぼ飽和している状態です。大量書き込み処理が重なっている場合は `sar -b` の bwrtn/s と合わせて確認してください。

4. ネットワーク統計(-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`(送信)で帯域の使用量を確認できます。1GbEのNICなら上限は約125MB/s(125,000kB/s)です。NICの上限に近づいている場合は、トラフィック急増かDDoS攻撃の可能性があります。

5. ネットワークエラー統計(-n EDEV)

パケットロスやNICエラーが発生していないかを確認するには -n EDEV を使います。

# sar -n EDEV -f /var/log/sa/sa25 -s 15:00:00 -e 15:30:00 15:00:01 IFACE rxerr/s txerr/s coll/s rxdrop/s txdrop/s 15:00:01 eth0 0.00 0.00 0.00 12.5 0.00

`rxdrop/s`(受信ドロップ)が0より大きい場合は注意が必要です。NICの処理能力を超えたトラフィックが到達しているか、カーネルのRXバッファが詰まっている可能性があります。

6. スワップ使用量(-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 オプションのメモリ使用量と併せて確認しましょう。スワップイン/アウトの実際の転送量を確認したい場合は `sar -W` も使えます。OOM Killerが発動した可能性があれば /var/log/messages で詳細を確認できます。

7. ロードアベレージ(-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飽和状態です。`blocked` は I/O 待ちでブロックされているプロセス数を示します。この値が増加している場合はディスクI/Oのボトルネックが疑われます。この時間帯のCPU統計(-u)やプロセス一覧(ps auxf)と照合して原因を特定します。

8. すべての統計を一括確認(-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

高負荷インシデントをsarで事後調査する実践手順

「昨夜22時ごろにアプリケーションの応答が遅くなった」という報告があったとします。sarを使った事後調査の流れを示します。

1. まずロードアベレージで高負荷の時刻を特定する

# 前日のロードアベレージを確認(前日=25日なら sa25) # sar -q -f /var/log/sa/sa25 -s 21:00:00 -e 23:30:00 # 出力例 21:00:01 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked 21:10:01 2 412 0.32 0.28 0.25 0 21:20:01 2 415 0.35 0.30 0.27 0 21:30:01 18 445 3.87 1.42 0.58 3 21:40:01 32 489 7.23 4.88 2.14 8 21:50:01 28 478 6.94 5.72 3.44 5 22:00:01 12 452 4.18 5.11 4.02 2 22:10:01 3 421 1.22 3.04 3.48 0 22:20:01 2 416 0.48 1.52 2.44 0

21:30~22:00にかけて ldavg-1 が急上昇しています(4CPUのサーバーで7.23は過負荷状態)。blocked が8まで増加しているのはI/O待ちプロセスが積み上がっていたことを示しています。

2. CPU・I/Oの原因を切り分ける

# 同じ時間帯のCPU統計で原因を絞る # sar -u -f /var/log/sa/sa25 -s 21:20:00 -e 22:10:00 # 出力例 21:20:01 CPU %user %nice %system %iowait %steal %idle 21:30:01 all 8.42 0.00 3.22 62.14 0.02 26.20 21:40:01 all 12.18 0.00 4.87 71.32 0.02 11.61 21:50:01 all 9.74 0.00 4.12 74.88 0.01 11.25 22:00:01 all 6.34 0.00 2.78 51.23 0.01 39.64

`%iowait` が60~74%に達しています。CPUそのものではなくディスクI/Oの待機がボトルネックであることが確定しました。%userが低いのにldavgが高い場合は、このパターンを疑ってください。

3. ディスクI/Oの量とデバイスを特定する

# 同じ時間帯のI/O統計 # sar -b -f /var/log/sa/sa25 -s 21:20:00 -e 22:10:00 # デバイス別に確認してどのストレージが原因か特定する # sar -d -p -f /var/log/sa/sa25 -s 21:20:00 -e 22:10:00

これで「21:30~22:00の間にI/Oが急増した」「どのデバイスが原因か」まで特定できます。あとはその時間帯に実行されていたジョブやバッチ処理(cronのログ、アプリケーションログ)と照合して根本原因を追います。

このように sar -q で高負荷時刻を特定 → sar -u の %iowait/%user で CPU かI/Oかを切り分け → sar -d でデバイスを特定、という3ステップが事後調査の基本手順です。

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やメモリのトレンドをグラフ化する使い方が便利です。

sysstatにはsa2スクリプトも含まれており、日次サマリを /var/log/sa/sar[日付] に自動生成します。手動で前日分のレポートを生成するには以下のコマンドを使います。

# 日次サマリを手動生成(前日分) # /usr/lib64/sa/sa2 -A # 生成されたレポートを確認 # cat /var/log/sa/sar25

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

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

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

# sysstatタイマーの状態を確認(RHEL 9系) # systemctl status sysstat-collect.timer # sysstatサービスの状態を確認(Ubuntu系) # systemctl status sysstat # 手動でデータ収集を実行(テスト用) # /usr/lib64/sa/sa1 1 1 # ls -l /var/log/sa/

タイマーが無効になっている場合は、sysstat-collect.timerの再有効化が必要です。
デフォルトでは28日分のデータが保持されます。それ以前のデータは取得できません。

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

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

# sysstatのバージョン確認 # sar --version sysstat version 12.5.4 # sadfコマンドでファイルのバージョン情報を確認 # sadf -H /var/log/sa/sa01

OSのメジャーバージョンアップ後にsysstatを再インストールした場合、古いsaファイルは読めなくなることがあります。その場合は新しいバージョンのsaファイルが蓄積されるまで待つか、`sadf -j` でJSON変換を試みます。

sarコマンドが見つからない時の対処法

sysstatがインストールされていないとsarコマンドが見つかりません。パッケージを確認してインストールします。

# sarが含まれるパッケージを確認(RHEL系) # rpm -qf $(which sar) 2>/dev/null sysstat-12.5.4-5.el9.x86_64 # インストールされていない場合 # dnf install sysstat -y

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 や systemdのタイマーユニット内のパスと一致しているか確認してください。

「No data available for this period」が出た時の対処法

指定した時刻範囲にデータが存在しない場合です。収集間隔(デフォルト10分)の隙間を指定してしまうと表示されません。ログファイルに記録されている時刻を先に確認してから -s/-e で絞り込みましょう。

# まずログの記録時刻を確認してから時刻を絞る # sar -u -f /var/log/sa/sa25 | head -20

収集間隔を変更したい場合(RHEL 9系)

デフォルトは10分ごとですが、障害が頻発する環境では5分に変更することがあります。systemdのオーバーライドファイルで変更します。

# オーバーライドファイルを作成して収集間隔を5分に変更する # mkdir -p /etc/systemd/system/sysstat-collect.timer.d/ # cat > /etc/systemd/system/sysstat-collect.timer.d/override.conf <<'EOF' [Timer] OnCalendar= OnCalendar=*:00/5 EOF # systemctl daemon-reload # systemctl restart sysstat-collect.timer

本記事のまとめ

やりたいこと コマンド
CPU使用率をリアルタイムで確認する sar -u 1 10
当日のCPU統計をすべて表示する sar -u
コアごとのCPU使用率を確認する sar -u -P ALL
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 -b -f /var/log/sa/sa25
ディスクI/Oをデバイス名付きで確認する sar -d -p -f /var/log/sa/sa25
ネットワーク統計を確認する sar -n DEV -f /var/log/sa/sa25
ネットワークエラーを確認する sar -n EDEV -f /var/log/sa/sa25
スワップ使用量を確認する sar -S -f /var/log/sa/sa25
スワップイン/アウトを確認する sar -W -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
データ保存日数を変更する(RHEL系) grep HISTORY /etc/sysconfig/sysstat
sarを使いこなせると、「何かあった後に調べる」という事後分析の精度が飛躍的に向上します。topやvmstatで見えない「あの時間帯に何が起きていたか」を証拠とともに示せるのは、サーバー管理者にとって大きな武器です。

事後調査の基本手順は「sar -q のldavgで高負荷の時刻を特定 → sar -u の%iowait・%userでCPUかI/Oかを切り分け → sar -d -p でデバイスを特定」の3ステップです。この流れを一度体に染み込ませておくと、深夜の障害連絡を受けた時でも落ち着いて原因に近づけます。

継続的なデータ収集がない環境では事後調査ができないため、まずsysstatのインストールとsysstat-collect.timerの有効化から始めることをおすすめします。起動後10分待てば最初のデータが蓄積されます。

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

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

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

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

<PR>手元に置いて学びを深める1冊

詳解 システム・パフォーマンス 第2版(Brendan Gregg 著/オライリー・ジャパン)

まず無料メルマガでLinuxの基礎を固めるのが第一歩ですが、CPUやI/Oのボトルネックを腰を据えて分析するなら、sarから最新のBPFまで体系的に導いてくれる本書が手元にあると心強いです。

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

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

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

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

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

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

姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

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

この記事を書いた人

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

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

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