2025年7月30日 【Google Cloud】VM インスタンスを内部 IP アドレスで死活監視しよう! Compute Engine Google Cloud 検索する Popular tags 事例紹介 GEN-STEP 生成AI(Generative AI) Vertex AI Search Looker Studio BigQuery AlloyDB Google Workspace Cloud SQL Category Google Cloud Author k-hirase SHARE 目次 きっかけ 準備 実際にやってみよう 費用感と使いどころ まとめ Content サービスを安定的に提供するためには、基盤となるシステムが安定的に稼働することが重要です。 システムが「動いているか/止まっているか」を的確に検知し、迅速なリカバリを可能としてくれるのが、死活監視です。 今回は Google Cloud 上での死活監視をご紹介したいと思います。 きっかけ なぜこのテーマを選択したかというと、以前のプロジェクトでの実装でかなり苦労したからです(汗)。 プロジェクトの一環として、インターネットへ公開されていない VM インスタンス(Compute Engine)の稼働監視をする、というタスクありました。 もちろん OSS の死活監視ソフト等で実現は可能だったのですが、今後のソフトウェアメンテナンスや運用面を考慮して、マネージドサービスで完結したかったのです。 まず、VM インスタンスの死活監視を Cloud Monitoring の Uptime メトリクス(compute.googleapis.com/instance/uptime)で試行錯誤したものの、やっぱりうまくいかず。 ※ 実際公式ドキュメントにも 「uptime などの指標タイプはモニタリングしないで」と書いてありますしね。。。 そして 、今回ご紹介する「稼働監視アラート」 も試してみたのですが、当時は、内部 IP アドレス向けの監視は「http、https」ポートしか利用できず、監視対象全台に実質 Web サーバの準備が必要でした。 結局のところ、泣く泣く、Cloud Monitoring のカスタムアラートにて死活監視を実装しました。 < 当時の構成 > ところが、2024/07/01 のアップデートにて、プライベートセグメントでも TCP 監視できるようになったという情報をつかみました。 ということで、最新の構成で検証してみたいと思います。 準備 既に Google Cloud のプロジェクトがある前提で進めます。 構成はこんなイメージを想定しています。 1.API の有効化 プロジェクトで以下の API を有効にします。 Compute Engine API Network Management API Service Directory API 2.必要な権限(ロール)の付与 プロジェクトで次のロールが付与されていることを確認します。 Compute 管理者 (roles/compute.admin) Compute ネットワーク管理者 (roles/compute.networkAdmin) モニタリング編集者(roles/monitoring.editor) 3.リソースの準備 検証用に、監視対象となる VM インスタンス(Compute Engine)を 1 台 作成しました。 この VM インスタンスには グローバル IP を割り当てず、内部 IP アドレスのみの構成とします。 下準備はここまでです。 実際にやってみよう 通常は便利な構成ウィザードで簡単に作成できますが、今回は構成理解のためにそれぞれのパーツから作ってみようと思います。 必要な手順は下記の4つです。 ファイアウォール ルールの作成 Service Directory サービスの作成 Service Directory エンドポイントの作成 稼働時間チェックの作成 1.ファイアウォール ルールの作成 今回は、内部 IP アドレスしか持たないプライベートセグメント内の VM インスタンスを監視するため、必要な通信を許可します。 下記の設定は検証目的のため VPC ネットワーク全体に適用していますが、実際には適切な範囲での適用を推奨します。 項目 設定値 ソース IP 35.199.192.0/19 (Service Directory からの通信を許可) プロトコル TCP 割当て先 検証用 VM インスタンスが所属する VPC ネットワーク 2.Service Directory サービスの作成 Google Cloud コンソールのメニューバーより [ネットワーク サービス] – [Service Directory]を選択します。 上部より「サービスの登録」を選択します。 項目 設定値 サービスのタイプ スタンダード リージョン us-west1 名前空間 uptime-check サービス名 vm-uptime-check サービスが作成されたことを確認します。 3.Service Directory エンドポイントの作成 作成したサービスを選択し、「+ エンドポイントを追加」をクリックします。 項目 設定値 エンドポイント名 vm-test-1 IP アドレス 192.168.0.8 (監視対象VMのIPアドレス) ポート 22 VPC ネットワーク 検証用 VM インスタンスが所属する VPC ネットワーク エンドポイントが追加されると以下のようになります。 4.稼働時間チェックの作成 Google Cloud のメニューバーより [ロギング] – [稼働時間チェック]を選択します。 上部より「+稼働時間チェックを作成」を選択します。 リクエスト送信元 リージョンを指定する際、最低 3 リージョンを選択する必要があります。 今回は検証目的のため「TCP 22 番ポート」を監視対象としますが、実際にはセキュリティ面も考慮して別のポートを使った方がよいかもしれません。 ① ターゲット 項目 設定値 プロトコル tcp リソースの種類 Internal IP Service Directory リージョン us-west1 Service Directory 名前空間 uptime-check Service Directory サービス名 vm-uptime-check Service Directory ポート 22 Service Directory チェック間隔 5分 リクエスト送信元リージョン 米国(アイオワ) 米国(オレゴン) 米国(バージニア) ② レスポンスの検証 項目 設定値 タイムアウト 10 秒 失敗時に Logging へログ出力 有効 ③ アラートと通知 項目 設定値 アラート名 Uptime Failure 間隔 1分 通知チャネル 任意の通知チャネル ④ 稼働時間チェックの名称 項目 設定値 名前 vm-uptime-check 作成する前に稼働時間チェックのテストをしましょう。 検証が失敗した場合は何かしら設定不備があるので、設定を見直してください。 これで、稼働時間チェックの作成は終了です。 作成後しばらくすると、各リージョンから監視が始まります。 5.稼働時間チェックの動作確認 それでは VM インスタンスを停止してみます。 しばらくすると、3 リージョンからアクセスができなくなり、最終的にはメールにて通知が来ることも確認できました。 ・ 通知メール ちなみに、ssh ポートに向けて稼働時間チェックを行うと、Linux系OSでは「/var/log/secure」に下記のようなログが記録されます。 通信の発信元が「35.199.192.0/19」である場合は、稼働時間チェック(厳密には Service Directory からのアクセス)が原因ですので、ご安心いただければと思います。 Jul 1 17:16:48 test-vm sshd[3908]: error: kex_exchange_identification: Connection closed by remote host Jul 1 17:16:48 test-vm sshd[3908]: Connection closed by 35.199.196.96 port 40737 Jul 1 17:16:52 test-vm sshd[3909]: error: kex_exchange_identification: Connection closed by remote host Jul 1 17:16:52 test-vm sshd[3909]: Connection closed by 35.199.199.1 port 37155 Jul 1 17:16:54 test-vm sshd[3910]: error: kex_exchange_identification: Connection closed by remote host Jul 1 17:16:54 test-vm sshd[3910]: Connection closed by 35.199.199.2 port 35893 Jul 1 17:17:02 test-vm sshd[3911]: error: kex_exchange_identification: Connection closed by remote host Jul 1 17:17:02 test-vm sshd[3911]: Connection closed by 35.199.196.100 port 40409 Jul 1 17:17:13 test-vm sshd[3912]: error: kex_exchange_identification: Connection closed by remote host Jul 1 17:17:13 test-vm sshd[3912]: Connection closed by 35.199.196.131 port 45583 6.考察 今回は Cloud Logging へログ出力していますので、ログからもトレースしてみます。 VM インスタンス停止後、リクエスト送信元のリージョンから監視通信がタイムアウトし、監視失敗の判定をしていることがわかります。 ・ 到達可否の推移(1 = 到達、0 = 到達不可) ・ Cloud Logging のログ内容 ・ 監視間隔 今回設定では、 5 分間隔の監視でしたので、理論上は最大 10 分未満にてアラート検知がされます。 また、接続失敗の検知は 10 秒間レスポンスがない場合に監視失敗と判断されます。 その後、全チェックポイントでの失敗検知後にアラート判断となるため、若干のタイムラグがあるのかと思います。 ・ 構成について 内部 IP アドレス向けの稼働時間チェックはインターネットを経由せず、Google Cloud のグローバルな内部ネットワークを通じて VPC に 接続された Service Directory & エンドポイントへ向けて監視パケットを送信する、というような構成となっていることがわかりました。 費用感と使いどころ 1.費用感 内部 IP アドレスの死活監視では、Service Directory を経由するため、若干費用が発生します。 とはいえ、そこまで気にする費用感ではないかなと思われます。 サービス 月額費用 無料枠(100 万回)での利用想定 稼働チェック (内部 IP アドレス) 毎月 100 万回のチェックまでは無料 以降、1,000 回ごとに $0.30 最低 3 リージョンのリクエスト送信元が必要なため、 毎月 33 万回 まで無料 ・ 5分に1回チェックしたとすると。。。。。 (60*24/5) *3 *30 = 25,920 1,000,000/25,920 ≒ 38.58025 → つまり、5 分に 1 回の監視であれば、38 台までの稼働時間チェックは無料 Service Directory 名前空間、サービス、エンドポイントあたり $0.10 / 月 API 呼び出し 100 万回あたり $1.00 Service Directory の無料枠はないため、利用量として、 (1+1+38) * 0.1 + $1 = $5 ≒ 約 800 円未満 2.使いどころ 監視対象の台数にもよりますが、10 台 ~ 20 台を 5 分間隔で死活監視をする場合を想定すると、それ程の費用負担にはならないかなと思います。 また、Cloud Monitoring では 死活監視だけではなく、メトリクスに応じたパフォーマンス監視等も可能です。 もちろん、OSS の監視ソフトでも同じことができますので、ここは運用者のスキルセットや学習コストに応じて選択いただければと思います。 数台の死活監視のために別途監視サーバを立てて運用していくのはちょっと、という方はぜひマネージドな機能に監視をまかせてみるのもいかがでしょうか。 まとめ 一度リリースして安定稼働しているとあまり構成を見直すことはあまりないため便利なアップデートに追いつけてませんでしたが、「稼働時間チェック」はこんなに実用的になっていました。 Google Cloud マネージド機能で内部 IP アドレスの監視が完結できる 複数リージョンからの監視で可用性も担保 ログ管理サービス(Cloud Logging)に統合されているため、運用変更なく容易に監視が可能 最後まで読んでいただき、ありがとうございました! 当社システムサポートは、Google Cloud の導入・移行・運営支援を行っています。 クラウド移行含めた最適なシステム環境構築のご相談は、以下よりお願いいたします! Google Cloud導入についてのお問い合わせはこちら 頂きましたご意見につきましては、今後のより良い商品開発・サービス改善に活かしていきたいと考えております。 Author k-hirase 情シス常駐のなかで自然とインフラ領域へ。 運用保守、ネットワーク、セキュリティ、仮想化等を経て、現在はクラウドにたどり着く。 実は元VB6プログラマ。料理好き。 Compute Engine Google Cloud 2025年7月30日 【Google Cloud】VM インスタンスを内部 IP アドレスで死活監視しよう! Category Google Cloud 前の記事を読む AWS Summit Japan 2025 Day1 参加レポート 次の記事を読む 【Google Cloud】対談記事掲載のお知らせ ~オンプレミスの「Oracle Database」をクラウド化する新たな選択肢、決め手はこれだ~ Recommendation オススメ記事 2023年9月5日 Google Cloud 【Google Cloud】Looker Studio × Looker Studio Pro × Looker を徹底比較!機能・選び方を解説 2023年8月24日 Google Cloud 【Google Cloud】Migrate for Anthos and GKEでVMを移行してみた(1:概要編) 2022年10月10日 Google Cloud 【Google Cloud】AlloyDB と Cloud SQL を徹底比較してみた!!(第1回:AlloyDB の概要、性能検証編) BigQuery ML ワークショップ開催のお知らせ 生成AI導入支援パッケージ Discovery AI導入支援パッケージ Google Cloud ホワイトペーパー 新着記事 2026年5月22日 Google Cloud Google Cloudで実現する、企業向けAIエージェント基盤の考え方 2026年5月21日 Google Cloud BigQuery Graph 入門:エージェント時代の”関係性”データ分析 2026年5月21日 Google Cloud Sensitive Data ProtectionでPIIが残る理由と改善方法(Google Cloud Next’26 セッションの知見より) HOME Google Cloud 【Google Cloud】VM インスタンスを内部 IP アドレスで死活監視しよう!