公開の稼働時間チェックを作成する

このドキュメントでは、パブリック稼働時間チェックを作成する方法について説明します。パブリック稼働時間チェックでは、世界中の複数のロケーションから、一般公開されている URL または Google Cloud リソースにリクエストを発行して、リソースが応答するかどうかを確認できます。プライベート ネットワークの稼働時間チェックを作成する方法については、プライベート稼働時間チェックを作成するをご覧ください。

パブリック稼働時間チェックにより、次のモニタリング対象リソースの可用性を判断できます。

稼働時間チェックの管理とモニタリングに関する情報のリンクについては、このドキュメントの次のステップのセクションをご覧ください。

この機能は Google Cloud プロジェクトでのみサポートされています。App Hub 構成の場合は、App Hub ホスト プロジェクトまたはアプリ対応フォルダの管理プロジェクトを選択します。

稼働時間チェックについて

HTTP と HTTPS の場合、すべての URL リダイレクトをフォローし、稼働時間チェックで受信した最終的なレスポンスから成功基準を評価します。HTTPS チェックの場合、SSL 証明書の有効期限は、最後のレスポンスで受信したサーバー証明書に基づいて計算されます。

稼働時間チェックに成功するには、次の条件を満たす必要があります。

  • HTTP ステータスが指定した条件に一致する。
  • レスポンス データに必須のコンテンツがないか、必要なコンテンツがすでに存在する。

稼働時間チェックではページアセットの読み込みや JavaScript の実行は行われません。また稼働時間チェックのデフォルト構成には認証が含まれません。

始める前に

稼働時間チェックを保存する Google Cloud プロジェクトで、次の手順を完了します。

  1. 稼働時間チェックの作成に必要な権限を取得するには、プロジェクトに対して次の IAM ロールを付与するよう管理者に依頼してください。

    • モニタリング編集者(roles/monitoring.editor)- Google Cloud コンソール ユーザー
    • Monitoring Uptime Check 構成編集者(roles/monitoring.uptimeCheckConfigEditor)- API ユーザー
    • Monitoring AlertPolicy 編集者(roles/monitoring.alertPolicyEditor)- API ユーザー
    • Monitoring NotificationChannel 編集者(roles/monitoring.notificationChannelEditor)- API ユーザー

    ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

    必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

  2. 確認するリソースにパブリック エンドポイントがあるか、リソースが構成可能なファイアウォールの背後にあることを確認します。

    他のすべての構成では、プライベート稼働時間チェックを作成する必要があります。詳細については、プライベート稼働時間チェックを作成するをご覧ください。

  3. リソースがファイアウォールの背後にある場合は、稼働時間チェック サーバーの IP アドレスからの受信トラフィックを許可するように、そのファイアウォールを構成します。詳細については、稼働時間チェック サーバーの IP アドレスを一覧表示するをご覧ください。

  4. 通知の受信に使用する通知チャンネルを構成します。複数の種類の通知チャンネルを作成することをおすすめします。詳細については、通知チャンネルを作成して管理するをご覧ください。

  5. 稼働時間チェック用に少なくとも 3 つのチェッカーを特定します。稼働時間チェックのリージョン USA には、USA_OREGONUSA_IOWAUSA_VIRGINIA リージョンが含まれます。各 USA_* リージョンには 1 つのチェッカーがあり、USA には 3 つすべてが含まれます。その他の稼働時間チェックのリージョン(EUROPESOUTH_AMERICAASIA_PACIFIC)には、それぞれチェッカーが 1 つあります。

    Google Cloud コンソールの使用時に [グローバル] を選択するか、API の使用時に REGION_UNSPECIFIED を選択した場合、稼働時間チェックはすべての稼働時間チェック リージョンから発行されます。

  6. Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

      In the Google Cloud console, activate Cloud Shell.

      Activate Cloud Shell

      At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

      Terraform

      ローカル開発環境でこのページの Terraform サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。

      1. Install the Google Cloud CLI.

      2. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      3. To initialize the gcloud CLI, run the following command:

        gcloud init
      4. If you're using a local shell, then create local authentication credentials for your user account:

        gcloud auth application-default login

        You don't need to do this if you're using Cloud Shell.

        If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

      詳細については、 Google Cloud 認証ドキュメントのローカル開発環境の ADC の設定をご覧ください。

      C#

      ローカル開発環境でこのページの .NET サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。

      1. Install the Google Cloud CLI.

      2. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      3. To initialize the gcloud CLI, run the following command:

        gcloud init
      4. If you're using a local shell, then create local authentication credentials for your user account:

        gcloud auth application-default login

        You don't need to do this if you're using Cloud Shell.

        If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

      詳細については、 Google Cloud 認証ドキュメントのローカル開発環境の ADC の設定をご覧ください。

      Go

      ローカル開発環境でこのページの Go サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。

      1. Install the Google Cloud CLI.

      2. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      3. To initialize the gcloud CLI, run the following command:

        gcloud init
      4. If you're using a local shell, then create local authentication credentials for your user account:

        gcloud auth application-default login

        You don't need to do this if you're using Cloud Shell.

        If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

      詳細については、 Google Cloud 認証ドキュメントのローカル開発環境の ADC の設定をご覧ください。

      Java

      ローカル開発環境でこのページの Java サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。

      1. Install the Google Cloud CLI.

      2. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      3. To initialize the gcloud CLI, run the following command:

        gcloud init
      4. If you're using a local shell, then create local authentication credentials for your user account:

        gcloud auth application-default login

        You don't need to do this if you're using Cloud Shell.

        If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

      詳細については、 Google Cloud 認証ドキュメントのローカル開発環境の ADC の設定をご覧ください。

      Node.js

      ローカル開発環境でこのページの Node.js サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。

      1. Install the Google Cloud CLI.

      2. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      3. To initialize the gcloud CLI, run the following command:

        gcloud init
      4. If you're using a local shell, then create local authentication credentials for your user account:

        gcloud auth application-default login

        You don't need to do this if you're using Cloud Shell.

        If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

      詳細については、 Google Cloud 認証ドキュメントのローカル開発環境の ADC の設定をご覧ください。

      PHP

      ローカル開発環境でこのページの PHP サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。

      1. Install the Google Cloud CLI.

      2. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      3. To initialize the gcloud CLI, run the following command:

        gcloud init
      4. If you're using a local shell, then create local authentication credentials for your user account:

        gcloud auth application-default login

        You don't need to do this if you're using Cloud Shell.

        If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

      詳細については、 Google Cloud 認証ドキュメントのローカル開発環境の ADC の設定をご覧ください。

      Python

      ローカル開発環境でこのページの Python サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。

      1. Install the Google Cloud CLI.

      2. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      3. To initialize the gcloud CLI, run the following command:

        gcloud init
      4. If you're using a local shell, then create local authentication credentials for your user account:

        gcloud auth application-default login

        You don't need to do this if you're using Cloud Shell.

        If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

      詳細については、 Google Cloud 認証ドキュメントのローカル開発環境の ADC の設定をご覧ください。

      Ruby

      ローカル開発環境でこのページの Ruby サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。

      1. Install the Google Cloud CLI.

      2. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      3. To initialize the gcloud CLI, run the following command:

        gcloud init
      4. If you're using a local shell, then create local authentication credentials for your user account:

        gcloud auth application-default login

        You don't need to do this if you're using Cloud Shell.

        If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

      詳細については、 Google Cloud 認証ドキュメントのローカル開発環境の ADC の設定をご覧ください。

      REST

      このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      詳細については、 Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。

    稼働時間チェックを作成する

    ここでは、稼働時間チェックを作成して構成する方法について説明します。

    少なくとも 1 つの TCP または HTTP/s ポートが構成されている外部ロードバランサの稼働時間チェックを作成するには、次の操作を行います。または、サービスの [サービスの詳細] ページに移動し、[稼働時間チェックの作成] をクリックします。[サービスの詳細] ページから開始すると、サービス固有のフィールドが事前入力されます。

    コンソール

    Google Cloud コンソールを使用して稼働時間チェックを作成するには、次の操作を行います。

    1. Google Cloud コンソールで、[ 稼働時間チェック] ページに移動します。

      稼働時間チェックに移動する

      このページを検索バーで検索する場合は、小見出しが「Monitoring」の結果を選択します。

    2. Google Cloud コンソールのツールバーで、 Google Cloud プロジェクトを選択します。App Hub 構成の場合は、App Hub ホスト プロジェクトまたはアプリ対応フォルダの管理プロジェクトを選択します。
    3. [稼働時間チェックの作成] をクリックします。

      稼働時間チェック ダイアログを作成。

    4. 稼働時間チェックのターゲットを指定します。

      1. プロトコルを選択します。HTTPHTTPS、または TCP を選択できます。

      2. 次のリソースタイプのいずれか 1 つを選択します。

        • URL: 任意の IPv4 アドレスまたはホスト名。パスとポートは別々に入力します。
        • Kubernetes LoadBalancer Service: LoadBalancer タイプの Kubernetes Service
        • インスタンス: Compute Engine または AWS EC2 インスタンス
        • [App Engine]: App Engine アプリケーション(モジュール)
        • [Elastic Load Balancer]: AWS ロードバランサ
      3. プロトコル固有のフィールドを入力します。

        • TCP チェックの場合は、ポートを入力します。

        • HTTP チェックと HTTPS チェックの場合は、ホストまたはリソース内のパスを入力できます。これらのプロトコルを使用するすべての稼働時間チェックは、http://target/path にリクエストを送信します。この式で、URL リソースの場合、target はホスト名または IP アドレスです。App Engine リソースの場合、target はサービス名に由来するホスト名です。インスタンスとロードバランサのリソースの場合は、target はリソースまたはリソースのグループに指定した名前に由来する IP アドレスです。

          path フィールドを空白のままにするか、値を / に設定すると、リクエストは http://target/ に発行されます。

          たとえば、URL リソース example.com/tester に稼働時間チェックを発行するには、[ホスト名] フィールドを example.com に、[パス] フィールドを /tester に設定します。

          //hello をサポートするコーディネーターによってサーバーを App Engine にデプロイしたとします。稼働時間チェックを '/' ハンドラに発行するには、[パス] フィールドを空白のままにします。稼働時間チェックを /hello ハンドラに発行するには、[パス] フィールドの値を /hello に設定します。

      4. リソース固有のフィールドを入力します。

        • URL リソースの場合は、[ホスト名] フィールドにホスト名を入力します。たとえば、「example.com」と入力します。

        • App Engine リソースの場合は、[サービス] フィールドにサービス名を入力します。

        • Elastic Load Balancer リソースとインスタンス リソースの場合は、[対象] フィールドに次のように入力します。

          • 単一のインスタンスまたはロードバランサに対して稼働時間チェックを発行するには、[単一] を選択し、メニューを使用して特定のインスタンスまたはロードバランサを選択します。
          • モニタリング グループに稼働時間チェックを発行するには、[グループ] を選択し、メニューを使用してグループ名を選択します。
      5. 省略可: 稼働時間チェックを実行する頻度を設定するには、[確認頻度] フィールドを使用します。

      6. 省略可: チェッカー リージョンを選択するか、SSL 証明書、認証、ヘッダー、および HTTP チェックと HTTPS チェックのポートを構成するには、[More target options] をクリックします。

        • リージョン: 稼働時間チェックがリクエストを受信するリージョンを選択します。稼働時間チェックには、少なくとも 3 つのチェッカーが必要です。3 つのチェッカーがある米国を除くすべてのリージョンに、1 つのチェッカーがあります。デフォルトの設定(グローバル)にはすべてのリージョンが含まれています。
        • ICMP Pings: 最大 3 回の ping を送信するように稼働時間チェックを構成します。詳細については、ICMP ping を使用するをご覧ください。
        • リクエスト メソッド: HTTP チェックの場合、リクエスト メソッドを選択します。
        • 本文: HTTP POST チェックの場合、URL がエンコードされた本文を入力します。エンコードは自分で行う必要があります。他のすべてのチェックでは、このフィールドは空のままにします。
        • [ホスト] ヘッダー: 仮想ホストをチェックする場合に入力します。このフィールドは TCP チェックには使用できません。
        • ポート: ポート番号を指定します。
        • Custom Headers: カスタム ヘッダーを追加し、必要に応じて暗号化します。暗号化すると、ヘッダーの値はフォームに表示されません。認証に関連するヘッダーを他のユーザーに表示しないように暗号化を使用します。
        • 認証: これらの値は、認可ヘッダーとして送信されます。このフィールドは TCP チェックには使用できません。

          次のいずれかを選択します。

          • 基本認証: 単一のユーザー名とパスワードを指定します。フォームではパスワードは常に非表示です。
          • サービス エージェント認証: 有効にすると、モニタリング サービス エージェントID トークンが生成されます。このオプションは HTTPS チェックでのみ使用できます。
        • SSL 証明書の検証: URL リソースで HTTPS を選択した場合、デフォルトでは HTTPS 経由での接続を試行し、SSL 証明書を検証します。URL に無効な証明書がある場合、稼働時間チェックは失敗します。証明書が無効になる理由は次のとおりです。

          • 有効期限が切れた証明書
          • 自己署名証明書
          • ドメイン名が一致しない証明書
          • 認証局情報アクセス(AIA)拡張機能を使用している証明書。

          HTTPS 稼働時間チェックによって SSL 証明書を検証させるには、[SSL 証明書の検証] を選択します。

          SSL 証明書の検証を無効にするには、[SSL 証明書の検証] チェックボックスをオフにします。

          AIA 拡張機能を使用した SSL 証明書がある場合は、SSL 証明書の検証を無効にする必要があります。これらのタイプの証明書はサポートされておらず、検証シーケンスは失敗します。通常、エラー メッセージは「10000 ミリ秒の SSL handshake エラーで応答しています」のようになります。

          指標 monitoring.googleapis.com/uptime_check/time_until_ssl_cert_expires を使用して、証明書が期限切れになる前に通知するアラート ポリシーを作成できます。詳細については、サンプル ポリシー: 稼働時間チェック ポリシーをご覧ください。

          [SSL 証明書の検証] チェックボックスをオンにします。

    5. [続行] をクリックし、レスポンス要件を構成します。このセクションの設定にはすべてデフォルト値があります。

      • [レスポンスのタイムアウト] フィールドを使用して、稼働時間チェックのタイムアウト期間を変更します。この期間内に複数のロケーションからレスポンスを受け取らなかった場合、稼働時間チェックは失敗となります。

      • コンテンツ マッチを実行するように稼働時間チェックを構成するには、トグルラベルが「コンテンツ マッチが有効」になっていることを確認します。

        • オプションのメニューから [Response Content Match Type] を選択します。このフィールドは、レスポンスのコンテンツと返されたデータをどのように比較するかを指定します。たとえば、レスポンスのコンテンツが abcd で、コンテンツのマッチタイプが [次を含む] であるとします。稼働時間チェックが成功するのは、レスポンス データに abcd が含まれている場合のみです。詳細については、レスポンス データを検証するをご覧ください。
        • レスポンスのコンテンツを入力します。レスポンスのコンテンツには 1,024 バイト以下の文字列を指定する必要があります。API では、このフィールドは ContentMatcher オブジェクトです。
      • 稼働時間チェックが原因でログエントリが作成されないようにするには、[チェックの失敗をログに出力] をオフにします。

      • HTTP 稼働時間チェックの場合は、許容されるレスポンス コードを構成します。デフォルトでは、HTTP 稼働時間チェックで 2xx レスポンスはすべて正常なレスポンスと見なされます。

    6. [続行] をクリックして通知を構成します。

      稼働時間チェックが失敗した場合に通知を受け取るには、アラート ポリシーを作成して、そのポリシーの通知チャンネルを構成します。

      1. 省略可: アラート ポリシーの名前を更新します。
      2. 省略可: [時間] フィールドで、稼働時間チェックの失敗通知を送信するまでの時間を選択します。デフォルトでは、2 つ以上のリージョンが 1 分以上稼働時間チェックの失敗を報告したときに通知が送信されます。
      3. [通知チャンネル] というラベルのボックスで、メニュー)をクリックし、追加するチャンネルを選択して、[OK] をクリックします。

        メニューでは、通知がチャンネル タイプごとにアルファベット順にグループ化されます。

      アラート ポリシーを作成しない場合は、切り替えボタンのテキストが「アラートを作成しない」になっていることを確認します。

    7. [続行] をクリックし、稼働時間チェックを完了します。

      1. 稼働時間チェックのわかりやすいタイトルを入力します。

      2. 省略可: 稼働時間チェックにユーザー定義のラベルを追加する手順は次のとおりです。

        1. ユーザーラベルを表示します)をクリックします。
        2. [キー] フィールドにラベルの名前を入力します。ラベル名の先頭は小文字にする必要があり、小文字、数字、アンダースコア、ダッシュを使用できます。たとえば、「severity」と入力します。
        3. [] フィールドにラベルの値を入力します。ラベルの値には、英小文字、数字、アンダースコア、ダッシュを使用できます。たとえば、「critical」と入力します。
        4. 追加するラベルごとに、[Add user label] をクリックして、ラベルのキーと値を入力します。
      3. 稼働時間チェックの構成を確認するには、[テスト] をクリックします。結果が期待どおりでない場合は、チェックの失敗を参照して構成を修正し、検証ステップを繰り返します。

      4. [作成] をクリックします。[作成] を選択していて、必須フィールドに値が入力されていないと、エラー メッセージが表示されます。

    gcloud

    稼働時間チェックを作成するには、gcloud monitoring uptime create コマンドを実行します。

    gcloud monitoring uptime create DISPLAY_NAME REQUIRED_FLAGS OPTIONAL_FLAGS --project=PROJECT_ID
    

    前述のコマンドを実行する前に、次のように置き換えます。

    • PROJECT_ID: プロジェクトの ID。App Hub 構成の場合は、App Hub ホスト プロジェクトまたはアプリ対応フォルダの管理プロジェクトを選択します。

    • DISPLAY_NAME: 稼働時間チェックの名前。

    • REQUIRED_FLAGS: 稼働時間チェックでプローブされるリソースを指定するように構成します。たとえば、次のコマンドは、特定のプロジェクトの URL EXAMPLE.com をテストする稼働時間チェックを作成します。

      gcloud monitoring uptime create DISPLAY_NAME \
      --resource-labels=host=EXAMPLE.com,project_id=PROJECT_ID \
      --resource-type=uptime-url
      

      上のコマンドでは、リソースタイプ uptime-url で必要とされる各ラベルの値を指定しています。

    • OPTIONAL_FLAGS: デフォルト値をオーバーライドするようにこれらのフラグを構成します。たとえば、プロトコルが http でない場合は、--protocol フラグを設定する必要があります。

    Terraform

    Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。詳細については、Terraform プロバイダのリファレンス ドキュメントをご覧ください。

    稼働時間チェックと、そのチェックをモニタリングするアラート ポリシーを作成するには、次の操作を行います。

    1. プロジェクトに Terraform をインストールして構成します。App Hub 構成の場合は、App Hub ホスト プロジェクトまたはアプリ対応フォルダの管理プロジェクトを選択します。
    2. Terraform 構成ファイルを編集して google_monitoring_uptime_check_config リソースを追加し、構成ファイルを適用します。

      次の例は、公開 URL を確認する構成を示しています。

      resource "google_monitoring_uptime_check_config" "example" {
          display_name = "example"
          timeout      = "60s"
      
          http_check {
              port = "80"
              request_method = "GET"
          }
      
          monitored_resource {
              type = "uptime_url"
              labels = {
                  project_id = "PROJECT_ID"
                  host="EXAMPLE.com"
              }
          }
      
          checker_type = "STATIC_IP_CHECKERS"
      }
      

      上の式で:

      • PROJECT_ID は、プロジェクトの ID です。App Hub 構成の場合は、App Hub ホスト プロジェクトまたはアプリ対応フォルダの管理プロジェクトを選択します。
      • EXAMPLE.com はホスト URL です。
    3. 省略可: 通知チャンネルとアラート ポリシーを作成します。

      次の手順では、 Google Cloud コンソールを使用して通知チャンネルとアラート ポリシーを作成します。このアプローチでは、アラート ポリシーが稼働時間チェックによって生成されたデータのみをモニタリングします。

      1. 通知チャンネルを作成する方法は次のとおりです。

        1. Google Cloud コンソールで、[ アラート] ページに移動します。

          [アラート] に移動

          このページを検索バーで検索する場合は、小見出しが「Monitoring」の結果を選択します。

        2. Google Cloud コンソールのツールバーで、 Google Cloud プロジェクトを選択します。App Hub 構成の場合は、App Hub ホスト プロジェクトまたはアプリ対応フォルダの管理プロジェクトを選択します。
        3. [通知チャンネルを管理] を選択します。
        4. 追加するチャンネルの種類に移動し、[追加] をクリックして、ダイアログを完了します。
      2. アラート ポリシーを作成するには、次の操作を行います。

        1. Google Cloud コンソールで、[ 稼働時間チェック] ページに移動します。

          稼働時間チェックに移動する

          このページを検索バーで検索する場合は、小見出しが「Monitoring」の結果を選択します。

        2. Google Cloud コンソールのツールバーで、 Google Cloud プロジェクトを選択します。App Hub 構成の場合は、App Hub ホスト プロジェクトまたはアプリ対応フォルダの管理プロジェクトを選択します。
        3. 稼働時間チェックを見つけて、[ その他] を選択し、[アラート ポリシーを追加] を選択します。
        4. ダイアログで [通知と名前] セクションに移動し、[通知チャンネル] を開いて選択します。
        5. アラート ポリシーに名前を付けて、[ポリシーを作成] をクリックします。

      アラート ポリシーを作成するには、構成ファイルに google_monitoring_alert_policy リソースを追加し、新しい構成を適用します。

    C#

    Monitoring で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。

    public static object CreateUptimeCheck(string projectId, string hostName,
        string displayName)
    {
        // Define a new config.
        var config = new UptimeCheckConfig()
        {
            DisplayName = displayName,
            MonitoredResource = new MonitoredResource()
            {
                Type = "uptime_url",
                Labels = { { "host", hostName } }
            },
            HttpCheck = new UptimeCheckConfig.Types.HttpCheck()
            {
                Path = "/",
                Port = 80,
            },
            Timeout = TimeSpan.FromSeconds(10).ToDuration(),
            Period = TimeSpan.FromMinutes(5).ToDuration()
        };
        // Create a client.
        var client = UptimeCheckServiceClient.Create();
        ProjectName projectName = new ProjectName(projectId);
        // Create the config.
        var newConfig = client.CreateUptimeCheckConfig(
            projectName,
            config,
            CallSettings.FromExpiration(
                Expiration.FromTimeout(
                    TimeSpan.FromMinutes(2))));
        Console.WriteLine(newConfig.Name);
        return 0;
    }
    

    Java

    Monitoring で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。

    private static void createUptimeCheck(
        String projectId, String displayName, String hostName, String pathName) throws IOException {
      CreateUptimeCheckConfigRequest request =
          CreateUptimeCheckConfigRequest.newBuilder()
              .setParent(ProjectName.format(projectId))
              .setUptimeCheckConfig(
                  UptimeCheckConfig.newBuilder()
                      .setDisplayName(displayName)
                      .setMonitoredResource(
                          MonitoredResource.newBuilder()
                              .setType("uptime_url")
                              .putLabels("host", hostName))
                      .setHttpCheck(HttpCheck.newBuilder().setPath(pathName).setPort(80))
                      .setTimeout(Duration.newBuilder().setSeconds(10))
                      .setPeriod(Duration.newBuilder().setSeconds(300)))
              .build();
      try (UptimeCheckServiceClient client = UptimeCheckServiceClient.create()) {
        UptimeCheckConfig config = client.createUptimeCheckConfig(request);
        System.out.println("Uptime check created: " + config.getName());
      } catch (Exception e) {
        usage("Exception creating uptime check: " + e.toString());
        throw e;
      }
    }

    Go

    Monitoring で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。

    
    // createGet creates an example uptime check on a GET request.
    func createGet(w io.Writer, projectID string) (*monitoringpb.UptimeCheckConfig, error) {
    	ctx := context.Background()
    	client, err := monitoring.NewUptimeCheckClient(ctx)
    	if err != nil {
    		return nil, fmt.Errorf("NewUptimeCheckClient: %w", err)
    	}
    	defer client.Close()
    	req := &monitoringpb.CreateUptimeCheckConfigRequest{
    		Parent: "projects/" + projectID,
    		UptimeCheckConfig: &monitoringpb.UptimeCheckConfig{
    			DisplayName: "new GET uptime check",
    			Resource: &monitoringpb.UptimeCheckConfig_MonitoredResource{
    				MonitoredResource: &monitoredres.MonitoredResource{
    					Type: "uptime_url",
    					Labels: map[string]string{
    						"host": "example.com",
    					},
    				},
    			},
    			CheckRequestType: &monitoringpb.UptimeCheckConfig_HttpCheck_{
    				HttpCheck: &monitoringpb.UptimeCheckConfig_HttpCheck{
    					RequestMethod: monitoringpb.UptimeCheckConfig_HttpCheck_GET,
    					Path:          "/",
    					Port:          80,
    				},
    			},
    			Timeout: &duration.Duration{Seconds: 10},
    			Period:  &duration.Duration{Seconds: 300},
    		},
    	}
    	config, err := client.CreateUptimeCheckConfig(ctx, req)
    	if err != nil {
    		return nil, fmt.Errorf("CreateUptimeCheckConfig GET: %w", err)
    	}
    	fmt.Fprintf(w, "Successfully created GET uptime check %q\n", config.GetDisplayName())
    	return config, nil
    }
    
    // createPost creates an example uptime check on a POST request.
    func createPost(w io.Writer, projectID string) (*monitoringpb.UptimeCheckConfig, error) {
    	ctx := context.Background()
    	client, err := monitoring.NewUptimeCheckClient(ctx)
    	if err != nil {
    		return nil, fmt.Errorf("NewUptimeCheckClient: %w", err)
    	}
    	defer client.Close()
    	req := &monitoringpb.CreateUptimeCheckConfigRequest{
    		Parent: "projects/" + projectID,
    		UptimeCheckConfig: &monitoringpb.UptimeCheckConfig{
    			DisplayName: "new POST uptime check",
    			Resource: &monitoringpb.UptimeCheckConfig_MonitoredResource{
    				MonitoredResource: &monitoredres.MonitoredResource{
    					Type: "uptime_url",
    					Labels: map[string]string{
    						"host": "example.com",
    					},
    				},
    			},
    			CheckRequestType: &monitoringpb.UptimeCheckConfig_HttpCheck_{
    				HttpCheck: &monitoringpb.UptimeCheckConfig_HttpCheck{
    					RequestMethod: monitoringpb.UptimeCheckConfig_HttpCheck_POST,
    					ContentType:   monitoringpb.UptimeCheckConfig_HttpCheck_URL_ENCODED,
    					Path:          "/",
    					Port:          80,
    					Body:          []byte(base64.URLEncoding.EncodeToString([]byte("key: value"))),
    				},
    			},
    			Timeout: &duration.Duration{Seconds: 10},
    			Period:  &duration.Duration{Seconds: 300},
    		},
    	}
    	config, err := client.CreateUptimeCheckConfig(ctx, req)
    	if err != nil {
    		return nil, fmt.Errorf("CreateUptimeCheckConfig POST: %w", err)
    	}
    	fmt.Fprintf(w, "Successfully created POST uptime check %q\n", config.GetDisplayName())
    	return config, nil
    }
    

    Node.js

    Monitoring で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。

    // Imports the Google Cloud client library
    const monitoring = require('@google-cloud/monitoring');
    
    // Creates a client
    const client = new monitoring.UptimeCheckServiceClient();
    
    /**
     * TODO(developer): Uncomment and edit the following lines of code.
     */
    // const projectId = 'YOUR_PROJECT_ID';
    // const hostname = 'mydomain.com';
    
    const request = {
      // i.e. parent: 'projects/my-project-id'
      parent: client.projectPath(projectId),
      uptimeCheckConfig: {
        displayName: 'My Uptime Check',
        monitoredResource: {
          // See the Uptime Check docs for supported MonitoredResource types
          type: 'uptime_url',
          labels: {
            host: hostname,
          },
        },
        httpCheck: {
          path: '/',
          port: 80,
        },
        timeout: {
          seconds: 10,
        },
        period: {
          seconds: 300,
        },
      },
    };
    
    // Creates an uptime check config for a GCE instance
    const [uptimeCheckConfig] = await client.createUptimeCheckConfig(request);
    console.log('Uptime check created:');
    console.log(`ID: ${uptimeCheckConfig.name}`);
    console.log(`Display Name: ${uptimeCheckConfig.displayName}`);
    console.log('Resource: %j', uptimeCheckConfig.monitoredResource);
    console.log('Period: %j', uptimeCheckConfig.period);
    console.log('Timeout: %j', uptimeCheckConfig.timeout);
    console.log(`Check type: ${uptimeCheckConfig.check_request_type}`);
    console.log(
      'Check: %j',
      uptimeCheckConfig.httpCheck || uptimeCheckConfig.tcpCheck
    );
    console.log(
      `Content matchers: ${uptimeCheckConfig.contentMatchers
        .map(matcher => matcher.content)
        .join(', ')}`
    );
    console.log(`Regions: ${uptimeCheckConfig.selectedRegions.join(', ')}`);
    

    PHP

    Monitoring で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。

    use Google\Api\MonitoredResource;
    use Google\Cloud\Monitoring\V3\Client\UptimeCheckServiceClient;
    use Google\Cloud\Monitoring\V3\CreateUptimeCheckConfigRequest;
    use Google\Cloud\Monitoring\V3\UptimeCheckConfig;
    
    /**
     * Example:
     * ```
     * create_uptime_check($projectId, 'myproject.appspot.com', 'Test Uptime Check!');
     * ```
     *
     * @param string $projectId Your project ID
     * @param string $hostName
     * @param string $displayName
     */
    function create_uptime_check($projectId, $hostName = 'example.com', $displayName = 'New uptime check')
    {
        $projectName = 'projects/' . $projectId;
        $uptimeCheckClient = new UptimeCheckServiceClient([
            'projectId' => $projectId,
        ]);
    
        $monitoredResource = new MonitoredResource();
        $monitoredResource->setType('uptime_url');
        $monitoredResource->setLabels(['host' => $hostName]);
    
        $uptimeCheckConfig = new UptimeCheckConfig();
        $uptimeCheckConfig->setDisplayName($displayName);
        $uptimeCheckConfig->setMonitoredResource($monitoredResource);
        $createUptimeCheckConfigRequest = (new CreateUptimeCheckConfigRequest())
            ->setParent($projectName)
            ->setUptimeCheckConfig($uptimeCheckConfig);
    
        $uptimeCheckConfig = $uptimeCheckClient->createUptimeCheckConfig($createUptimeCheckConfigRequest);
    
        printf('Created an uptime check: %s' . PHP_EOL, $uptimeCheckConfig->getName());
    }

    Python

    Monitoring で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。

    def create_uptime_check_config_get(
        project_id: str, host_name: str = None, display_name: str = None
    ) -> uptime.UptimeCheckConfig:
        """Creates a new uptime check configuration
    
        Args:
            project_id: Google Cloud project id where the uptime check is created
            host_name: An example label's value for the "host" label
            display_name: A human friendly name of the configuration
    
        Returns:
            A structure that describes a new created uptime check
        """
        config = monitoring_v3.UptimeCheckConfig()
        config.display_name = display_name or "New GET uptime check"
        config.monitored_resource = {
            "type": "uptime_url",
            "labels": {"host": host_name or "example.com"},
        }
        config.http_check = {
            "request_method": monitoring_v3.UptimeCheckConfig.HttpCheck.RequestMethod.GET,
            "path": "/",
            "port": 80,
        }
        config.timeout = {"seconds": 10}
        config.period = {"seconds": 300}
    
        client = monitoring_v3.UptimeCheckServiceClient()
        new_config = client.create_uptime_check_config(
            request={"parent": project_id, "uptime_check_config": config}
        )
        pprint.pprint(new_config)
        return new_config
    
    
    def create_uptime_check_config_post(
        project_id: str, host_name: str = None, display_name: str = None
    ) -> uptime.UptimeCheckConfig:
        """Creates a new uptime check configuration
    
        Args:
            project_id: Google Cloud project id where the uptime check is created
            host_name: An example label's value for the "host" label
            display_name: A human friendly name of the configuration
    
        Returns:
            A structure that describes a new created uptime check
        """
        config = monitoring_v3.UptimeCheckConfig()
        config.display_name = display_name or "New POST uptime check"
        config.monitored_resource = {
            "type": "uptime_url",
            "labels": {"host": host_name or "example.com"},
        }
        config.http_check = {
            "request_method": monitoring_v3.UptimeCheckConfig.HttpCheck.RequestMethod.POST,
            "content_type": monitoring_v3.UptimeCheckConfig.HttpCheck.ContentType.URL_ENCODED,
            "body": "foo=bar".encode("utf-8"),
            "path": "/",
            "port": 80,
        }
        config.timeout = {"seconds": 10}
        config.period = {"seconds": 300}
    
        client = monitoring_v3.UptimeCheckServiceClient()
        new_config = client.create_uptime_check_config(
            request={"parent": project_id, "uptime_check_config": config}
        )
        pprint.pprint(new_config)
        return new_config
    
    

    Ruby

    Monitoring で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。

    gem "google-cloud-monitoring"
    require "google/cloud/monitoring"
    
    def create_uptime_check_config project_id: nil, host_name: nil, display_name: nil
      client = Google::Cloud::Monitoring.uptime_check_service
      project_name = client.project_path project: project_id
      config = {
        display_name:       display_name.nil? ? "New uptime check" : display_name,
        monitored_resource: {
          type:   "uptime_url",
          labels: { "host" => host_name.nil? ? "example.com" : host_name }
        },
        http_check:         { path: "/", port: 80 },
        timeout:            { seconds: 10 },
        period:             { seconds: 300 }
      }
      new_config = client.create_uptime_check_config \
        parent:              project_name,
        uptime_check_config: config
      puts new_config.name
      new_config
    end

    REST

    稼働時間チェックを作成するには、projects.uptimeCheckConfigs.create メソッドを呼び出します。メソッドのパラメータを次のように設定します。

    • parent: 必須。稼働時間チェックを作成するプロジェクト。App Hub 構成の場合は、App Hub ホスト プロジェクトまたはアプリ対応フォルダの管理プロジェクトを選択します。 このフィールドの形式は次のとおりです。

      projects/PROJECT_ID
      
    • リクエスト本文には、新しい稼働時間チェックの UptimeCheckConfig オブジェクトを含める必要があります。このページでは、いくつかのフィールドについて説明します。このオブジェクトとそのフィールドの詳細については、UptimeCheckConfig のドキュメントをご覧ください。

      • 構成オブジェクトの name フィールドは空白のままにします。このフィールドは、システムがレスポンス構成オブジェクトを作成するときに設定します。

      • HTTP または HTTPS チェックを構成する場合は、UptimeCheckConfig オブジェクトの HttpCheck フィールドに入力する必要があります。このオブジェクトでは、requestMethod フィールドを GET または POST に設定します。このフィールドを省略するか METHOD_UNSPECIFIED に設定すると、GET リクエストが発行されます。

        POST リクエストを構成する場合は、contentTypecustomContentType(任意)、body の各フィールドに入力します。

    create メソッドは、新しい構成に応じた UptimeCheckConfig オブジェクトを返します。

    作成された稼働時間チェックの構成が想定どおりに機能しない場合は、このページのチェックの失敗セクションをご覧ください。

    稼働時間チェックの結果が Monitoring に送信され始めるまでに、最大 5 分の遅延が発生する可能性があります。その間、稼働時間チェック ダッシュボードには「データがありません」というステータスが表示されます。

    ICMP ping を使用する

    失敗したパブリック稼働時間チェックをトラブルシューティングするには、稼働時間チェック中に最大 3 つの ICMP ping を送信するように稼働時間チェックを構成できます。ping を使用すると、ネットワーク接続の問題やアプリケーションのタイムアウトなど、さまざまな原因による障害を区別できます。

    デフォルトでは、稼働時間チェックは ping を送信しません。各 ping により、稼働時間チェックにレイテンシが発生します。プライベート稼働時間チェックでは ping を送信できません。

    パブリック稼働時間チェックが失敗した場合、ping の結果は Cloud Logging ログに書き込まれます。ping が失敗すると、次のフィールドがログエントリの httpRequest フィールドに追加されます。

    • rtt_usec: 失敗した ping リクエストのラウンドトリップ時間。
    • unreachable_count: ステータス コード ICMP_DEST_UNREACH を返した ping リクエストの数。
    • no_answer_count: タイムアウトしてレスポンスが返されなかった ping リクエストの数。

    成功した稼働時間チェックの ping の結果はログに記録されません。

    ping を構成する

    各稼働時間チェック構成には、HttpCheck オブジェクトまたは TcpCheck オブジェクトが含まれます。これらの両方のオブジェクトに pingConfig フィールドが含まれます。このフィールドを使用して、各チェックに含める ICMP ping の回数を指定します(最大 3 回)。デフォルトでは、ping は送信されません。

    ping を構成するには、次のいずれかを行います。

    • Google Cloud コンソールを使用する場合は、[More target options] を開いて、[ICMP Pings] フィールドに値を入力します。

    • Cloud Monitoring API を使用する場合は、次の構造の PingConfig オブジェクトを使用します。

      {
        "pingsCount": integer
      }
      

      稼働時間チェック構成に Monitoring API を使用する方法については、稼働時間チェックを作成する: API または稼働時間チェックを編集する: API をご覧ください。

    稼働時間チェックを確認する

    Google Cloud コンソールで稼働時間チェックを作成するときに、保存前にその構成をテストできます。

    チェックの成功

    次の条件に当てはまる場合、稼働時間チェックが成功します。

    • HTTP ステータスが、選択した条件に一致する。
    • レスポンスに必須のコンテンツが指定されていないか、レスポンスを検索して必要なコンテンツが見つかった。

    チェックの失敗

    以下に、稼働時間チェックが失敗する原因の一部を示します。

    • Connection Error - Refused: デフォルトの HTTP 接続タイプを使用している場合、HTTP リクエストに応答しているウェブサーバーがインストールされていることを確認します。新しいインスタンスにウェブサーバーがインストールされていない場合、接続エラーが発生することがあります。Compute Engine のクイックスタートをご覧ください。HTTPS 接続タイプを使用する場合は、追加の構成手順を実行しなければならないことがあります。ファイアウォールの問題については、稼働時間チェック サーバーの IP アドレスを一覧表示するをご覧ください。
    • 名前またはサービスが見つかりません: ホスト名が正しくない可能性があります。
    • 403 Forbidden: サービスが稼働時間チェッカーにエラーコードを返しています。たとえば、Apache ウェブサーバーのデフォルト構成は、Amazon Linux ではこのコードを返しますが、他のいくつかの Linux バージョンではコード 200 (Success) を返します。Amazon Linux の LAMP チュートリアルまたはご使用のウェブサーバーのドキュメントをご覧ください。
    • 404 Not found: パスが正しくない可能性があります。
    • 408 Request timeout、またはレスポンスなし: ポート番号が正しくないか、サービスが稼働していない可能性があります。また、サービスがアクセスできない状態になっているか、タイムアウト値が小さすぎる可能性もあります。ファイアウォールが稼働時間サーバーからのトラフィックを許可していることを確認してください。詳しくは稼働時間チェック サーバーの IP アドレスを一覧表示するをご覧ください。タイムアウトの上限は、[レスポンスの検証] オプションの一部として指定されます。

      ネットワークの輻輳が原因でリクエストのタイムアウトが発生することがあります。たとえば、一時的なネットワーク輻輳により、1 つのチェッカーは失敗し、他のすべてのチェッカーは成功することがあります。アラート ポリシーでデフォルト構成を使用している場合、1 つのチェッカーでエラーが発生しても通知は発生しません。

    稼働時間チェックが ping を送信するように構成されている場合、失敗した稼働時間チェックの ping の結果は Cloud Logging に書き込まれます。詳細については、ICMP ping を使用するをご覧ください。

    次のステップ