しきい値の目安一覧

各メトリクスを「正常 ✅」「注意 ⚠」「危険 🚨」の 3 段階で評価します。あくまで目安であり、システムの仕様・ハードウェア性能によって適切な基準は異なります。

CPU(mpstat)

メトリクス ✅ 正常 ⚠ 注意 🚨 危険
%idle(CPU 空き) 50% 以上 20〜50% 20% 未満
%iowait(I/O 待ち) 5% 未満 5〜20% 20% 超

ディスク I/O(iostat)

メトリクス ✅ 正常 ⚠ 注意 🚨 危険
%util(ディスク使用率) 70% 未満 70〜90% 90% 超
await(待機時間 HDD) 10ms 未満 10〜20ms 20ms 超
await(待機時間 SSD) 2ms 未満 2〜5ms 5ms 超

メモリ(free)

メトリクス ✅ 正常 ⚠ 注意 🚨 危険
available(実質空き) 総量の 30% 以上 10〜30% 10% 未満
swap used(スワップ使用) 0 増加傾向 継続的な増加

アクセスログ

メトリクス ✅ 正常 ⚠ 注意 🚨 危険
レスポンスタイム 1 秒未満 1〜3 秒 3 秒超
エラー率(5xx) 0.1% 未満 0.1〜1% 1% 超

アクセスログの分析コマンド

# レスポンスタイム 3秒以上のリクエスト数(%T フィールドが最終列の場合)
awk '{if ($NF >= 3) print}' access.log | wc -l

# 遅いリクエスト上位20件(URL と処理時間)
awk '{print $NF, $7}' access.log \
  | sort -rn | head -20

# エラー(5xx)の件数と割合
total=$(wc -l < access.log)
error=$(grep -c ' 5[0-9][0-9] ' access.log)
echo "Total: $total  Errors(5xx): $error"

# 時間帯別リクエスト数(時単位)
awk '{print substr($4,14,2)}' access.log \
  | sort | uniq -c | sort -k2n

mpstat の分析コマンド

# %idle が 20% 未満の行を抽出(CPU 飽和を確認)
awk '/^[0-9]/ && $NF < 20 {print}' mpstat.txt

# %iowait の最大値を確認
awk '/^[0-9]/ {print $6}' mpstat.txt \
  | sort -rn | head -5

# 時系列で CPU 使用率を表示(all 行のみ)
grep 'all' mpstat.txt

iostat の分析コマンド

# %util が 70% 超の行を抽出
awk '/^[a-z]/ && $NF >= 70 {print}' iostat.txt

# await(平均待機時間)の推移を確認
awk '/^[a-z]/ {print $1, $10, $11}' iostat.txt
# ※ $10=await, $11=%util はバージョンにより異なる場合あり

# sda デバイスのみフィルタして確認
grep '^sda' iostat.txt

free の分析コマンド

# available 列の推移を抽出(Mem 行のみ)
grep 'Mem:' free.txt | awk '{print $7}'

# スワップ使用量の推移を確認
grep 'Swap:' free.txt | awk '{print $3}'

# available が全体の 10% 未満になった瞬間を探す
awk '/Mem:/ {
  available=$7; total=$2;
  if (available/total*100 < 10)
    print "⚠ Available: " available "MB (" int(available/total*100) "% of " total "MB)"
}' free.txt

vmstat の分析コマンド

# 2行目以降を表示(1行目は累計値のため除外)
tail -n +3 vmstat.txt

# r(実行待ちプロセス数)が 4 以上の行を抽出(4コアの場合)
awk 'NR>2 && $1 >= 4 {print NR, $0}' vmstat.txt

# si/so(スワップ IN/OUT)が 0 でない行を抽出
awk 'NR>2 && ($7 > 0 || $8 > 0) {print "⚠ Swap: si=" $7 " so=" $8}' vmstat.txt

# wa(I/O 待ち)が 10% 超の行を抽出
awk 'NR>2 && $16 > 10 {print "⚠ wa=" $16 "%"}' vmstat.txt
各コマンドのフィールド番号はカーネルバージョンや出力オプションによって異なる場合があります。head -2 ファイル名 でヘッダーを確認してから使用してください。