運用自動スクリプトの活用例

2026.02.28
運用自動スクリプトの活用例

運用自動スクリプトの活用例

監視運用で自動化すべき3つの場面

監視の画面をずっと見張る時代は終わりつつあります。肝は「人がやるとムダ・ムラが出る箇所」をスクリプトで先回りすることです。狙うべきは次の3つです。

  • アラート抑止と一次切り分け:しきい値直後のバーストや一過性のスパイクは、リトライ・平滑化・依存関係の確認で弾きます。例:CPU高騰時に直近デプロイ可否、同時刻のI/O待ち、隣接ノードの状況を10秒内で機械的に添付。
  • 回復系の定型対応:サービス再起動、キャッシュクリア、切替(フェイルオーバー)は人がやるほど遅くなります。安全策としてバックオフと回数上限、事後の強制通知を必ず組み込みます。
  • 予防保守とドリフト修正:ディスク掃除、証明書期限監視、設定ドリフトの検出・自動修正。週次・日次の定期実行で「鳴らない事故」を減らします。

すぐ書ける実装パターンと雛形

ディスク逼迫の自己回復(Bash)

目的:90%超で検知→古いログを世代管理で削除→まだ高ければ一時ファイル領域を縮退→失敗時のみ通知。

例(擬似コード):df -hで/と/varの使用率取得→90%以上なら/var/log配下の*.logをlogrotate実行→journalctl –vacuum-time=3d→再測定→85%未満なら終了→未満でなければ/tmpの*.cacheを削除→それでもダメなら「削除候補トップ10(サイズ順)」をメッセージ化してSlackへ投稿。通知には事前・事後の使用率、削除件数、処理時間を添付して追跡可能にします。

サービス死活の段階的リカバリ(Python + systemd)

目的:HTTP 5xxが連続3回以上で段階的に回復。順序は(1)プロセス健全性確認(2)単純再起動(3)設定テストと再読込(4)直近デプロイのロールバック。

実装要点:requestsでヘルスチェック、systemctl showで状態確認、journalctlで直近5分の異常ログ抽出、nginx -tのような設定検証を挟みます。各段階は指数バックオフ(30s, 60s, 120s)を適用。3段階目以降は必ず手動承認待ちに切り替え、チャットに「/approve」で続行できるようにします。

エスカレーションと証跡保存(ChatOps)

アラートはスクリプトが一次切り分けしてから送るとノイズが激減します。メッセージには「検知時刻」「影響範囲推定(負荷・影響ノード数)」「試行した回復手順と結果」「次の推奨アクション」を含めます。説明文はテンプレ化しつつ、必要に応じてChatGPTやClaudeで日本語を整え、実務隊に読みやすい形にします。スニペット生成や正規表現の確認はCopilotやGeminiを補助にすると、スクリプト作成の初速が上がります。

身近な企業の失敗と改善:地域ECのインフラチーム

業種/規模:地方で家具を販売する中小EC(従業員60名、クラウドVM 30台)。

状況:夜間にアラートが連鎖。ディスク逼迫→ログ肥大→Nginx 5xx→監視の再帰通知という「雪だるま」。当番は毎回リモートでログ削除と再起動を実施。平均復旧時間は45分、アラートの7割がノイズでした。

失敗:自動化はしたが、しきい値が高すぎて動かず、逆に低負荷時に誤作動。通知は成功・失敗ともに毎回送られ、深夜も鳴り止まない状態に。

改善:3点に絞って再設計しました。

  1. 二段階しきい値+平滑化:瞬間90%では動かさず、5分移動平均85%で起動、90%で強制ステップ2へ。
  2. 段階的回復と成功時の無通知:自己回復で85%未満に戻せたら静かに終了。未達時のみSlackへ詳細送付。
  3. 証跡と学習:各回復の前後状態(使用率、削除量、処理秒数)をS3相当へ保存。週次で傾向を可視化。

結果:夜間アラート件数は月120→28に減少、MTTAは12分→3分、MTTRは45分→14分に短縮。週次レポートから特定のアクセスログが肥大化していると判明し、アプリ側の不要ヘッダー出力を停止。根本対処でログ量が日次40%削減されました。運用チームは当番表を月3人→2人に縮小しつつ、有事対応力は維持できました。

効果測定とガバナンスのコツ

導入後は「回ったか」だけでなく「どれだけ良くなったか」を数字で追います。主要指標はMTTA、MTTR、自動解決率、誤検知率、アラート当番工数。毎週の差分で「自動化が新たなノイズを生んでいないか」を点検します。

ガバナンス面では以下を守ると安定します。

  • レビューとバージョニング:スクリプトはGit管理、PRレビュー必須。影響範囲の説明文はテンプレにし、CopilotやChatGPTで静的チェックの補助を受けると抜け漏れが減ります。
  • 安全装置:dry-runと–force、フェイルセーフ(失敗時は何もしない)、実行上限、ロックファイル。手動承認フラグで危険操作を止める。
  • 機密の扱い:環境変数やVault、権限分離を徹底。ログに資格情報を絶対残さない。
  • 運用しやすさ:cronやsystemd timerでスケジュール、メトリクス出力(実行回数、成功率、所要時間)をPrometheus等に投げて可視化。チャットからの手動トリガーも用意すると当番が楽になります。

運用自動スクリプトは「人の判断を代替する」より、「人がやると遅い・ムラが出る」部分を先に片付ける道具です。サーバ監視運用事業では、監視設計と併せてこの自動化を織り込み、一次切り分けから回復、証跡、可視化までを一連で回すほど、静かな夜と安定したSLAに近づきます。