Server-IP-Adressen für die Verfügbarkeitsdiagnose auflisten

Damit eingehende Tests Ihre Firewall passieren können, können Sie die Liste der IP-Adressen abrufen, die von den Verfügbarkeitsdiagnose-Servern von Cloud Monitoring verwendet werden. Sie können diese IP-Adressen und den Anfrageheader User-Agent auch verwenden, um Uptime-Check-Traffic in den Logs Ihres Dienstes zu identifizieren.

IP-Adressen auflisten

Wenn Sie einen Dienst prüfen, der sich hinter einer Firewall befindet, können Sie die Firewall Ihres Dienstes so konfigurieren, dass Traffic von den aktuellen IP-Adressen akzeptiert wird, die für die Uptime-Prüfung verwendet werden. So rufen Sie diese IP-Adressen ab:

Console

  1. Rufen Sie in der Google Cloud Console die Seite Verfügbarkeitsdiagnosen  auf:

    Verfügbarkeitsdiagnosen aufrufen

    Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Monitoring ist.

  2. Wählen Sie in der Symbolleiste der Google Cloud Console Ihr Google Cloud -Projekt aus. Wählen Sie für App Hub-Konfigurationen das App Hub-Hostprojekt oder das Verwaltungsprojekt aus.
  3. Klicken Sie im Menü Verfügbarkeitsdiagnosen auf  Herunterladen. Eine Datei uptime-source-ips.txt wird heruntergeladen und enthält die IP-Adressen.

gcloud

Führen Sie den Befehl gcloud monitoring uptime list-ips aus:

gcloud monitoring uptime list-ips

Die Methode gibt zu jeder IP-Adresse folgende Informationen zurück:

  • Die IP-Adresse (kein Bereich) im IPv4- oder IPv6-Format
  • Region: USA, EUROPE, SOUTH_AMERICA oder ASIA_PACIFIC.
  • Der Standort innerhalb der Region.

API

Rufen Sie die Methode uptimeCheckIps.list der Monitoring API auf.

Die Methode gibt zu jeder IP-Adresse folgende Informationen zurück:

  • Region: USA, EUROPE, SOUTH_AMERICA oder ASIA_PACIFIC.
  • Einen genauer spezifizierten Standort innerhalb der Region
  • Die IP-Adresse (kein Bereich) im IPv4- oder IPv6-Format

C#

Richten Sie zur Authentifizierung bei Monitoring Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter ADC für eine lokale Entwicklungsumgebung einrichten.

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

Richten Sie zur Authentifizierung bei Monitoring Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter ADC für eine lokale Entwicklungsumgebung einrichten.

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

Richten Sie zur Authentifizierung bei Monitoring Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter ADC für eine lokale Entwicklungsumgebung einrichten.


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

Richten Sie zur Authentifizierung bei Monitoring Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter ADC für eine lokale Entwicklungsumgebung einrichten.

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

Richten Sie zur Authentifizierung bei Monitoring Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter ADC für eine lokale Entwicklungsumgebung einrichten.

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

Richten Sie zur Authentifizierung bei Monitoring Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter ADC für eine lokale Entwicklungsumgebung einrichten.

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

Richten Sie zur Authentifizierung bei Monitoring Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter ADC für eine lokale Entwicklungsumgebung einrichten.

gem "google-cloud-monitoring"
require "google/cloud/monitoring"

def list_ips
  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

Verfügbarkeitsdiagnosen können von jeder der IP-Adressen stammen. Pro Zeitintervall wird jedoch nur eine einzige Adresse von jedem geografischen Standort verwendet. Die geografischen Standorte sind im Dashboard für Verfügbarkeitsdiagnosen aufgeführt. Sie können auch kostenlose webbasierte Dienste verwenden, um die registrierten Standorte der heruntergeladenen IP-Adressen zu ermitteln.

Traffic von Verfügbarkeitsdiagnosen in Logs erkennen

Folgen Sie zum Identifizieren der Anfragen von den Verfügbarkeitsdiagnose-Servern den Angaben in den Anfrage-Logs des Dienstes:

  • ip: Das Feld ip enthält eine der von den Verfügbarkeitsdiagnose-Servern verwendeten Adressen. Informationen zum Auflisten aller IP-Adressen finden Sie unter IP-Adressen auflisten.
  • User-Agent: Der Header User-Agent hat immer den folgenden Wert:

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

    Wenn Sie für User-Agent einen benutzerdefinierten Header angeben, wird ein Formularvalidierungsfehler ausgegeben und die Diagnosekonfiguration kann nicht gespeichert werden.

Nächste Schritte