2026年11月2日
2026年11月2日
サーバーのパフォーマンスベースラインを記録する方法
はじめに
障害対応やキャパシティプランニングを正確に行うためには、サーバーの「平常時の負荷」を数値として把握しておくことが欠かせません。ベースラインがないと、CPU使用率60%が異常なのか正常範囲なのかを判断できず、無駄なアラート対応が増えてしまいます。
本記事では、Linuxサーバーのリソース使用状況を一定期間計測し、平均値・最大値・パーセンタイルを算出してベースラインとして保管する方法を紹介します。sysstat(sar)とPrometheusを組み合わせた現実的な運用構成を扱います。
ベースラインは一度作って終わりではなく、トラフィック増減やデプロイのたびに更新するライフサイクルを持つ点も意識しておきましょう。
症状・背景
- アラートのしきい値を勘で決めており、誤検知やアラート疲れが頻発する
- ピーク時とオフピーク時の差を可視化できず、容量増強の判断が遅れる
- 性能劣化の傾向を時系列で追えず、根本原因の切り分けが困難
- 新機能リリース後の性能比較ができず、リグレッションを見逃す
手順・設定方法
ステップ1: sysstatの導入と収集間隔の調整
# sysstatパッケージをインストール(CentOS/RHEL系)
sudo dnf install -y sysstat
# 収集サービスを有効化
sudo systemctl enable --now sysstat
# 収集間隔を10分→2分へ短縮(より詳細なベースライン取得)
sudo sed -i 's|^\*/10|*/2|' /etc/cron.d/sysstat
# 保持期間を28日へ延長
sudo sed -i 's/^HISTORY=.*/HISTORY=28/' /etc/sysconfig/sysstat
ステップ2: sarでリソース統計を抽出
# CPU使用率の過去1日分(10分平均)を表示
sar -u -f /var/log/sa/sa$(date +%d) | head -20
# メモリ使用状況の集計
sar -r -s 09:00:00 -e 18:00:00
# I/O統計(ディスクごと)
sar -d -p
# ネットワークインターフェースのスループット
sar -n DEV | grep -E 'eth0|ens'
ステップ3: Prometheus + node_exporterでメトリクスを蓄積
# node_exporterの導入(systemd unit例)
sudo useradd -rs /sbin/nologin node_exporter
sudo curl -L -o /tmp/ne.tar.gz https://github.com/prometheus/node_exporter/releases/download/v1.8.2/node_exporter-1.8.2.linux-amd64.tar.gz
sudo tar -xzf /tmp/ne.tar.gz -C /usr/local/bin/ --strip-components=1 node_exporter-1.8.2.linux-amd64/node_exporter
# Prometheusスクレイプ設定の追加
echo " - job_name: node\n static_configs:\n - targets: ['localhost:9100']" | sudo tee -a /etc/prometheus/prometheus.yml
sudo systemctl restart prometheus
ステップ4: ベースラインレポートを自動生成
# CPUの95パーセンタイル値をPromQLで取得
curl -sG http://localhost:9090/api/v1/query \
--data-urlencode 'query=quantile_over_time(0.95, (100 - rate(node_cpu_seconds_total{mode="idle"}[5m])*100)[7d:5m])'
# 月次レポートをcronで保存
echo "0 1 1 * * /usr/local/bin/baseline-report.sh > /var/log/baseline/$(date +\%Y\%m).log" | sudo tee -a /etc/crontab
# 既存ベースラインとの差分を確認
diff /var/log/baseline/2026-04.log /var/log/baseline/2026-05.log
注意事項
- 計測期間は最低1週間、できれば月初・月末・休祝日を含む4週間を確保する
- 平均値だけでなくp95・p99パーセンタイルを必ず併記し、スパイクを見逃さない
- バッチジョブ実行時間帯はベースラインから除外するかタグ付けして区別する
- ベースラインは半期に一度は再計算し、トラフィック増加を反映する
まとめ
1. 継続収集: sysstatとPrometheusで最低4週間のデータを蓄積する
2. 多面的指標: CPU・メモリ・I/O・ネットワークを並列で記録する
3. パーセンタイル重視: 平均ではなくp95/p99で異常判定を行う
4. 定期更新: 半期ごとにベースラインを再計算しドリフトを補正する
5. アラート連動: ベースラインを根拠にしきい値を設計する
関連記事: