稼働時間チェック サーバーの IP アドレスを一覧表示する

このドキュメントでは、稼働時間チェック サーバーによって使用される IP アドレスのリストを取得する方法、および稼働時間チェック サーバーからのトラフィックをログ内で識別する方法について説明します。

IP アドレスを一覧表示する

ファイアウォールの後ろでサービスをチェックしている場合は、稼働時間チェックに使用される IP アドレスからのトラフィックを受け入れるようにご利用のサービスのファイアウォールを構成することができます。IP アドレスを取得する手順は次のとおりです。

コンソール

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

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

  2. [稼働時間チェック] メニューで、[ ダウンロード] をクリックします。IP アドレスを含む uptime-source-ips.txt ファイルがダウンロードされます。

gcloud

gcloud monitoring uptime list-ips コマンドを実行します。

gcloud monitoring uptime list-ips

このメソッドが各 IP アドレスについて次の情報を返します。

  • IPv4 または IPv6 形式の IP アドレス。範囲は使用できません。
  • リージョン: USAEUROPESOUTH_AMERICA または ASIA_PACIFIC
  • リージョン内のロケーション。

API

Monitoring API の uptimeCheckIps.list メソッドを呼び出します。

このメソッドが各 IP アドレスについて次の情報を返します。

  • リージョン: USAEUROPESOUTH_AMERICA または ASIA_PACIFIC
  • リージョン内の特定のロケーション。
  • IPv4 または IPv6 形式の IP アドレス。範囲は使用できません。

C#

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

public static object ListUptimeCheckIps()
{
    var client = UptimeCheckServiceClient.Create();
    var ips = client.ListUptimeCheckIps(new ListUptimeCheckIpsRequest());
    foreach (UptimeCheckIp ip in ips)
    {
        Console.WriteLine("{0,20} {1}", ip.IpAddress, ip.Location);
    }
    return 0;
}

Java

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

private static void listUptimeCheckIps() throws IOException {
  try (UptimeCheckServiceClient client = UptimeCheckServiceClient.create()) {
    ListUptimeCheckIpsPagedResponse response =
        client.listUptimeCheckIps(ListUptimeCheckIpsRequest.newBuilder().build());
    for (UptimeCheckIp config : response.iterateAll()) {
      System.out.println(config.getRegion() + " - " + config.getIpAddress());
    }
  } catch (Exception e) {
    usage("Exception listing uptime IPs: " + e.toString());
    throw e;
  }
}

Go

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


// listIPs is an example of listing uptime check IPs.
func listIPs(w io.Writer) error {
	ctx := context.Background()
	client, err := monitoring.NewUptimeCheckClient(ctx)
	if err != nil {
		return fmt.Errorf("NewUptimeCheckClient: %w", err)
	}
	defer client.Close()
	req := &monitoringpb.ListUptimeCheckIpsRequest{}
	it := client.ListUptimeCheckIps(ctx, req)
	for {
		config, err := it.Next()
		if err == iterator.Done {
			break
		}
		if err != nil {
			return fmt.Errorf("ListUptimeCheckIps: %w", err)
		}
		fmt.Fprintln(w, config)
	}
	fmt.Fprintln(w, "Done listing uptime check IPs")
	return nil
}

Node.js

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

// Imports the Google Cloud client library
const monitoring = require('@google-cloud/monitoring');

// Creates a client
const client = new monitoring.UptimeCheckServiceClient();

// List uptime check IPs
const [uptimeCheckIps] = await client.listUptimeCheckIps();
uptimeCheckIps.forEach(uptimeCheckIp => {
  console.log(
    uptimeCheckIp.region,
    uptimeCheckIp.location,
    uptimeCheckIp.ipAddress
  );
});

PHP

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

use Google\Cloud\Monitoring\V3\Client\UptimeCheckServiceClient;
use Google\Cloud\Monitoring\V3\ListUptimeCheckIpsRequest;

/**
 * Example:
 * ```
 * list_uptime_check_ips($projectId);
 * ```
 */
function list_uptime_check_ips(string $projectId): void
{
    $uptimeCheckClient = new UptimeCheckServiceClient([
        'projectId' => $projectId,
    ]);
    $listUptimeCheckIpsRequest = new ListUptimeCheckIpsRequest();

    $pages = $uptimeCheckClient->listUptimeCheckIps($listUptimeCheckIpsRequest);

    foreach ($pages->iteratePages() as $page) {
        $ips = $page->getResponseObject()->getUptimeCheckIps();
        foreach ($ips as $ip) {
            printf(
                'ip address: %s, region: %s, location: %s' . PHP_EOL,
                $ip->getIpAddress(),
                $ip->getRegion(),
                $ip->getLocation()
            );
        }
    }
}

Python

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

def list_uptime_check_ips() -> pagers.ListUptimeCheckIpsPager:
    """Gets all locations and IP addresses used by uptime check servers

    Returns:
        A list of locations and IP addresses of uptime check servers.
        Iterating over this object will yield results and resolve additional pages automatically.
    """
    client = monitoring_v3.UptimeCheckServiceClient()
    ips = client.list_uptime_check_ips(request={})
    print(
        tabulate.tabulate(
            [(ip.region, ip.location, ip.ip_address) for ip in ips],
            ("region", "location", "ip_address"),
        )
    )
    return ips

Ruby

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

def list_ips
  require "google/cloud/monitoring"
  client = Google::Cloud::Monitoring.uptime_check_service

  # Iterate over all results.
  client.list_uptime_check_ips({}).each do |element|
    puts "#{element.location} #{element.ip_address}"
  end
end

稼働時間チェックは、これらの IP アドレスのいずれかに由来しますが、各時間間隔に使用されるのは、それぞれの地理的なロケーションから 1 つのアドレスのみです。前のセクションで示したように、地理的なロケーションは、稼働時間チェックのダッシュボードに表示されます。また、ダウンロードした IP アドレスの登録場所を識別するために、無料のウェブベースのサービスを使用することもできます。

ログ内の稼働時間チェック トラフィックを識別する

サービスのリクエストログ内の以下の情報により、稼働時間チェック サーバーからのリクエストを識別することができます。

  • ip: ip フィールドには、稼働時間チェック サーバーによって使用されるアドレスの 1 つが格納されます。すべての IP アドレスを一覧表示する方法については、IP アドレスを一覧表示するをご覧ください。
  • User-Agent: User-Agent ヘッダーの値は常に次の値です。

    GoogleStackdriverMonitoring-UptimeChecks(https://cloud.google.com/monitoring)
    

    User-Agent カスタム ヘッダーを指定すると、フォーム検証エラーになり、チェックの構成は保存されません。

次のステップ