Skip to content

Cloud SQL idle

ルール ID: gcp.cloudsql.instance.idleカテゴリ: zombie ・ 必要な読み取り: インベントリ + 利用メトリクス 計画中

誰も接続していない Cloud SQL インスタンスは、稼働しているだけでコンピュート料金が発生し続けます。このルールは、接続が途絶えたまま動き続けている DB を見つけます。

このページは判定規範に従う予定仕様です。判定ロジックの実装とテストは先行して存在しますが、実データ接続からの本番実行経路はまだありません(それまで計画中表示)。

何を無駄とみなすか

30 日間、一度もクライアント接続がないまま稼働している Cloud SQL インスタンス。使われていなくても vCPU・メモリ分の課金が続きます。

判定条件

  • 30 日間の接続数が 0(窓内の最大接続数がゼロ)
  • 30 日間の最大 CPU 使用率が 5% 以下(接続がゼロでもバックグラウンド処理で CPU を使うインスタンスは候補にしません)
  • 提案するアクションは停止であり、削除ではありません(データ保全のため)
  • 単発の観測では open にしません。作成から 15 日未満のインスタンスは判定しません(経過ゲート)
  • 接続数・CPU のどちらかが観測できない場合は判定しません(候補を捏造しない)

必須 facts

  • インスタンスの状態・起動ポリシー
  • 30 日窓の最大接続数
  • 30 日窓の最大 CPU 使用率
  • 作成からの経過日数
  • 取得できない facts がある場合は「観測不能」と表示し、候補にしません(候補を捏造しない)。

誤検知・危険になり得る条件

  • 月次・四半期処理など、観測窓より長い周期でだけ接続される DB
  • フェイルオーバーや切り戻し用に温存しているインスタンス
  • 移行作業の途中で一時的に接続を切っている DB

いずれの場合も、提案が可逆な「停止」であることが緩和策になります。

実行前の確認

  • インスタンス名・ラベル・データベース名から用途を確認する
  • 接続元になり得るアプリケーション・バッチの構成を関係チームに確認する
  • IaC(Terraform 等)での参照有無を確認する

非破壊テストとロールバック

Safety Tier: medium(停止は可逆操作。データは保持される)

  1. インスタンスを停止する(削除しない)
  2. 一定期間、接続エラーの報告や依存アプリの異常がないか観察する
  3. 問題がなければ停止を恒久化し、不要と確定した時点で別途削除を検討する

ロールバック: インスタンスを再起動するだけで、データごと元の状態に戻ります。

なお、停止中もストレージとバックアップの課金は継続するため、削減されるのはコンピュート分です。

効果検証

削減の確定は、変更前ベースラインと変更後請求の比較で行います(Verify)。