2026年5月19日
2026年5月19日
サーバーのエラー率を監視してSLOを設定する方法
ステップ1: タイルとエラーログの確認
まず、サーバーの状態を把握するために、定期的にエラーログを監視することが重要です。通常、/var/logディレクトリ下に多くのログファイルがありますが、特定のサービスやアプリケーションのエラーについては、そのサービスの専用ログを追跡します。
# タイルとエラーログの確認
tail -n 100 /var/log/syslog
# Apache HTTPサーバーのエラーログを確認
tail -n 100 /var/log/apache2/error.log
# Nginx HTTPサーバーのエラーログを確認
tail -n 100 /var/log/nginx/error.log
ステップ2: エラーレートの監視スクリプトを作成
次に、自動化された方法でエラー率を定期的に監視するためのスクリプトを作成します。以下のスクリプトはcronジョブとして実行され、定期的にエラーログからエラーレートを計算し、特定の閾値を超えた場合は警告メールを送信します。
# スクリプトファイルを作成:/usr/local/bin/error_rate_monitor.sh
#!/bin/bash
LOG_FILE="/var/log/apache2/error.log"
ERROR_THRESHOLD=10 # エラーレートの閾値(例:10%)
# ログからエラー行数をカウント
error_count=$(grep -c "error" $LOG_FILE)
total_lines=$(wc -l < $LOG_FILE)
error_rate=$(( (error_count * 100) / total_lines ))
if [ "$error_rate" -gt "$ERROR_THRESHOLD" ]; then
echo "Error rate exceeded: $error_rate%"
# 警告メール送信
echo "Error rate for Apache2 is currently at $error_rate%." | mail -s "Apache2 Error Rate Alert" admin@example.com
fi
# スクリプトの実行
/usr/local/bin/error_rate_monitor.sh
ステップ3: Cronジョブでスクリプトを定期実行
cronを使用して、この監視スクリプトを毎時またはその他の頻度で実行します。次の手順は、/etc/crontabファイルにエントリを追加することで実現します。
# クォータを確認
crontab -l
# Cronジョブの追加(1時間ごとに実行)
echo "0 * * * * root /usr/local/bin/error_rate_monitor.sh" >> /etc/crontab
# パーミッション設定
chmod +x /usr/local/bin/error_rate_monitor.sh
ステップ4: Service Level Objective (SLO)の設定と達成状況の監視
Service Level Objective(SLO)は、サービスが提供する品質を数値化した目標です。エラーレートを1%未満に保つ、といった具体的な目標を設定します。
# SLOの設定例:エラーレートが1%以下であることを目指す
# 監視スクリプト内でSLOの達成状況を表示する
if [ "$error_rate" -le "1" ]; then
echo "SLO is met: $error_rate%"
else
echo "SLO not met: $error_rate%"
fi
注意事項
- セキュリティ上の注意: システムのログファイルは重要な情報源です。これらのファイルへのアクセス権限を適切に管理し、不正なアクセスを防ぐために必要なセキュリティ設定を行いましょう。
- パフォーマンス/運用上の注意: 大規模なサーバーコレクションを監視する場合、大量のログ処理がシステム性能に影響を与える可能性があります。必要であれば、ロギングストラテジーを見直し、無用なロギングを行わないようにします。
まとめ
1. エラーログの確認: サーバーの健康状態を把握するために定期的にエラーログを確認しましょう。
2. 監視スクリプト作成: cronを使用して自動化された方法でエラー率を監視します。
3. Cronジョブ設定: 定期的な監視のためにcronジョブを作成し、必要に応じてメールアラートを設定します。
4. SLO設定: 明確な目標(SLO)を設定することで、サービスの品質向上が明確になります。
関連記事: