稼働時間チェックの管理

Cloud Monitoring は、世界中のさまざまなロケーションからサービスにアクセスし、そのサービスが利用可能かどうかを確認します。稼働時間チェックの結果をアラート ポリシーで使用することも、Monitoring の稼働時間チェック ダッシュボードで結果を直接モニタリングすることもできます。

このページでは、次の方法について説明します。

  • 新しい稼働時間チェックの作成
  • ダッシュボードでの稼働時間チェックの確認
  • 稼働時間チェックの編集
  • 稼働時間チェックの削除

必要に応じて、以下もご覧ください。

  • 稼働時間チェックの料金と上限を確認するには、料金と上限をご覧ください。
  • すべての稼働時間チェックを一覧表示するには、稼働時間チェックの確認をご覧ください。
  • 稼働時間チェックで使用される IP アドレスの一覧を取得するには、IP アドレスの取得をご覧ください。
  • API を使用して稼働時間チェックのステータスを確認するには、指標 monitoring.googleapis.com/uptime_check/check_passed をモニタリングします。詳細については、Google Cloud 指標の一覧をご覧ください。

始める前に

  1. 稼働時間チェックの使用は、サービスを保護するファイアウォールの影響を受けます。

    • チェックするリソースが公開されていない場合は、稼働時間チェック サーバーからの着信トラフィックを許可するようにリソースのファイアウォールを構成する必要があります。IP アドレスのリストをダウンロードするには、IP アドレスの取得をご覧ください。
    • チェックするリソースが外部 IP アドレスを持たない場合、稼働時間チェックはそのリソースにアクセスできません。
  2. 稼働時間チェックでは、ページアセットの読み込みや JavaScript の実行は行われません。稼働時間チェックのデフォルト構成では、認証が無効になっています。[Advanced options] を使用して認証を有効にできます。

    HTTP と HTTPS では、GET コマンドを実行し、元データを取得します。GET に対するレスポンスが別の URL へのリダイレクトである場合は、その URL からデータを取得します。最後にデータを評価し、チェックが成功したかどうかを判断します。

    成功となるには、次の 2 つの条件が必要です。

    • HTTP ステータスが Success
    • データに必要とされるコンテンツは指定されていない、もしくは必要なコンテンツが存在する。 必要なコンテンツは、[Advanced options] で指定します。

稼働時間チェックの作成

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

コンソール

  1. Cloud Console で、[Monitoring] を選択します。

    [モニタリング] に移動

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

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

  4. [New uptime check] ウィンドウで、基本オプションの説明に従って、稼働時間チェックに関するフィールドに値を入力します。

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

  5. (省略可)[SHOW ADVANCED OPTIONS] をクリックします。詳細オプションについて詳しくは、詳細オプションをご覧ください。

  6. 稼働時間チェックの構成を確認するには、[TEST] をクリックします。 結果が期待どおりでない場合は、下記のチェックの失敗セクションを参照して構成を修正し、検証ステップを繰り返します。

  7. [保存] をクリックします。必要なデータがない場合、保存操作が失敗し、ダイアログ ボタンの横にデータが不足しているフィールドの一覧が表示されます。変更を保存すると、[Uptime check created] ダイアログが表示されます。

  8. (省略可)稼働時間チェックの失敗を通知するには、[CREATE ALERET POLICY] をクリックします。アラート ポリシーを作成しない場合は、[CANCEL] をクリックします。稼働時間チェックのアラート ポリシーはいつでも作成できます。詳しくは、稼働時間チェックに関するアラートをご覧ください。

    [Uptime check created] ダイアログ。

API

projects.uptimeCheckConfigs.create メソッドを呼び出します。メソッドのパラメータを次のように設定します。

  • parent: 必須。これは稼働時間チェックを作成するプロジェクトの名前にする必要があります。[PROJECT_ID] を実際の Google Cloud プロジェクト ID に置き換えます。書式は次のとおりです。

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

    構成オブジェクトの name フィールドは、返される構成オブジェクトで設定されるため、空白のままにします。

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

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

