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

このドキュメントでは、非公開稼働時間チェックを構成する方法について説明します。非公開の稼働時間チェックにより、Identity and Access Management(IAM)の制限と VPC Service Controls の境界を適用しながら、お客様の Virtual Private Cloud(VPC)ネットワークへの HTTP リクエストが有効になります。非公開稼働時間チェックでは、仮想マシン(VM)や L4 内部ロードバランサ(ILB)などのリソースにプライベート ネットワーク経由でリクエストを送信できます。

プライベート ネットワークにあるリソースの内部 IP アドレスは、プライベート ネットワーク アクセスが有効になっている Service Directory サービスとして記録されます。プライベート稼働時間チェックを使用するには、Service Directory プロダクトを使用してプライベート ネットワーク アクセスを構成する必要があります。

非公開稼働時間チェックを格納する Google Cloud プロジェクトと、Service Directory サービスを格納する Google Cloud プロジェクトは、異なるプロジェクトでも構いません。Cloud Monitoring を使用すると、指標スコープで 1 つのプロジェクトから複数の Google Cloud プロジェクトのリソースをモニタリングできます。稼働時間チェックが定義されているプロジェクトは、指標スコープのスコーピング プロジェクトになります。指標スコープは、スコーピング プロジェクトでモニタリングするすべてのプロジェクトのリストです。Service Directory サービスは、スコーピング プロジェクト、または指標スコープのプロジェクトで定義できます。指標スコープの詳細については、指標スコープの概要をご覧ください。

プライベート ネットワークとそのリソース(VM やロードバランサなど)は、別の Google Cloud プロジェクトに存在する可能性もあります。このプロジェクトは、稼働時間チェックのスコーピング プロジェクトの指標スコープに存在する必要はありません。 Service Directory サービスは稼働時間の指標を収集するため、指標スコープ内に存在する必要がありますが、カプセル化されたリソースはそうではありません。

このドキュメントでは、Google Cloud コンソールまたは API を使用して、プライベート ネットワークを設定し、その Service Directory のリソースを構成する方法について説明します。ここでのAPIの例では、プライベート ネットワークと Service Directory サービスが、稼働時間チェックのスコーピング プロジェクトに存在することを前提としています。ただし、非公開稼働時間チェックを作成するでは、API を使用して、指標スコープで Service Directory サービスを使用する稼働時間チェックを作成する方法についても説明します。

パブリック IP アドレスを使用する稼働時間チェックを構成する方法については、公開稼働時間チェックの作成をご覧ください。稼働時間チェックの管理とモニタリングに関する情報については、このドキュメントの次のステップのセクションをご覧ください。

始める前に

  1. 次の API を有効にします。

    • Cloud Monitoring API: monitoring.googleapis.com
    • Service Directory API: servicedirectory.googleapis.com
    • Service Networking API: servicenetworking.googleapis.com
    • Compute Engine API: compute.googleapis.com

    API を有効にするには、gcloud CLI または Google Cloud コンソールを使用します。次のタブでは、gcloud CLI をインストールして Cloud Monitoring API を有効にする方法について説明します。

    Google Cloud コンソール

    1. Google Cloud コンソールで、API を有効にする Google Cloud プロジェクトを選択し、[API とサービス] ページに移動します。

      [API とサービス] に移動

    2. [API とサービスを有効にする] ボタンをクリックします。

    3. 「Monitoring」を検索します。

    4. 検索結果で、[Stackdriver Monitoring API] をクリックします。

    5. [API が有効です]が表示されている場合、その API はすでに有効になっています。有効になっていない場合は、[有効にする] をクリックします。

    gcloud CLI

    1. ワークステーションに Google Cloud CLI がまだインストールされていない場合は、gcloud CLI のインストールをご覧ください。

    2. Monitoring API が有効になっているかどうかを確認するには、ワークステーションで、次のコマンドを実行します(PROJECT_ID は API を有効にするプロジェクトの ID に置き換えます)。

      gcloud services list --project=PROJECT_ID
      

      出力に monitoring.googleapis.com が表示されている場合、API は有効になっています。

    3. API が有効になっていない場合は、次のコマンドを実行して有効にします。

      gcloud services enable monitoring --project=PROJECT_ID
      

      詳細については、gcloud services をご覧ください。

    他の API を有効にする場合と同じ手順を使用できます。

    • Google Cloud コンソールを使用するには、表示名(「Service Directory API」など)を検索します。
    • gcloud CLI を使用するには、googleapis.com 名の最初の要素(servicedirectory など)を指定します。
  2. 通知の受信に使用する通知チャンネルを構成します。複数の種類の通知チャンネルを作成することをおすすめします。詳しくは、通知チャンネルの作成と管理をご覧ください。

  3. プライベート ネットワークを構成し、そのプライベート ネットワークにアクセスできるように VM または ILB を構成します。詳しくは、プライベート サービス アクセスをご覧ください。

    ILB をターゲットとする非公開チェックは、稼働時間チェッカーがあるリージョンに限定されます。稼働時間チェック リージョン USA には、USA_OREGONUSA_IOWAUSA_VIRGINIA リージョンが含まれます。各 USA_* リージョンには 1 つのチェッカーがあり、USA には 3 つすべてが含まれます。その他の稼働時間チェック リージョン(EUROPESOUTH_AMERICAASIA_PACIFIC)には、それぞれチェッカーが 1 つあります。この制限を取り除くには、ロードバランサへのグローバル アクセスを構成する必要があります。グローバル アクセスを構成する方法の詳細については、このドキュメントの Service Directory リソースの構成セクションにある [ILB] タブをご覧ください。

    グローバル アクセスを許可しない ILB を確認する場合は、ILB に次のいずれかのリージョンを選択します。

    • us-east4
    • us-central1
    • us-west1
    • europe-west1
    • southamerica-east1
    • asia-southeast1
  4. 使用するインターフェースを決定します。

    • Google Cloud コンソール: VM がリクエストを処理するときに稼働時間チェックを作成できます。このインターフェースでは、Service Directory リソースの構成、サービス アカウントの認可、ネットワーク ファイアウォール ルールの構成の手順を確認できます。

    • コマンドライン インターフェース: Google Cloud CLI と Cloud Monitoring API を使用して、ILB と VM がリクエストを処理するときに非公開稼働時間チェックを作成できます。

  5. コマンドラインを使用して非公開稼働時間チェックを構成する場合は、前提条件の手順を完了してください。

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

このセクションでは、Service Directory サービスのプライベート稼働時間チェックを作成して構成する方法について説明します。

  • Google Cloud コンソールを使用するには、[Google Cloud コンソール] タブを選択します。

  • Cloud Monitoring API を使用して、稼働時間チェックと同じ Google Cloud プロジェクト内に Service Directory サービスを構成するには、[API: スコーピング プロジェクト] タブを選択します。

  • Cloud Monitoring API を使用し、稼働時間チェックのプロジェクトの指標スコープでモニタリングされるプロジェクトに Service Directory サービスを構成するには、API: モニタリング対象プロジェクトタブを選択します。

Google Cloud コンソール

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

  1. Google Cloud コンソールのナビゲーション パネルで、[Monitoring] を選択してから [稼働時間チェック] を選択します。

    [稼働時間チェック] に移動

  2. [稼働時間チェックの作成] をクリックします。

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

  3. 非公開稼働時間チェックを指定します。

    1. プロトコルとして [HTTP] または [HTTPS] を選択します。非公開稼働時間チェックには [TCP] を選択しないでください。

    2. [内部 IP] リソースタイプを選択します。

  4. プロジェクトに Service Directory サービスが構成されていない場合、または Service Directory サービスを作成する場合は、表示および 非公開稼働時間チェックの前提条件ペインに入力します:

    1. プロンプトが表示されたら、Compute Engine API または Service Directory API を有効にします。API の有効化に数分かかることがあります。

    2. 必要に応じて [ サービス アカウント] を展開し、[サービス アカウントを作成] をクリックします。

      Monitoring サービス アカウントが存在しない場合は、アカウントが作成されます。次に、Monitoring はサービス アカウントに 2 つの Service Directory のロールを付与します。

    3. [Service Directory] メニューを展開し、次の操作を行います。

      1. [リージョン] を展開し、リクエストを処理している VM のリージョンを選択します。
      2. [名前空間] を展開し、既存の Service Directory の名前空間を選択するか、[名前空間を作成] をクリックして名前空間を作成します。
      3. [サービス名] をクリックし、サービス名を入力します。サービスは、非公開稼働時間チェックのターゲットです。
      4. [エンドポイント名] をクリックし、エンドポイント名の名前を入力します。 エンドポイントは、サービスがリクエストを処理するために使用できる IP アドレスとポートの値のペアです。サービスに複数のエンドポイントがある場合は、1 つのエンドポイントがランダムに選択されます。
      5. [ネットワーク] を展開し、プライベート ネットワークを選択します。
      6. [インスタンス] を展開し、リクエストを処理しているプライベート ネットワーク上の VM を選択します。インスタンスを選択すると、その内部 IP アドレスが表示されます。
      7. [完了] をクリックします。
    4. [ファイアウォール ルール] を展開します。

      1. [ネットワーク] を展開し、ネットワーク ルールが接続されているネットワークを選択します。

      2. [ファイアウォール ルールを作成] をクリックします。

        ファイアウォール ルールにより、ルート 35.199.192.0/19 からの受信 TCP トラフィックが有効になります。35.199.192.0/19 からのルートは、限定公開ルーティングを使用する転送先への接続をサポートします。詳細については、VPC ルートをご覧ください。

  5. [非公開稼働時間チェック] ペインで、使用する Service Directory サービスを指定するには、次のいずれかを行います。

    • [完全修飾サービス名を使用する] を選択し、サービスの完全修飾名を入力します。

      projects/SERVICE_DIRECTORY_PROJECT_ID/locations/REGION/namespaces/PRIVATE_NAMESPACE/services/PRIVATE_SERVICE
      
    • メニューを使用して、[リージョン]、[名前空間]、[サービス] を選択します。サービスを作成した場合は、これらのフィールドが自動的に選択されます。

  6. [非公開稼働時間チェック] ペインで、稼働時間チェックのターゲットの説明を入力します。

    1. 省略可: リクエストのパス コンポーネントを入力します。

      HTTP または HTTPS プロトコルを使用するプライベート稼働時間チェックは、http://target/path にリクエストを送信します。この表現の target は、Service Directory エンドポイントで構成された内部 IP アドレスです。

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

    2. 省略可: 稼働時間チェックを実行する頻度を設定するには、[Check frequency] フィールドを使用します。

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

      • リージョン: 稼働時間チェックがリクエストを受信するリージョンを選択します。稼働時間チェックには、少なくとも 3 つのチェッカーが必要です。3 つのチェッカーがある米国を除くすべてのリージョンには、1 つのチェッカーがあります。デフォルト設定の [グローバル] にはすべてのリージョンが含まれています。
      • リクエスト メソッド: GET または POST を選択します。
      • 本文: HTTP POST チェックの場合、URL エンコードされた本文を入力します。エンコードは自分で行う必要があります。他のすべてのチェックでは、このフィールドは空のままにします。
      • ホストヘッダー: 非公開稼働時間チェックを構成する場合は、このフィールドを設定しないでください。
      • ポート: ここに設定した値により、Service Directory エンドポイントの構成のポートがオーバーライドされます。エンドポイント構成を使用する場合は、ここに値を設定しないでください。
      • カスタム ヘッダー: カスタム ヘッダーを追加し、必要に応じて暗号化します。暗号化すると、ヘッダーの値はフォームに表示されません。 認証に関連するヘッダーを他のユーザーに表示しないように暗号化を使用します。
      • [Authentication]: 単一のユーザー名とパスワードを指定します。これらの値は Authorization ヘッダーとして送信されます。ここで値を設定する場合、これとは別に Authorization ヘッダーを設定しないでください。Authorization ヘッダーを設定する場合は、ここに値を設定しないでください。フォームではパスワードは常に非表示です。
  7. [続行] をクリックし、レスポンス要件を構成します。このセクションの設定にはすべてデフォルト値があります。

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

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

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

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

  8. [続行] をクリックして、アラート ポリシーと通知を構成します。

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

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

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

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

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

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

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

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

    4. [Create(作成)] をクリックします。

API: プロジェクトのスコーピング

非公開稼働時間チェックの構成を作成するには、UptimeCheckConfig オブジェクトを作成し、そのオブジェクトを Cloud Monitoring API で uptimeCheckConfigs.createメソッドに渡します。

非公開稼働時間チェックの UptimeCheckConfig オブジェクトは、次の点で公開稼働時間チェックのオブジェクトとは異なります。

  • 稼働時間チェック構成で指定するモニタリング対象リソースは、servicedirectory_service 型でなければなりません。このリソースタイプには次のラベルがあります。

    • project_id: Service Directory サービスに関連付けられているプロジェクト ID。
    • location: サービスに関連付けられたクラウド リージョン。
    • namespace_name: Service Directory の名前空間。
    • service_name: Service Directory サービスの名前。
  • 稼働時間チェック構成で port 値を指定する必要はありません。Service Directory エンドポイントのポート値は稼働時間チェック構成の設定値をオーバーライドします。Service Directory 構成にポートが指定されていない場合は、チェックが失敗します。

  • 稼働時間チェック構成では、値が VPC_CHECKERSchecker_type フィールドを指定する必要があります。この値は、非公開稼働時間チェックに必要です。デフォルトでは、稼働時間チェックは公開されるため、公開稼働時間チェックではこのフィールドを指定する必要はありません。

次の JSON コードは、プライベート ネットワーク上の VM インスタンスに構成された Service Directory リソースを使用した、非公開稼働時間チェックの UptimeCheckConfig オブジェクトを示しています。

