稼働時間チェックの管理

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

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

  • 新しい稼働時間チェックの作成
  • 既存の稼働時間チェックの一覧表示
  • 稼働時間チェックの編集
  • 稼働時間チェックの削除

稼働時間チェックのステータスを表示する方法、または稼働時間チェックに使用できる IP アドレスのリストを取得する方法については、IP アドレスの取得をご覧ください。API を使用して稼働時間チェックのステータスを確認するには、指標 monitoring.googleapis.com/uptime_check/check_passed をモニタリングします。詳細については、GCP 指標の一覧をご覧ください。

始める前に

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

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

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

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

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

稼働時間チェックの作成

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

Console

  1. Stackdriver Monitoring Console で、[Uptime checks] > [Uptime checks overview] に移動します。

    [Uptime Checks Overview] に移動

  2. 右上にある [Add uptime check] をクリックします。

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

    稼働時間チェックの作成

  4. 必要に応じて、ポート、カスタム ヘッダー、認証に関する構成にアクセスするために、[Advanced options] をクリックします。詳しくは、このページの詳細オプションをご覧ください。

  5. 稼働時間チェックの結果を確認するには、[Test] をクリックします。想定外の結果の場合は、下記のチェックの失敗を参照して構成を修正し、テストを繰り返してください。

  6. [Save] をクリックします。必須フィールドが入力されていない場合、稼働時間チェックは保存できません。[Save] ボタンが無効な場合は、入力されていない値がないか確認してください。[Hostname] フィールドに値を入力する必要があります。

API

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

  • parent: 必須。稼働時間チェックを作成するプロジェクトの名前を指定する必要があります。[PROJECT_ID] は実際の GCP プロジェクト 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 に送信され始めるまでに、最大 25 分の遅延が発生する可能性があります。その間、稼働時間チェック ダッシュボードには「データがありません」というステータスが表示されます。

基本オプション

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

  1. [Title]: チェックを識別するための名前です。たとえば、Example.com uptime check とします。

  2. [Check Type]: プロトコル(HTTPHTTPSTCP)を選択します。

    HTTPS を選択すると、サービスは HTTPS で接続しようとしますが、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. 以下のように、チェックの種類とリソースタイプに応じて接続情報を入力します。

    • [Applies to](App Engine、ELB、またはインスタンス): 1 つのリソース、または [すべてのインスタンス] などのリソースのグループに、稼働時間チェックを適用できます。単一のリソースを選択した場合は、メニューに表示される既存のリソースから選びます。API を使用する場合は、モニタリング対象リソースのリストのとおりに、モニタリング対象リソースと必要なリソースラベルを記述します。

    • [Module](App Engine): アプリケーション モジュールを指定します。

    • [Hostname](App Engine を除くすべて): サービスのホスト名を指定します。たとえば、「example.com」と入力します。

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

    • [Port](HTTP、HTTPS、TCP): 接続に使用するポートを選択します。

      • HTTP チェックおよび HTTPS チェックの場合、この設定は [Advanced Options] にあります。
      • API では、このフィールドを空白のままにすると、デフォルト値(TCP と HTTP では 80、HTTPS では 443)が使用されます。
    • [Response content contains the text](HTTP、HTTPS、TCP): 成功した場合にチェック レスポンスに含まれる文字列(最大 1,024 文字)を入力します。この文字列がレスポンスのどこにもない場合、チェックは失敗となります。

      • HTTP チェックおよび HTTPS チェックの場合、このフィールドは [Advanced Options] にあります。
      • API では、これは ContentMatcher オブジェクトです。
  5. [Check every]: 151015 分のいずれか。たとえば、5 分を選択すると、各ロケーションから 5 分ごとにサービスへの接続を行います。デフォルトの 6 つのロケーションを使用して 5 分ごとにチェックした場合、毎分平均 1.2 件のリクエストがサービスに送られます。1 分ごとにチェックすると、毎分平均 6 件のリクエストが送られます。

詳細オプション

[Advanced options] セクションは HTTP、HTTPS、TCP のチェックタイプに適用されます。

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

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

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

以下の設定は任意であり、設定できる項目はチェックの種類によって異なります。

  • [HTTP Host Header]: 仮想ホストをチェックする場合に入力します。このフィールドは TCP チェックには使用できません。

  • [Port]: ポート番号を指定します。TCP チェックの場合、このフィールドは [Basic Options] にあります。

  • [Response content contains the text]: 成功した場合にチェック レスポンスに含まれる文字列(最大 1,024 文字)を入力します。TCP チェックの場合、このフィールドは [Basic Options] にあります。

  • [Locations]: チェックがリクエストを受け取るリージョンを選択します。少なくとも 3 つのロケーションがアクティブになるように、十分な数のリージョンを選択する必要があります。チェックを作成するとき、各リージョンにあるロケーションがリージョンの名前の下に表示されます。選択したリージョンの新しいチェッカー ロケーションから、構成された宛先にリクエストが自動的に送信されます。使用可能なすべてのロケーションから常にリクエストを送信する場合は、[Global] を選択します。リクエストの送信元を既存リージョンのすべてのロケーションに限定して、新しいリージョンの新しいロケーションでは行われないようにするには、[Global] を選択せず、既存のリージョンをすべて選択します。

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

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

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

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

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

projects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID]

メソッド呼び出しのレスポンスで返された稼働時間チェック ID を使用して、稼働時間チェックの作成や一覧表示を行えます。また、Stackdriver Monitoring コンソールの稼働時間チェックのページで、[Check config] パネルに示される [Check ID] フィールドで稼働時間チェック ID を確認することもできます。

稼働時間チェックの確認

Stackdriver Monitoring Console で稼働時間チェックを作成する場合、構成を保存する前にテストできます。

チェックの成功

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

  • HTTP ステータスが Success である。
  • レスポンスに必要なコンテンツが指定されていない、もしくは、レスポンスを検索して必要なコンテンツが見つかった。

チェックの失敗

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

  • 接続エラー - 拒否: デフォルトの 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] で指定します。

アラート ポリシーの作成

稼働時間チェック失敗の通知を受ける必要がある場合は、新しい稼働時間チェック用のアラート ポリシーを作成します。詳細については、稼働時間チェックに関するアラートをご覧ください。

稼働時間チェックの一覧表示

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

Console

  1. 稼働時間チェックのリストを表示するには、Stackdriver Monitoring Console で、[Uptime checks] > [Uptime checks overview] に移動します。稼働時間チェックは、複数のページにわたって表示されることもあります。

    [Uptime Checks Overview] に移動

  2. チェックのリストをフィルタリングするには、次のいずれかの操作を行います。

    • [Filter] フィールドにテキストを入力すると、タイトルにそのテキストを含むチェックだけが表示されます。
    • 特定のグループのメンバーをフィルタリングするには、[Filter] フィールドの左にあるボタンを使用します。

    稼働時間チェックをクリックすると、そのチェックの詳細が表示されます。

API

稼働時間チェック構成のリストを取得するには、projects.uptimeCheckConfigs.list メソッドを呼び出します。次のパラメータを指定します。

  • parent: 稼働時間チェックのリストを取得する対象のプロジェクト。書式は次のとおりです。

    projects/[PROJECT_ID]
    

特定の稼働時間チェックを取得するには、projects.uptimeCheckConfigs.get メソッドを呼び出します。次のパラメータを指定します。

  • name: 稼働時間チェック構成の完全な名前。

    projects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID]
    

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

C#

public static object ListUptimeCheckConfigs(string projectId)
{
    var client = UptimeCheckServiceClient.Create();
    var configs = client.ListUptimeCheckConfigs(
        new ProjectName(projectId).ToString());
    foreach (UptimeCheckConfig config in configs)
    {
        Console.WriteLine(config.Name);
    }
    return 0;
}

Java

private static void listUptimeChecks(String projectId) throws IOException {
  ListUptimeCheckConfigsRequest request = ListUptimeCheckConfigsRequest
      .newBuilder()
      .setParent(ProjectName.format(projectId))
      .build();
  try (UptimeCheckServiceClient client = UptimeCheckServiceClient.create()) {
    ListUptimeCheckConfigsPagedResponse response = client.listUptimeCheckConfigs(request);
    for (UptimeCheckConfig config : response.iterateAll()) {
      System.out.println(config.getDisplayName());
    }
  } catch (Exception e) {
    usage("Exception listing uptime checks: " + e.toString());
    throw e;
  }
}