C#

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();
        string projectName = new ProjectName(projectId).ToString();
        // Create the config.
        var newConfig = client.CreateUptimeCheckConfig(projectName, config,
            CallSettings.FromCallTiming(CallTiming.FromTimeout(TimeSpan.FromMinutes(2))));
        Console.WriteLine(newConfig.Name);
        return 0;
    }

Java

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.getDisplayName());
      } catch (Exception e) {
        usage("Exception creating uptime check: " + e.toString());
        throw e;
      }
    }

Go


    // create creates an example uptime check.
    func create(w io.Writer, projectID string) (*monitoringpb.UptimeCheckConfig, error) {
    	ctx := context.Background()
    	client, err := monitoring.NewUptimeCheckClient(ctx)
    	if err != nil {
    		return nil, fmt.Errorf("NewUptimeCheckClient: %v", err)
    	}
    	defer client.Close()
    	req := &monitoringpb.CreateUptimeCheckConfigRequest{
    		Parent: "projects/" + projectID,
    		UptimeCheckConfig: &monitoringpb.UptimeCheckConfig{
    			DisplayName: "new 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{
    					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: %v", err)
    	}
    	fmt.Fprintf(w, "Successfully created uptime check %q\n", config.GetDisplayName())
    	return config, nil
    }
    

Node.js

// 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

use Google\Cloud\Monitoring\V3\UptimeCheckServiceClient;
    use Google\Cloud\Monitoring\V3\UptimeCheckConfig;
    use Google\Api\MonitoredResource;

    /**
     * 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')
    {
        $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);

        $uptimeCheckConfig = $uptimeCheckClient->createUptimeCheckConfig(
            $uptimeCheckClient->projectName($projectId),
            $uptimeCheckConfig
        );

        printf('Created an uptime check: %s' . PHP_EOL, $uptimeCheckConfig->getName());
    }

Python

def create_uptime_check_config(project_name, host_name=None,
                                   display_name=None):
        config = monitoring_v3.types.uptime_pb2.UptimeCheckConfig()
        config.display_name = display_name or 'New uptime check'
        config.monitored_resource.type = 'uptime_url'
        config.monitored_resource.labels.update(
            {'host': host_name or 'example.com'})
        config.http_check.path = '/'
        config.http_check.port = 80
        config.timeout.seconds = 10
        config.period.seconds = 300

        client = monitoring_v3.UptimeCheckServiceClient()
        new_config = client.create_uptime_check_config(project_name, config)
        pprint.pprint(new_config)
        return new_config

Ruby

def create_uptime_check_config project_id: nil, host_name: nil, display_name: nil
      require "google/cloud/monitoring/v3"

      client = Google::Cloud::Monitoring::V3::UptimeCheck.new
      project_name = Google::Cloud::Monitoring::V3::UptimeCheckServiceClient.project_path 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 }
      }
      client = Google::Cloud::Monitoring::V3::UptimeCheck.new
      new_config = client.create_uptime_check_config project_name, config
      puts new_config.name
      new_config
    end

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

基本オプション

新しい稼働時間チェックを作成するには、稼働時間チェックの構成に必要な値を指定します。Cloud Console で稼働時間チェックを作成する場合、フォームに値を入力します。API で稼働時間チェックを作成する場合、UptimeCheckConfig オブジェクトに対応するパラメータを指定します。

  1. Title: チェックを識別するための名前です。例: Example.com uptime check

  2. Check Type: HTTPHTTPSTCP プロトコルから選択します。

    HTTPS を選択すると、サービスは HTTPS で接続しようとして、SSL 証明書を検証します。デフォルトでは、期限切れの証明書または自己署名証明書により、稼働時間チェックが失敗します。

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

  3. [Resource type]: 次のリソースタイプのいずれか 1 つを選択します。

    • [App Engine]: App Engine アプリケーション(モジュール)
    • [Elastic Load Balancer]: AWS ロードバランサ
    • Instance: Compute Engine または AWS EC2 インスタンス。API では、これは gce_instanceaws_ec2_instance に分かれています。
    • URL: 任意の IPv4 アドレスまたはホスト名。パスとポートは別々に入力します。
  4. 以下のように、チェックの種類およびリソースタイプに応じて、接続情報を入力します。

    • [TCP] の [Check type] を選択した場合は、次の手順を行います。

      • Port: ポート番号を指定します。
      • Response Content Match Type: レスポンスのコンテンツに入力された文字列を実際に返されたデータとどのように比較するかを指定します。たとえば、レスポンスのコンテンツが abcd で、[Contains] のコンテンツの一致タイプを選択した場合、レスポンス データに abcd が含まれていれば稼働時間チェックが成功します。レスポンスに abcd が含まれていない場合、稼働時間チェックは失敗します。
      • レスポンスのコンテンツを文字列(最大 1,024 バイト)に置き換えます。
    • [Resource type] として [URL] または [App Engine] を選択した場合は、次のようにします。

      • Hostname: サービスのホスト名を入力します。たとえば、「example.com」と入力します。

      • [Path](HTTP、HTTPS): ホストまたはリソース内のパスを入力するか、デフォルトパスを使用します。たとえば、example.com を調べる場合は、このフィールドを空白のままにします。example.com/tester を調べる場合は、「/tester」と入力します。 接頭辞 example.com は含めないでください。API では、このフィールドを空白のままにして、デフォルト値の / を使用します。

    • [Path] として [Elastic Load Balancer] または [Instance] を選択した場合、以下を行います。

      • Applies to: [Single] または [Group] を選択します。インスタンスまたはロードバランサに稼働時間チェックを適用するには、[Single] を選択し、特定のインスタンスまたはロードバランサを選択します。稼働時間チェックをインスタンスのグループまたはロードバランサのグループに適用するには、[Group] を選択してグループ名を選択します。API を使用する場合は、モニタリング対象リソースのリストのとおりに、モニタリング対象リソースと必要なリソースラベルを記述します。

      • [Path](HTTP、HTTPS): ホストまたはリソース内のパスを入力するか、デフォルトパスを使用します。

  5. Check type: 151015 分から選択します。この値により、稼働時間チェックの頻度が決定されます。たとえば 5 分を選択した場合、各ロケーションで稼働時間チェックが 5 分ごとに実行されます。

詳細オプション

すべての詳細設定を表示するには、[SHOW ADVANCED OPTIONS] をクリックしてください。 使用可能な詳細設定はチェックの種類によって異なります。

  • General: 仮想ホストをチェックする場合に入力します。このフィールドは TCP チェックには使用できません。
  • Port: ポート番号を指定します。
  • Response Content Match Type: レスポンスのコンテンツに入力された文字列を実際に返されたデータとどのように比較するかを指定します。たとえば、レスポンスのコンテンツが abcd で、[Contains] のコンテンツの一致タイプを選択した場合、レスポンス データに abcd が含まれていれば稼働時間チェックが成功します。レスポンスに abcd が含まれていない場合、稼働時間チェックは失敗します。
  • Response content: 文字列(最大 1,024 バイト)を入力します。 API では、これは ContentMatcher オブジェクトです。

  • [Locations]: チェックがリクエストを受け取るリージョンを選択します。デフォルト設定は [Global] で、チェッカーの数は 6 です。 チェッカーは 3 つ以上必要です。United States リージョンには、チェッカーが 3 つあります。それ以外のリージョンには、チェッカーが 1 つあります。

  • Custom Headers: カスタム ヘッダーを追加し、必要に応じて暗号化します。 暗号化すると、ヘッダーの値はフォームに表示されません。認証に関連するヘッダーをチームの他のメンバーに見られたくない場合は、暗号化を使用してください。

  • Healthcheck Timeout: タイムアウトを 160 秒の範囲で指定します。複数のロケーションからのヘルスチェックが、構成されたタイムアウト期間内にレスポンスを受け取らなかった場合、稼働時間チェックは失敗となります。レスポンスを受け取らなかったヘルスチェックが 1 つだけの場合、稼働時間チェックは失敗にはなりません。

  • [Authentication]: 単一のユーザー名とパスワードを指定します。これらの値は Authorization ヘッダーとして送信されます。ここで値を設定する場合、これとは別に Authorization ヘッダーを設定しないでください。Authorization ヘッダーを設定する場合は、ここに値を設定しないでください。フォームではパスワードは常に非表示です。 このフィールドは TCP チェックには使用できません。

  • SSL Certificate Validation: [Validate SSL certificates] チェックボックスをオンにします。 URL に無効な証明書がある場合、稼働時間チェックは失敗します。無効な証明書には、期限切れの証明書、ドメイン名が一致しない証明書、自己署名証明書が含まれます。SSL 証明書の検証は、URL リソースの HTTPS チェックでのみ使用できます。

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

稼働時間チェックで使用する識別子

稼働時間チェックが作成されると、Monitoring によって識別子が割り当てられます。この識別子は稼働時間チェック ID と呼ばれています。稼働時間チェック ID は次のように、新しく作成された稼働時間チェックのリソース名に埋め込まれます。

projects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID]
    

メソッド呼び出しのレスポンスで返された稼働時間チェック ID を使用して、稼働時間チェックの作成や一覧表示を行えます。稼働時間チェック ID は、[構成] セクションの下の [稼働時間の詳細] ウィンドウから確認することもできます。

稼働時間チェックの確認

Cloud Console で稼働時間チェックを作成する際、保存前にその構成をテストできます。

チェックの成功

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

  • HTTP ステータスが Success
  • レスポンス中に必要なコンテンツがない、もしくは、レスポンスを検索して必要なコンテンツの存在チェックに成功した。

チェックの失敗

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

  • 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 アドレスの取得をご覧ください。タイムアウト時間は、[Advanced Options] の [Healthcheck] で指定します。

稼働時間チェックを表示する

稼働時間チェックを表示するには、次の手順に従います。

コンソール

単一の稼働時間チェックの詳細ステータスを表示する方法は次のとおりです。

  1. Cloud Console で、[Monitoring] を選択します。

    [モニタリング] に移動

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

  3. [稼働時間の詳細] ウィンドウを表示するには、表示する稼働時間チェックを見つけて、稼働時間チェックの名前をクリックします。

    次のスクリーンショットは、「My Uptime Check」という名前の稼働時間チェックの稼働時間の詳細を示しています。

    稼働時間チェック ダッシュボードの例。

    [稼働時間の詳細] ウィンドウには以下の情報が含まれます。

    • 選択した時間間隔。デフォルトの間隔は 1 時間です。
    • 稼働時間チェックの名前。この例では、チェックの名前は My Uptime Check です。
    • 稼働率と平均レイテンシ。 [Percent uptime] の値は、(S/T)*100 として計算されるパーセンテージです。ここで、S は成功したチェック レスポンスの数で、T は、すべてのロケーションからのチェック レスポンスの合計数です。グループ チェックの場合、S および T の値は、現在のすべてのグループ メンバーにわたって合計されます。

      たとえば、すべてのリージョンで 1 分間の稼働時間チェックを 25 分間にわたって実行すると、6 つのロケーションそれぞれから 25 件のリクエストが取得されるため、合計で 150 件のリクエストになります。また、ダッシュボードで 83.3% の稼働時間がレポートされた場合、150 件のリクエストのうち 125 件が成功したことを意味します。

    • [Passed checks] と [Uptime check latency] ペインには、渡されたチェックの数と各チェックのレイテンシを時間の関数としてグラフで表示します。

    • [Current status] ペインには、最新のチェックのステータスが表示されます。 リージョンの隣にあるチェックマークのついた緑色の丸は、そのリージョンで最後に実行されたチェックが成功したことを示します。バツ印のついた赤い丸は失敗を示します。

    • [Configuration] ペインに、稼働時間チェックの構成が表示されます。 このデータは、稼働時間チェックの作成時に割り当てられます。 [Check Id] の値は、API 呼び出しの [UPTIME_CHECK_ID] 値に対応しています。

    • [Alert Policy] ペインには、関連するアラート ポリシーの情報が表示されます。 このサンプル ダッシュボードでは、1 つのアラート ポリシーが構成されています。

C#

public static object GetUptimeCheckConfig(string configName)
    {
        var client = UptimeCheckServiceClient.Create();
        UptimeCheckConfig config = client.GetUptimeCheckConfig(configName);
        if (config == null)
        {
            Console.Error.WriteLine(
                "No configuration found with the name {0}", configName);
            return -1;
        }
        Console.WriteLine("Name: {0}", config.Name);
        Console.WriteLine("Display Name: {0}", config.DisplayName);
        Console.WriteLine("Http Path: {0}", config.HttpCheck.Path);
        return 0;
    }

Java

private static void getUptimeCheckConfig(String projectId, String checkName) throws IOException {
      try (UptimeCheckServiceClient client = UptimeCheckServiceClient.create()) {
        String fullCheckName = UptimeCheckConfigName.format(projectId, checkName);
        UptimeCheckConfig config = client.getUptimeCheckConfig(fullCheckName);
        if (config != null) {
          System.out.println(config.toString());
        } else {
          System.out.println(
              "No uptime check config found with name " + checkName + " in project " + projectId);
        }
      } catch (Exception e) {
        usage("Exception getting uptime check: " + e.toString());
        throw e;
      }
    }

Go


    // get is an example of getting an uptime check. resourceName should be
    // of the form `projects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID]`.
    func get(w io.Writer, resourceName string) (*monitoringpb.UptimeCheckConfig, error) {
    	ctx := context.Background()
    	client, err := monitoring.NewUptimeCheckClient(ctx)
    	if err != nil {
    		return nil, fmt.Errorf("NewUptimeCheckClient: %v", err)
    	}
    	defer client.Close()
    	req := &monitoringpb.GetUptimeCheckConfigRequest{
    		Name: resourceName,
    	}
    	config, err := client.GetUptimeCheckConfig(ctx, req)
    	if err != nil {
    		return nil, fmt.Errorf("GetUptimeCheckConfig: %v", err)
    	}
    	fmt.Fprintf(w, "Config: %v", config)
    	return config, nil
    }
    

Node.js

// 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 uptimeCheckConfigId = 'YOUR_UPTIME_CHECK_CONFIG_ID';

    const request = {
      // i.e. name: 'projects/my-project-id/uptimeCheckConfigs/My-Uptime-Check
      name: client.projectUptimeCheckConfigPath(projectId, uptimeCheckConfigId),
    };

    console.log(`Retrieving ${request.name}`);

    // Retrieves an uptime check config
    const [uptimeCheckConfig] = await client.getUptimeCheckConfig(request);
    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

use Google\Cloud\Monitoring\V3\UptimeCheckServiceClient;

    /**
     * Example:
     * ```
     * get_uptime_check($projectId, $configName);
     * ```
     *
     * @param string $projectId Your project ID
     * @param string $configName
     */
    function get_uptime_check($projectId, $configName)
    {
        $uptimeCheckClient = new UptimeCheckServiceClient([
            'projectId' => $projectId,
        ]);

        $uptimeCheck = $uptimeCheckClient->getUptimeCheckConfig($configName);

        print('Retrieved an uptime check:' . PHP_EOL);
        print($uptimeCheck->serializeToJsonString() . PHP_EOL);
    }

Python

def get_uptime_check_config(config_name):
        client = monitoring_v3.UptimeCheckServiceClient()
        config = client.get_uptime_check_config(config_name)
        pprint.pprint(config)

Ruby

def get_uptime_check_config config_name
      require "google/cloud/monitoring/v3"

      client = Google::Cloud::Monitoring::V3::UptimeCheck.new
      config = client.get_uptime_check_config config_name
      pp config.to_h
      config
    end

稼働時間チェックを編集する

稼働時間チェックを編集するには、次の手順に従います。

コンソール

  1. Cloud Console で、[Monitoring] を選択します。

    [モニタリング] に移動

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

  3. 編集する稼働時間チェックを見つけ、次のいずれかの操作を行います。

    • クリック[その他] をクリックして、[編集] を選択します。
    • 稼働時間チェックの詳細を表示し、[Edit] をクリックします。
  4. 必要に応じてフィールドの値を変更します。一部のフィールドは変更できません。チェックのカスタム ヘッダーの値が非表示になっている場合は、表示できません。

  5. チェックが動作するかどうかを確認するには、[TEST] をクリックします。テストが失敗した場合は、チェックの失敗を参照して考えられる原因を特定します。

  6. [保存] をクリックします。

API

projects.uptimeCheckConfigs.patch メソッドを呼び出します。メソッドのパラメータを次のように設定します。

  • uptimeCheckConfig.name: 必須。これは REST URL の一部で、編集する稼働時間チェックのリソース名です。

    projects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID]
        

    [UPTIME_CHECK_ID] は create または list メソッドのレスポンスから取得できます。この ID は Google Cloud Console には表示されません。

  • updateMask: 任意。これは次のようなクエリ パラメータになります。?updateMask=[FIELD_LIST][FIELD_LIST] には、変更する UptimeCheckConfig オブジェクト内のフィールドをカンマ区切りのリストとして指定します。例:

    "resource.type,httpCheck.path"
        
  • リクエスト本文には、新しいフィールド値を指定した UptimeCheckConfig を含める必要があります。

