今回は、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コマンドは、システム管理者にとって必須のパフォーマンスモニタリングツールです。本記事で解説した内容を実践することで、以下のスキルを習得できます:
– システムパフォーマンスの包括的な監視
– 効果的なログ収集と分析
– 問題の早期発見と対処
– パフォーマンスデータの可視化
これらの知識を活用することで、より効果的なシステム運用が可能になります。
コメント