Go

// list is an example of listing the uptime checks in projectID.
func list(w io.Writer, projectID string) error {
	ctx := context.Background()
	client, err := monitoring.NewUptimeCheckClient(ctx)
	if err != nil {
		return fmt.Errorf("NewUptimeCheckClient: %v", err)
	}
	defer client.Close()
	req := &monitoringpb.ListUptimeCheckConfigsRequest{
		Parent: "projects/" + projectID,
	}
	it := client.ListUptimeCheckConfigs(ctx, req)
	for {
		config, err := it.Next()
		if err == iterator.Done {
			break
		}
		if err != nil {
			return fmt.Errorf("ListUptimeCheckConfigs: %v", err)
		}
		fmt.Fprintln(w, config)
	}
	fmt.Fprintln(w, "Done listing uptime checks")
	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 request = {
  parent: client.projectPath(projectId),
};

// Retrieves an uptime check config
const [uptimeCheckConfigs] = await client.listUptimeCheckConfigs(request);

uptimeCheckConfigs.forEach(uptimeCheckConfig => {
  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:
 * ```
 * list_uptime_checks($projectId);
 * ```
 */
function list_uptime_checks($projectId)
{
    $uptimeCheckClient = new UptimeCheckServiceClient([
        'projectId' => $projectId,
    ]);

    $pages = $uptimeCheckClient->listUptimeCheckConfigs(
        $uptimeCheckClient->projectName($projectId)
    );

    foreach ($pages->iteratePages() as $page) {
        foreach ($page as $uptimeCheck) {
            print($uptimeCheck->getName() . PHP_EOL);
        }
    }
}

Python

def list_uptime_check_configs(project_name):
    client = monitoring_v3.UptimeCheckServiceClient()
    configs = client.list_uptime_check_configs(project_name)

    for config in configs:
        pprint.pprint(config)

Ruby

def list_uptime_check_configs project_id
  require "google/cloud/monitoring/v3"

  client = Google::Cloud::Monitoring::V3::UptimeCheck.new
  project_name = Google::Cloud::Monitoring::V3::UptimeCheckServiceClient.project_path project_id
  configs = client.list_uptime_check_configs project_name

  configs.each { |config| puts config.name }
end

単一の稼働時間チェックを取得することもできます。

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.uptimeCheckConfigPath(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_hash
  config
end

稼働時間チェックの編集

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

Console

  1. Stackdriver Monitoring Console で、[Uptime checks] > [Uptime checks overview] に移動します。稼働時間チェックは、複数のページにわたって表示されることもあります。

    [Uptime Checks Overview] に移動

  2. [Uptime Checks Overview] で、稼働時間チェックの概要の右側にある [Edit] をクリックします。

  3. 必要に応じてフィールドの値を変更します。一部のフィールドは変更できません。チェックのカスタム ヘッダーの値が非表示になっている場合は、表示できません。

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

  5. [Save] をクリックします。

API

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

  • uptimeCheckConfig.name: 必須。これは REST URL の一部であり、編集する稼働時間チェックのリソース名を次の書式で指定します。

    projects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID]
    

    [UPTIME_CHECK_ID] は create または list メソッドのレスポンスから取得できます。この ID は Stackdriver Monitoring 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.uptimeCheckConfigPath(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

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

稼働時間チェックの削除

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

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

Console

  1. Stackdriver Monitoring Console で、[Uptime checks] > [Uptime checks overview] に移動します。

    [Uptime Checks Overview] に移動

  2. [Uptime Checks Overview] で、稼働時間チェックの右側にある [Delete] をクリックします。

API

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

  • name: 必須。削除する稼働時間チェック構成のリソース名を次の書式で指定します。

    projects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID]
    

    [UPTIME_CHECK_ID] は create または list メソッドのレスポンスから取得できます。この ID は Stackdriver Monitoring 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.uptimeCheckConfigPath(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

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。