updateMask が設定されている場合は、updateMask にリストされたフィールドについてのみ、既存構成の対応するフィールドが置換されます。サブフィールドが存在するフィールドについては、フィールド マスクのリストにフィールドだけ含まれ、サブフィールドが含まれていない場合でも、そのフィールド値に応じてサブフィールドの値が適宜置き換えられます。

updateMask が設定されていない場合、リクエスト本文中の構成が既存の構成全体と置き換わります。

patch メソッドは、変更後の構成が反映された UptimeCheckConfig オブジェクトを返します。

C#

public static object UpdateUptimeCheck(string configName,
        string newHttpPath, string newDisplayName)
    {
        var client = UptimeCheckServiceClient.Create();
        var config = client.GetUptimeCheckConfig(configName);
        var fieldMask = new FieldMask();
        if (newDisplayName != null)
        {
            config.DisplayName = newDisplayName;
            fieldMask.Paths.Add("display_name");
        }
        if (newHttpPath != null)
        {
            config.HttpCheck.Path = newHttpPath;
            fieldMask.Paths.Add("http_check.path");
        }
        client.UpdateUptimeCheckConfig(config);
        return 0;
    }

Java

private static void updateUptimeCheck(
        String projectId, String displayName, String hostName, String pathName) throws IOException {
      String fullCheckName = UptimeCheckConfigName.format(projectId, displayName);

      UpdateUptimeCheckConfigRequest request = UpdateUptimeCheckConfigRequest
          .newBuilder()
          .setUpdateMask(FieldMask
              .newBuilder()
              .addPaths("http_check.path"))
          .setUptimeCheckConfig(UptimeCheckConfig
              .newBuilder()
              .setName(fullCheckName)
              .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.updateUptimeCheckConfig(request);
        System.out.println("Uptime check updated: \n" + config.toString());
      } catch (Exception e) {
        usage("Exception updating uptime check: " + e.toString());
        throw e;
      }
    }

Go


    // update is an example of updating an uptime check. resourceName should be
    // of the form `projects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID]`.
    func update(w io.Writer, resourceName, displayName, httpCheckPath string) (*monitoringpb.UptimeCheckConfig, error) {
    	ctx := context.Background()
    	client, err := monitoring.NewUptimeCheckClient(ctx)
    	if err != nil {
    		return nil, fmt.Errorf("NewUptimeCheckClient: %v", err)
    	}
    	defer client.Close()
    	getReq := &monitoringpb.GetUptimeCheckConfigRequest{
    		Name: resourceName,
    	}
    	config, err := client.GetUptimeCheckConfig(ctx, getReq)
    	if err != nil {
    		return nil, fmt.Errorf("GetUptimeCheckConfig: %v", err)
    	}
    	config.DisplayName = displayName
    	config.GetHttpCheck().Path = httpCheckPath
    	req := &monitoringpb.UpdateUptimeCheckConfigRequest{
    		UpdateMask: &field_mask.FieldMask{
    			Paths: []string{"display_name", "http_check.path"},
    		},
    		UptimeCheckConfig: config,
    	}
    	config, err = client.UpdateUptimeCheckConfig(ctx, req)
    	if err != nil {
    		return nil, fmt.Errorf("UpdateUptimeCheckConfig: %v", err)
    	}
    	fmt.Fprintf(w, "Successfully updated %v", resourceName)
    	return config, nil
    }
    

Node.js

// 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 uptimeCheckConfigId = 'YOUR_UPTIME_CHECK_CONFIG_ID';
    // const displayName = 'A New Display Name';
    // const path = '/some/path';

    const request = {
      // i.e. name: 'projects/my-project-id/uptimeCheckConfigs/My-Uptime-Check
      name: client.projectUptimeCheckConfigPath(projectId, uptimeCheckConfigId),
    };

    console.log(`Updating ${request.name} to ${displayName}`);

    // Updates the display name and path on an uptime check config
    request.uptimeCheckConfig = {
      name: request.name,
      displayName: displayName,
      httpCheck: {
        path: path,
      },
    };

    request.updateMask = {
      paths: ['display_name', 'http_check.path'],
    };

    const [response] = await client.updateUptimeCheckConfig(request);
    console.log(`${response.name} config updated.`);
    

PHP

use Google\Cloud\Monitoring\V3\UptimeCheckServiceClient;
    use Google\Protobuf\FieldMask;

    /**
     * Example:
     * ```
     * update_uptime_checks($projectId);
     * ```
     */
    function update_uptime_checks($projectId, $configName, $newDisplayName = null, $newHttpCheckPath = null)
    {
        $uptimeCheckClient = new UptimeCheckServiceClient([
            'projectId' => $projectId,
        ]);

        $uptimeCheck = $uptimeCheckClient->getUptimeCheckConfig($displayName);
        $fieldMask = new FieldMask();
        if ($newDisplayName) {
            $fieldMask->getPaths()[] = 'display_name';
            $uptimeCheck->setDisplayName($newDisplayName);
        }
        if ($newHttpCheckPath) {
            $fieldMask->getPaths()[] = 'http_check.path';
            $uptimeCheck->getHttpCheck()->setPath($newHttpCheckPath);
        }

        $uptimeCheckClient->updateUptimeCheckConfig($uptimeCheck, $fieldMask);

        print($uptimeCheck->serializeToString() . PHP_EOL);
    }

Python

def update_uptime_check_config(config_name, new_display_name=None,
                                   new_http_check_path=None):
        client = monitoring_v3.UptimeCheckServiceClient()
        config = client.get_uptime_check_config(config_name)
        field_mask = monitoring_v3.types.FieldMask()
        if new_display_name:
            field_mask.paths.append('display_name')
            config.display_name = new_display_name
        if new_http_check_path:
            field_mask.paths.append('http_check.path')
            config.http_check.path = new_http_check_path
        client.update_uptime_check_config(config, field_mask)

Ruby

def update_uptime_check_config config_name: nil, new_display_name: nil, new_http_check_path: nil
      require "google/cloud/monitoring/v3"

      client = Google::Cloud::Monitoring::V3::UptimeCheck.new
      config = { name: config_name }
      field_mask = { paths: [] }
      unless new_display_name.to_s.empty?
        field_mask[:paths].push "display_name"
        config[:display_name] = new_display_name
      end
      unless new_http_check_path.to_s.empty?
        field_mask[:paths].push "http_check.path"
        config[:http_check] = { path: new_http_check_path }
      end
      client.update_uptime_check_config config, update_mask: field_mask
    end

新しい稼働時間チェックの結果が表示されるまでに最大 5 分の遅延が発生する可能性があります。その間は、変更前の稼働時間チェックの結果がダッシュボードに表示され、アラート ポリシーで使用されます。

稼働時間チェックを削除する

稼働時間チェックを削除する前に、そのチェックを使用するアラート ポリシーからチェックを除外してください。ポリシーから稼働時間チェックを除外しないと、Monitoring Console で稼働時間チェックを削除できません。API で稼働時間チェックを削除すると、アラート ポリシーは削除された稼働時間チェックを無視し、削除されたチェックのインシデントを作成しません。

稼働時間チェックを削除するには、次の手順に従います。

コンソール

  1. Cloud Console で、[Monitoring] を選択します。

    [モニタリング] に移動

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

  3. 編集する稼働時間チェックを見つけ、次のいずれかの操作を行います。

    • [その他] をクリックして、[削除] を選択します。
    • 稼働時間チェックの詳細を表示して、[削除] をクリックします。

API

projects.uptimeCheckConfigs.delete メソッドを呼び出します。パラメータを次のように設定します。

  • name: 必須。これは削除する稼働時間チェック構成のリソース名であり、書式は次のとおりです。

    projects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID]
        

    [UPTIME_CHECK_ID] は create または list メソッドのレスポンスから取得できます。この ID は Google Cloud Console には表示されません。

C#

public static object DeleteUptimeCheckConfig(string configName)
    {
        var client = UptimeCheckServiceClient.Create();
        client.DeleteUptimeCheckConfig(configName);
        Console.WriteLine($"Deleted {configName}");
        return 0;
    }