{
  "displayName": "private-check-demo",
  "monitoredResource": {
    "type": "servicedirectory_service",
    "labels": {
      "project_id": "SERVICE_DIRECTORY_PROJECT_ID",
      "service_name": "PRIVATE_SERVICE",
      "namespace_name": "PRIVATE_NAMESPACE",
      "location": "REGION"
    }
  },
  "httpCheck": {
    "requestMethod": "GET"
  },
  "period": "60s",
  "timeout": "10s",
  "checker_type": "VPC_CHECKERS"
}'

Service Directory サービスが稼働時間チェックと同じ Google Cloud プロジェクトにある場合に、非公開稼働時間チェックを作成するには、次の手順に従います。

  1. gcloud CLI のデフォルトの Google Cloud プロジェクトを設定します。

    gcloud config set project PROJECT_ID
    
  2. プロジェクト ID を格納する環境変数を作成します。

    export PROJECT_ID=$(gcloud config get-value core/project)
    
  3. アクセス トークンを保持する環境変数を作成します。

    export TOKEN=`gcloud auth print-access-token`
    
  4. curl ツールを使用して uptimeCheckConfigs.create メソッドを呼び出し、それに構成オブジェクトをポストします。

    curl https://monitoring.googleapis.com/v3/projects/${PROJECT_ID}/uptimeCheckConfigs \
    -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
    --request POST --data '{
    "displayName": "private-check-demo",
    "monitoredResource": {
      "type": "servicedirectory_service",
      "labels": {
        "project_id": "'"$PROJECT_ID"'",
        "service_name": "PRIVATE_SERVICE",
        "namespace_name": "PRIVATE_NAMESPACE",
        "location": "REGION"
      }
    },
    "httpCheck": {
      "requestMethod": "GET"
    },
    "period": "60s",
    "timeout": "10s",
    "checker_type": "VPC_CHECKERS"
    }'
    

稼働時間チェックの作成に失敗した場合は、サービス アカウントに必要なロールがあることを確認します。詳細については、稼働時間チェックの作成の失敗をご覧ください。

API: モニタリング対象プロジェクト

非公開稼働時間チェックの構成を作成するには、UptimeCheckConfig オブジェクトを作成し、そのオブジェクトを Cloud Monitoring API で uptimeCheckConfigs.createメソッドに渡します。

非公開稼働時間チェックの UptimeCheckConfig オブジェクトは、次の点で公開稼働時間チェックのオブジェクトとは異なります。

  • 稼働時間チェック構成で指定するモニタリング対象リソースは、servicedirectory_service 型でなければなりません。このリソースタイプには次のラベルがあります。

    • project_id: Service Directory サービスに関連付けられているプロジェクト ID。
    • location: サービスに関連付けられたクラウド リージョン。
    • namespace_name: Service Directory の名前空間。
    • service_name: Service Directory サービスの名前。
  • 稼働時間チェック構成で port 値を指定する必要はありません。Service Directory エンドポイントのポート値は稼働時間チェック構成の設定値をオーバーライドします。Service Directory 構成にポートが指定されていない場合は、チェックが失敗します。

  • 稼働時間チェック構成では、値が VPC_CHECKERSchecker_type フィールドを指定する必要があります。この値は、非公開稼働時間チェックに必要です。デフォルトでは、稼働時間チェックは公開されるため、公開稼働時間チェックではこのフィールドを指定する必要はありません。

次の JSON コードは、プライベート ネットワーク上の VM インスタンスに構成された Service Directory リソースを使用した、非公開稼働時間チェックの UptimeCheckConfig オブジェクトを示しています。

{
  "displayName": "private-check-demo",
  "monitoredResource": {
    "type": "servicedirectory_service",
    "labels": {
      "project_id": "SERVICE_DIRECTORY_PROJECT_ID",
      "service_name": "PRIVATE_SERVICE",
      "namespace_name": "PRIVATE_NAMESPACE",
      "location": "REGION"
    }
  },
  "httpCheck": {
    "requestMethod": "GET"
  },
  "period": "60s",
  "timeout": "10s",
  "checker_type": "VPC_CHECKERS"
}'

