Répertorier les adresses IP des serveurs de test de disponibilité

Pour autoriser les vérifications entrantes via votre pare-feu, vous pouvez récupérer la liste des adresses IP utilisées par les serveurs de test de disponibilité Cloud Monitoring. Vous pouvez également utiliser ces adresses IP et l'en-tête de requête User-Agent pour identifier le trafic de vérification du temps d'activité dans les journaux de votre service.

Lister les adresses IP

Lorsque vous vérifiez un service situé derrière un pare-feu, vous pouvez configurer le pare-feu de votre service pour qu'il accepte le trafic provenant de l'ensemble actuel d'adresses IP utilisées pour la vérification de la disponibilité. Pour obtenir ces adresses IP, suivez les instructions ci-dessous :

Console

  1. Dans la console Google Cloud , accédez à la page  Tests de disponibilité :

    Accéder à la page Tests de disponibilité

    Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est Monitoring.

  2. Dans la barre d'outils de la console Google Cloud , sélectionnez votre projet Google Cloud . Pour les configurations App Hub, sélectionnez le projet hôte App Hub ou le projet de gestion.
  3. Dans le menu Tests de disponibilité, cliquez sur Télécharger. Un fichier uptime-source-ips.txt est téléchargé et contient les adresses IP.

gcloud

Exécutez la commande gcloud monitoring uptime list-ips :

gcloud monitoring uptime list-ips

La méthode renvoie les informations suivantes pour chaque adresse IP :

  • L'adresse IP (et non une plage d'adresses) au format IPv4 ou IPv6
  • Région : USA, EUROPE, SOUTH_AMERICA ou ASIA_PACIFIC.
  • Emplacement dans la région.

API

Appelez la méthode uptimeCheckIps.list de l'API Monitoring.

La méthode renvoie les informations suivantes pour chaque adresse IP :

  • Région : USA, EUROPE, SOUTH_AMERICA ou ASIA_PACIFIC.
  • Une zone plus spécifique dans la région
  • L'adresse IP (et non une plage d'adresses) au format IPv4 ou IPv6

C#

Pour vous authentifier auprès de Monitoring, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

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

Pour vous authentifier auprès de Monitoring, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

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

Pour vous authentifier auprès de Monitoring, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.


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

Pour vous authentifier auprès de Monitoring, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

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

Pour vous authentifier auprès de Monitoring, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

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

Pour vous authentifier auprès de Monitoring, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

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

Pour vous authentifier auprès de Monitoring, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

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

Les tests de disponibilité peuvent provenir de n'importe quelle adresse IP, mais une seule adresse de chaque emplacement géographique est utilisée par intervalle de temps. Les zones géographiques sont listées dans le tableau de bord des tests de disponibilité. Vous pouvez également utiliser des services Web sans frais pour identifier les lieux enregistrés des adresses IP que vous avez téléchargées.

Identifier le trafic des vérifications de disponibilité dans les journaux

Vous pouvez identifier les requêtes des serveurs de tests de disponibilité grâce aux informations ci-dessous qui sont consignées dans les journaux de requêtes du service :

  • ip : le champ ip contient l'une des adresses utilisées par les serveurs de tests de disponibilité. Pour savoir comment lister toutes les adresses IP, consultez Lister les adresses IP.
  • User-Agent : l'en-tête User-Agent a toujours la valeur suivante :

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

    La spécification d'un en-tête User-Agent personnalisé entraîne une erreur de validation du formulaire et empêche l'enregistrement de la configuration de test.

Étapes suivantes