Java

private static void deleteUptimeCheckConfig(String projectId, String checkName)
        throws IOException {
      try (UptimeCheckServiceClient client = UptimeCheckServiceClient.create()) {
        client.deleteUptimeCheckConfig(UptimeCheckConfigName.format(projectId, checkName));
      } catch (Exception e) {
        usage("Exception deleting uptime check: " + e.toString());
        throw e;
      }
    }

Go


    // delete is an example of deleting an uptime check. resourceName should be
    // of the form `projects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID]`.
    func delete(w io.Writer, resourceName string) error {
    	ctx := context.Background()
    	client, err := monitoring.NewUptimeCheckClient(ctx)
    	if err != nil {
    		return fmt.Errorf("NewUptimeCheckClient: %v", err)
    	}
    	defer client.Close()
    	req := &monitoringpb.DeleteUptimeCheckConfigRequest{
    		Name: resourceName,
    	}
    	if err := client.DeleteUptimeCheckConfig(ctx, req); err != nil {
    		return fmt.Errorf("DeleteUptimeCheckConfig: %v", err)
    	}
    	fmt.Fprintf(w, "Successfully deleted %q", resourceName)
    	return nil
    }
    

Node.js

// 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 uptimeCheckConfigId = 'YOUR_UPTIME_CHECK_CONFIG_ID';

    const request = {
      // i.e. name: 'projects/my-project-id/uptimeCheckConfigs/My-Uptime-Check
      name: client.projectUptimeCheckConfigPath(projectId, uptimeCheckConfigId),
    };

    console.log(`Deleting ${request.name}`);

    // Delete an uptime check config
    await client.deleteUptimeCheckConfig(request);
    console.log(`${request.name} deleted.`);
    

PHP

use Google\Cloud\Monitoring\V3\UptimeCheckServiceClient;

    /**
     * Example:
     * ```
     * delete_uptime_check($projectId, $configName);
     * ```
     *
     * @param string $projectId Your project ID
     * @param string $configName
     */
    function delete_uptime_check($projectId, $configName)
    {
        $uptimeCheckClient = new UptimeCheckServiceClient([
            'projectId' => $projectId,
        ]);

        $uptimeCheckClient->deleteUptimeCheckConfig($configName);

        printf('Deleted an uptime check: ' . $configName . PHP_EOL);
    }

Python

def delete_uptime_check_config(config_name):
        client = monitoring_v3.UptimeCheckServiceClient()
        client.delete_uptime_check_config(config_name)
        print('Deleted ', config_name)

Ruby

def delete_uptime_check_config config_name
      require "google/cloud/monitoring/v3"

      client = Google::Cloud::Monitoring::V3::UptimeCheck.new
      client.delete_uptime_check_config config_name
      puts "Deleted #{config_name}"
    end