Service Directory サービスが、稼働時間チェックの Google Cloud プロジェクトの指標スコープによってモニタリングされている Google Cloud プロジェクトにある場合に、非公開稼働時間チェックを作成するには、次のようにします。

  1. 稼働時間チェックを作成する Google Cloud プロジェクトがデフォルトになるように gcloud CLI を構成します。

    gcloud config set project PROJECT_ID
    
  2. プロジェクト ID を格納する環境変数を作成します。

    export PROJECT_ID=$(gcloud config get-value core/project)
    
  3. Service Directory サービスが定義されている Google Cloud プロジェクトのプロジェクト ID を格納する環境変数を作成します。

    export MONITORED_PROJECT_ID=MONITORED_PROJECT_ID
    

    このプロジェクトは、稼働時間チェックのプロジェクトの指標スコープ内にある必要があります。

  4. アクセス トークンを保持する環境変数を作成します。

    export TOKEN=`gcloud auth print-access-token`
    
  5. curl ツールを使用して uptimeCheckConfigs.create メソッドを呼び出し、それに構成オブジェクトをポストします。

    curl https://monitoring.googleapis.com/v3/projects/${PROJECT_ID}/uptimeCheckConfigs \
    -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
    --request POST --data '{
    "displayName": "private-check-demo",
    "monitoredResource": {
      "type": "servicedirectory_service",
      "labels": {
        "project_id": "'"$MONITORED_PROJECT_ID"'",
        "service_name": "PRIVATE_SERVICE",
        "namespace_name": "PRIVATE_NAMESPACE",
        "location": "REGION"
      }
    },
    "httpCheck": {
      "requestMethod": "GET"
    },
    "period": "60s",
    "timeout": "10s",
    "checker_type": "VPC_CHECKERS"
    }'
    

稼働時間チェックの作成に失敗した場合は、サービス アカウントに必要なロールがあることを確認します。詳細については、稼働時間チェックの作成の失敗をご覧ください。

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

前提条件の手順

Google Cloud コンソールのインターフェースを使用する場合は、非公開稼働時間チェックを作成するに移動してください。Google Cloud コンソールを使用すると、前提条件となるすべての手順を確認できます。

コマンドラインを使用して非公開稼働時間チェックを構成する場合は、稼働時間チェックを作成するには、まず次の手順を行う必要があります。

  1. Service Directory リソースを構成する
  2. サービス アカウントを承認する
  3. ファイアウォール ルールの構成

Service Directory リソースを構成する

非公開稼働時間チェックでは、Service Directory サービスによって録音された内部 IP アドレスを使用してリソースの可用性を判断します。次のリソースに Service Directory を構成できます。

  • プライベート ネットワークの VM
  • L4 内部ロードバランサ(ILB)

非公開稼働時間チェックを使用するには、次の Service Directory リソースを構成する必要があります。

  • エンドポイント: エンドポイントは、サービスがリクエストを処理するために使用できる IP アドレスとポートの値のペアです。 サービスに複数のエンドポイントがある場合は、1 つのエンドポイントがランダムに選択されます。
  • サービス: サービスは、一連の動作を提供するエンドポイントの集まりです。サービスは、非公開稼働時間チェックのターゲットです。
  • 名前空間: 名前空間はサービス名とその関連エンドポイントのセットを保持します。名前空間を使用すると、サービスをグループ化して、一貫した管理を行えます。

これらのリソースは、gcloud CLI または Google Cloud コンソールで構成できます。コンソールを使用する場合、構成手順は [稼働時間チェックの作成] ダイアログに表示されます。

Google Cloud コンソール

Google Cloud コンソールを使用する場合、稼働時間チェックのリソースタイプとして [内部 IP] を選択すると、Service Directory とサービスを作成するように求められます。

gcloud CLI - VM

このドキュメントでサービス、名前空間、エンドポイントに使用されるコマンドについては、gcloud service-directory コマンド グループをご覧ください。

VM 用の Service Directory リソースを作成するには、次の操作を行います。

  1. Service Directory リソースを作成する Google Cloud プロジェクトがデフォルトになるように Google Cloud CLI を構成します。

    gcloud config set project PROJECT_ID
    
  2. プロジェクト ID とプロジェクト番号を格納する環境変数を作成します。

    export PROJECT_ID=$(gcloud config get-value core/project)
    
    export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='get(projectNumber)')
    
  3. Service Directory の名前空間を作成します。

    gcloud service-directory namespaces create PRIVATE_NAMESPACE --location=REGION
    
  4. 名前空間に Service Directory サービスを作成します。

    gcloud service-directory services create PRIVATE_SERVICE \
    --namespace PRIVATE_NAMESPACE --location=REGION
    
  5. プライベート ネットワークにある VM の IP アドレスを保持する環境変数を作成します。

    export INTERNAL_IP=$(gcloud compute instances describe --zone=ZONE \
    PRIVATE_SERVICE_INSTANCE --format='get(networkInterfaces[0].networkIP)')
    
  6. 内部 IP アドレスとポートを含む Service Directory エンドポイントを作成します。

    gcloud service-directory endpoints create PRIVATE_ENDPOINT \
    --location=REGION --namespace=PRIVATE_NAMESPACE \
    --service=PRIVATE_SERVICE \
    --network=projects/$PROJECT_NUMBER/locations/global/networks/PRIVATE_CHECK_NETWORK \
    --address=$INTERNAL_IP --port=80
    

gcloud CLI - L4 ILB

このドキュメントでサービス、名前空間、エンドポイントに使用されるコマンドについては、gcloud service-directory コマンド グループをご覧ください。

