【RHEL】sarコマンドでシステム分析からグラフ作成までを解説

RHEL

今回は、Linuxシステム管理者必須のコマンドである「sar(System Activity Report)」について、基本的な使い方から実践的な活用方法まで詳しく解説していきます。RHEL8/9環境での具体的な実装方法と、システムの問題分析手法について、初級者から中級者の方々に向けて説明します。

sarコマンドとは

sarコマンドは、システムのパフォーマンスデータを収集、保存、レポートする強力なモニタリングツールです。CPU使用率、メモリ使用状況、ディスクI/O、ネットワークインターフェースの統計など、システムの様々な側面を監視することができます。

sarコマンドのインストールと基本設定

RHEL8/9では、以下のコマンドでsysstatパッケージをインストールできます:

sudo dnf install sysstat

インストール後、サービスを有効化し起動します:

sudo systemctl enable sysstat
sudo systemctl start sysstat

sarコマンドのオプション一覧

オプション 説明 使用例
-u CPU使用率の統計情報 sar -u 1 3
-r メモリ使用状況 sar -r 1 3
-b I/O転送率の統計 sar -b 1 3
-n ネットワーク統計 sar -n DEV 1 3
-q 実行キュー長と負荷平均 sar -q 1 3
-d ブロックデバイスの活動 sar -d 1 3
-W スワッピング統計 sar -W 1 3
-B ページング統計 sar -B 1 3

効果的なログ収集の設定方法

sarコマンドのログ収集を効果的に行うために、/etc/sysconfig/sysstatの設定を調整します:

# 収集間隔を5分に設定
SADC_OPTIONS="-S DISK 300"

# ログ保持期間を31日に設定
HISTORY=31

高負荷時の原因特定手順

システムの高負荷時には、以下の手順で原因を特定していきます:

1. CPU使用率の確認

sar -u 1 5

2. メモリ使用状況の確認

sar -r 1 5

3. ディスクI/Oの確認

sar -b 1 5

sarデータの可視化(sadfコマンド)

sarで収集したデータを可視化するために、sysstatパッケージに標準で含まれているsadfコマンドを使用します。追加のツールをインストールする必要がないため、すぐに活用することができます。

### sadfコマンドの基本構文

sadf [ オプション ] [ インターバル [ 回数 ] ] [ -C ] [ -- ] [ sar オプション ]

### 主要なフォーマットオプション

# SVG形式でグラフを出力
sadf -g

# JSON形式でデータを出力
sadf -j

# XML形式でデータを出力
sadf -x

# データベースで使用可能な形式で出力
sadf -d

### 実践的な使用例

1. CPU使用率のグラフ化:

# 現在のCPU使用率をリアルタイムでグラフ化
sadf -g -- -u > cpu_usage.svg

# 特定の日付のCPU使用率をグラフ化
sadf -g /var/log/sa/sa01 -- -u > cpu_usage_day01.svg

# 全CPUコアの使用率をグラフ化
sadf -g -- -P ALL > cpu_cores_usage.svg

2. メモリ使用状況のグラフ化:

# メモリ使用状況をグラフ化
sadf -g -- -r > memory_usage.svg

# スワップ使用状況も含めてグラフ化
sadf -g -- -r -S > memory_and_swap.svg

3. ディスクI/Oのグラフ化:

# ディスクI/O統計をグラフ化
sadf -g -- -b > disk_io.svg

# 特定のデバイスのI/O統計をグラフ化
sadf -g -- -d -p > disk_device_io.svg

4. 複数の指標を組み合わせたグラフ:

# CPU、メモリ、I/Oを1つのレポートにまとめる
sadf -g -- -u -r -b > system_overview.svg

### グラフのカスタマイズ

sadfコマンドで生成されるSVGグラフは以下の特徴があります:

– 自動的に時間軸が設定される
– データポイントにマウスを合わせると詳細値が表示される
– ブラウザで直接開いて確認可能
– 画像編集ソフトでの編集や加工が可能

### 定期的なグラフ生成の自動化

cronを使用して定期的にグラフを生成する例:

# /etc/cron.daily/generate_sar_graphs
#!/bin/bash
YESTERDAY=$(date -d "yesterday" +%d)
OUTPUT_DIR="/var/www/html/sar_graphs"

# 前日のCPU使用率グラフを生成
sadf -g /var/log/sa/sa${YESTERDAY} -- -u > ${OUTPUT_DIR}/cpu_${YESTERDAY}.svg

# 前日のメモリ使用率グラフを生成
sadf -g /var/log/sa/sa${YESTERDAY} -- -r > ${OUTPUT_DIR}/memory_${YESTERDAY}.svg

### トラブルシューティングのためのグラフ活用

1. 負荷の急上昇を調査する場合:

# 特定の時間帯のデータをグラフ化
sadf -g -s 14:00:00 -e 15:00:00 /var/log/sa/sa01 -- -u -r -b > peak_investigation.svg

2. 長期的なトレンド分析:

# 過去7日間のデータを統合してグラフ化
for i in {1..7}; do
  day=$(date -d "$i days ago" +%d)
  sadf -g /var/log/sa/sa${day} -- -u >> weekly_cpu_trend.svg
done

実践的なユースケース

### ケース1:CPU負荷の分析

高負荷時のCPU使用率を詳細に分析する例:

sar -u -P ALL 1 60

このコマンドは、全CPUコアの使用率を1分間、1秒間隔で表示します。

### ケース2:メモリリーク調査

メモリ使用量の経時変化を観察する例:

sar -r -f /var/log/sa/sa$(date +%d) | grep -v Average | sort -k1

トラブルシューティングのベストプラクティス

1. 定期的なベースライン測定
– 平常時のシステム状態を把握
– 異常値の早期発見が可能

2. 複数の指標の相関関係分析
– CPU使用率とI/O待ち時間の関係
– メモリ使用量とスワップ使用量の関係

3. 長期トレンド分析
– 週次/月次レポートの作成
– キャパシティプランニングへの活用

まとめ

sarコマンドは、システム管理者にとって必須のパフォーマンスモニタリングツールです。本記事で解説した内容を実践することで、以下のスキルを習得できます:

– システムパフォーマンスの包括的な監視
– 効果的なログ収集と分析
– 問題の早期発見と対処
– パフォーマンスデータの可視化

これらの知識を活用することで、より効果的なシステム運用が可能になります。

【注意】

このブログは技術に関する知識や経験を共有することを目的としており、情報の正確性に努めていますが、その内容の正確性や完全性を保証するものではありません。ブログの情報を利用する場合は、自己の責任において行動してください。ブログの内容に基づいて行った行動や決定によって生じた損害や被害について、筆者は一切の責任を負いません。

 

記事の内容の一部は、生成AIで作成しています。

RHEL
この記事の作者
StarTeller

30歳で異業種からITエンジニアへ転身し、10年以上にわたりインフラエンジニアとして様々な現場でシステム構築・運用に携わってきました。

得意分野はLinux/Windowsのサーバー構築・運用で、ネットワークやAWSなども実務で活用しています。

このブログでは、これまでの業務で培った経験を基に、日々の業務で遭遇した問題の解決方法や、システム構築の具体的な手順を解説。現場のエンジニアが実際に「困ったとき」に参照できる情報を意識して投稿していこうと思っています。

StarTellerをフォローする
StarTellerをフォローする

コメント

タイトルとURLをコピーしました