非公開稼働時間チェックを使用して、L4 ILB に対する Service Directory リソースを作成することで、L4 内部ロードバランサ(ILB)の可用性をモニタリングできます。

新しい L4 ILB を作成する場合は、Service Directory による自動統合を使用できます。詳細については、Service Directory で内部ロードバランサを構成するをご覧ください。

Service Directory による自動統合を使用せずに作成された L4 ILB がある場合は、次の手順により Service Directory リソースを手動で構成できます。

  1. Service Directory リソースを作成する Google Cloud プロジェクトがデフォルトになるように Google Cloud CLI を構成します。

    gcloud config set project PROJECT_ID
    
  2. プロジェクト ID とプロジェクト番号を格納する環境変数を作成します。

    export PROJECT_ID=$(gcloud config get-value core/project)
    
    export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='get(projectNumber)')
    
  3. すべての稼働時間チェッカーに L4 ILB へのデータ転送を許可するには、ILB へのグローバル アクセスを有効にします。

    gcloud compute forwarding-rules update ILB_FORWARDING_RULE_NAME \
    --region=ILB_REGION --allow-global-access
    

    L4 ILB がグローバル アクセスを許可しない場合、稼働時間の指標は、ILB_REGION が次のいずれかである場合にのみ利用できます。

    • us-east4
    • us-central1
    • us-west1
    • europe-west1
    • southamerica-east1
    • asia-southeast1
  4. Service Directory の名前空間を作成します。

    gcloud service-directory namespaces create PRIVATE_NAMESPACE_FOR_ILB\
    --location=REGION
    
  5. 名前空間に Service Directory サービスを作成します。

    gcloud service-directory services create PRIVATE_SERVICE_FOR_ILB \
    --namespace PRIVATE_NAMESPACE_FOR_ILB --location=REGION
    
  6. プライベート ネットワークにあるロードバランサの IP アドレスを保持する環境変数を作成します。

    export INTERNAL_IP=$( gcloud compute forwarding-rules describe ILB_FORWARDING_RULE_NAME\
    --region=ILB_REGION --format='get(IPAddress)')
    
  7. 内部 IP アドレスとポートを含む Service Directory エンドポイントを作成します。

    gcloud service-directory endpoints create PRIVATE_ENDPOINT_FOR_ILB \
    --location=ILB_REGION --namespace=PRIVATE_NAMESPACE_FOR_ILB \
    --service=PRIVATE_SERVICE_FOR_ILB \
    --network=projects/$PROJECT_NUMBER/locations/global/networks/PRIVATE_CHECK_NETWORK \
    --address=$INTERNAL_IP --port=80
    

サービス アカウントを承認する

稼働時間チェックでは、Monitoring が所有するサービス アカウントを使用して、Service Directory サービスとのやり取りを管理します。サービス アカウント名の形式は次のとおりです。

service-PROJECT_NUMBER@gcp-sa-monitoring-notification.iam.gserviceaccount.com

Google Cloud プロジェクトに通知チャネルが含まれている場合、サービス アカウントはすでに存在します。サービス アカウントが存在しない場合、Monitoring は非公開稼働時間チェックの作成時にサービス アカウントを作成します。このサービス アカウントは作成できません。

非公開稼働時間チェックを作成すると、Monitoring はサービス アカウントに 2 つの Service Directory のロールを付与しようとします。 ただし、API を使用する場合、Google Cloud プロジェクトの設定により、Monitoring がサービス アカウントにロールを付与できない可能性があります。 この状況では、稼働時間チェックの作成は失敗します。

このセクションでは、必要なロールを既存のサービス アカウントに付与する方法について説明します。

Google Cloud コンソール

Google Cloud コンソールを使用する場合、稼働時間チェックのリソースタイプとして [内部 IP] を選択すると、サービス アカウントを承認するように求められます。

API: プロジェクトのスコーピング

既存のサービス アカウントに Service Directory のロールを付与するには、次のようにします。

  1. 稼働時間チェックを作成する Google Cloud プロジェクトがデフォルトになるように gcloud CLI を構成します。

    gcloud config set project PROJECT_ID
    
  2. プロジェクト ID とプロジェクト番号を格納する環境変数を作成します。

    export PROJECT_ID=$(gcloud config get-value core/project)
    
    export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='get(projectNumber)')
    
  3. 次のコマンドを実行します。

    gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member='serviceAccount:service-'$PROJECT_NUMBER'@gcp-sa-monitoring-notification.iam.gserviceaccount.com' \
    --role='roles/servicedirectory.viewer'
    
    gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member='serviceAccount:service-'$PROJECT_NUMBER'@gcp-sa-monitoring-notification.iam.gserviceaccount.com' \
    --role='roles/servicedirectory.pscAuthorizedService'
    

    上記のコマンドは、サービス アカウントに次のロールを付与します。

    • roles/servicedirectory.viewer
    • roles/servicedirectory.pscAuthorizedService

API: モニタリング対象プロジェクト

既存のサービス アカウントに Service Directory のロールを付与するには、次のようにします。

  1. 稼働時間チェックを作成する Google Cloud プロジェクトがデフォルトになるように gcloud CLI を構成します。

    gcloud config set project PROJECT_ID
    
  2. プロジェクト ID とプロジェクト番号を格納する環境変数を作成します。

    export PROJECT_ID=$(gcloud config get-value core/project)
    
    export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='get(projectNumber)')
    
  3. Service Directory サービスが定義されているプロジェクトのプロジェクト ID を保持する環境変数を作成します。

    export MONITORED_PROJECT_ID=MONITORED_PROJECT_ID
    

    このプロジェクトは、稼働時間チェックのプロジェクトの指標スコープ内にある必要があります。

  4. ネットワークが定義されているプロジェクトのプロジェクト ID を保持する環境変数を作成します。

    export NETWORK_PROJECT_ID=NETWORK_PROJECT_ID
    

    このプロジェクトは、稼働時間チェックのプロジェクトの指標スコープに存在する必要はありません。

  5. 次のコマンドを実行します。

    gcloud projects add-iam-policy-binding $MONITORED_PROJECT_ID \
    --member='serviceAccount:service-'$PROJECT_NUMBER'@gcp-sa-monitoring-notification.iam.gserviceaccount.com' \
    --role='roles/servicedirectory.viewer'
    
    gcloud projects add-iam-policy-binding $NETWORK_PROJECT_ID \
    --member='serviceAccount:service-'$PROJECT_NUMBER'@gcp-sa-monitoring-notification.iam.gserviceaccount.com' \
    --role='roles/servicedirectory.pscAuthorizedService'
    

    上記のコマンドは、サービス アカウントに次のロールを付与します。

    • Service Directory サービスが構成されているモニタリング対象プロジェクト($SERVICE_MONITORED_PROJECT_ID)の場合 roles/servicedirectory.viewer
    • プライベート ネットワークが構成されているプロジェクト($NETWORK_PROJECT_ID)の場合 roles/servicedirectory.pscAuthorizedService

ファイアウォール ルールを構成する

ルート 35.199.192.0/19 からの受信 TCP トラフィックを有効にするファイアウォール ルールを作成する必要があります。35.199.192.0/19 からのルートでは、限定公開ルーティングを使用する転送先への接続がサポートされます。詳細については、VPC ルートをご覧ください。

Google Cloud コンソール

Google Cloud コンソールを使用する場合、稼働時間チェックのリソースタイプとして [内部 IP] を選択すると、ファイアウォール ルールを構成するように求められます。

gcloud CLI

プライベート ネットワーク アクセスのために、ファイアウォールを通過する受信 TCP トラフィックを許可するファイアウォール ルールを作成するには、次のコマンドを実行します。

  1. 稼働時間チェックを作成する Google Cloud プロジェクトがデフォルトになるように gcloud CLI を構成します。

    gcloud config set project PROJECT_ID
    
  2. プロジェクト ID とプロジェクト番号を格納する環境変数を作成します。

    export PROJECT_ID=$(gcloud config get-value core/project)
    
  3. ネットワーク ルールを作成します。

    gcloud compute firewall-rules create PRIVATE_CHECK_NETWORK_HOPE_RULE \
    --network="PRIVATE_CHECK_NETWORK"  \
    --action=allow   --direction=ingress   --source-ranges="35.199.192.0/19" \
    --rules=tcp   --project="$PROJECT_ID"
    

    前のコマンドで、PRIVATE_CHECK_NETWORK はこのルールが接続されているネットワーク、PRIVATE_CHECK_NETWORK_HOPE_RULE はファイアウォール ルールの名前です。

この手順の詳細については、ネットワーク プロジェクトを構成するをご覧ください。

制限事項

非公開稼働時間チェックを使用すると、構成に関係なく、SSL 証明書の検証が無効になります。

非公開稼働時間チェックは、リダイレクトが設定されているエンドポイントをサポートしていません。

トラブルシューティング

このセクションでは、非公開稼働時間チェックの使用時に発生する可能性のあるエラーとその解決方法について説明します。

稼働時間チェックの作成に失敗する

Google Cloud プロジェクトの設定により、稼働時間チェックが Service Directory サービスとのやり取りを管理する際に使用するサービス アカウントに割り当てられたロールを変更できなくなる場合があります。 この状況では、稼働時間チェックの作成は失敗します。

このセクションでは、サービス アカウントに必要なロールを付与する方法について説明します。

Google Cloud コンソール

Google Cloud コンソールを使用して非公開稼働時間チェックを作成すると、Google Cloud コンソールは、Service Directory のロールをサービス アカウントに付与するコマンドを発行します。

サービス アカウントにロールを付与する方法については、サービス アカウントを承認するをご覧ください。

API: プロジェクトのスコーピング

1 つの Google Cloud プロジェクトで、Service Directory サービスとプライベート リソースのプライベート稼働時間チェックを初めて作成する際には、リクエストが成功することも失敗することもあります。結果は、プロジェクトでサービス アカウントに対する自動的なロール付与を無効にしているかどうかによって変わります。

  • プロジェクトでサービス アカウントに対する自動的なロール付与が許可されている場合、最初の稼働時間チェックは正常に作成されます。サービス アカウントが作成され、必要なロールが付与されます。

  • プロジェクトでサービス アカウントに対する自動的なロール付与が許可されていない場合、最初の稼働時間チェックの作成は失敗します。サービス アカウントは作成されますが、ロールは付与されません。

稼働時間チェックの作成に失敗した場合は、次の手順を行います。

  1. サービス アカウントを承認する
  2. 権限が反映されるまで数分待ちます。
  3. 非公開稼働時間チェックを再度作成してください。

API: モニタリング対象プロジェクト

モニタリング対象プロジェクトの Service Directory サービスまたは別の Google Cloud プロジェクトのプライベート リソースを対象とする非公開稼働時間チェックを初めて作成するときに、リクエストが失敗し、Monitoring サービス アカウントが作成されます。

サービス アカウントを承認する方法は、使用している Google Cloud プロジェクトの数とその関係によって異なります。 最大 4 つのプロジェクトが関係している可能性があります。

  • 非公開稼働時間チェックを定義したプロジェクト。
  • Service Directory サービスを構成したモニタリング対象プロジェクト。
  • VPC ネットワークを構成したプロジェクト。
  • ネットワーク リソース(VM やロードバランサなど)が構成されているプロジェクト。このプロジェクトには、ここで説明するサービス アカウントの承認でのロールがありません。

最初の稼働時間チェックの作成に失敗した場合は、次の手順を行います。

  1. サービス アカウントを承認する
  2. 権限が反映されるまで数分待ちます。
  3. 非公開稼働時間チェックを再度作成してください。

アクセスが拒否されました

VPC_ACCESS_DENIED という結果で稼働時間チェックが失敗しています。この結果は、ネットワーク構成やサービス アカウントの承認の一部が正しくないことを意味します。

スコーピング プロジェクトまたはモニタリング対象プロジェクトを使用するためのサービス アカウントの承認を確認します。詳細については、稼働時間チェックの作成の失敗をご覧ください。

プライベート ネットワークへのアクセスについての詳細は、ネットワーク プロジェクトを構成するをご覧ください。

非公開稼働時間チェックからの異常な結果

複数の VM を持つ Service Directory サービスがあり、サービス構成に複数のエンドポイントが含まれています。VM の 1 つをシャットダウンしても、稼働時間チェックは引き続き成功を示します。

サービス構成に複数のエンドポイントがある場合は、ランダムに 1 つが選択されます。選択したエンドポイントに関連付けられた VM が実行されている場合、VM の 1 つが停止していても、稼働時間チェックは成功します。

デフォルトのヘッダー

稼働時間チェックからエラーまたは予期しない結果が返されます。これは、デフォルトのヘッダー値をオーバーライドしている場合に発生することがあります。

非公開稼働時間チェックのリクエストがターゲット エンドポイントに送信されると、リクエストには次のヘッダーと値が含まれます。

ヘッダー
HTTP_USER_AGENT GoogleStackdriverMonitoring-UptimeChecks(https://cloud.google.com/monitoring)
HTTP_CONNECTION keep-alive
HTTP_HOST Service Directory エンドポイントの IP
HTTP_ACCEPT_ENCODING gzipdeflatebr
CONTENT_LENGTH 稼働時間の投稿データから計算

これらの値をオーバーライドしようとすると、次のようになる可能性があります。

  • 稼働時間チェックがエラーを報告する
  • オーバーライド値は破棄され、テーブル内の値で置き換えられる

データが表示されない

稼働時間チェックが Service Directory サービスとは異なる Google Cloud プロジェクトにある場合、稼働時間チェック ダッシュボードにはデータが表示されません。

稼働時間チェックを含む Google Cloud プロジェクトが、Service Directory サービスを含む Google Cloud プロジェクトをモニタリングしていることを確認します。

モニタリング対象プロジェクトを一覧表示してプロジェクトを追加する方法については、複数のプロジェクトの指標スコープを構成するをご覧ください。

次のステップ