Elenca gli indirizzi IP del server per i controlli di uptime

Questo documento mostra come ottenere un elenco degli indirizzi IP utilizzati dai server per i controlli di uptime e come identificare il traffico proveniente dai server dei controlli di uptime nei tuoi log.

Elenca indirizzi IP

Quando controlli un servizio protetto da un firewall, puoi configurare il firewall del servizio in modo che accetti il traffico dal set attuale di indirizzi IP utilizzati per i controlli di uptime. Per recuperare questi indirizzi IP, segui le istruzioni riportate di seguito:

Console

  1. Nel pannello di navigazione della console Google Cloud, seleziona Monitoring, quindi  Controlli di uptime:

    Vai a Controlli di uptime

  2. Nel menu Controlli di uptime, fai clic su Scarica. Viene scaricato un file uptime-source-ips.txt che contiene gli indirizzi IP.

gcloud

Esegui il comando gcloud monitoring uptime list-ips:

gcloud monitoring uptime list-ips

Il metodo restituisce le seguenti informazioni per ogni indirizzo IP:

  • L'indirizzo IP, non un intervallo, in formato IPv4 o IPv6.
  • La regione: USA, EUROPE, SOUTH_AMERICA o ASIA_PACIFIC.
  • La località all'interno della regione.

API

Chiama il metodo uptimeCheckIps.list dell'API Monitoring.

Il metodo restituisce le seguenti informazioni per ogni indirizzo IP:

  • La regione: USA, EUROPE, SOUTH_AMERICA o ASIA_PACIFIC.
  • Una località più specifica all'interno della regione.
  • L'indirizzo IP, non un intervallo, in formato IPv4 o IPv6.

C#

Per eseguire l'autenticazione a Monitoring, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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

Per eseguire l'autenticazione a Monitoring, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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

Per eseguire l'autenticazione a Monitoring, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.


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

Per eseguire l'autenticazione a Monitoring, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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

Per eseguire l'autenticazione a Monitoring, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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

Per eseguire l'autenticazione a Monitoring, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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

Per eseguire l'autenticazione a Monitoring, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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

I controlli di uptime possono provenire da qualsiasi indirizzo IP, ma per ogni intervallo di tempo viene utilizzato un solo indirizzo per ciascuna località geografica. Le località geografiche sono elencate nella dashboard dei controlli di uptime, come mostrato nella sezione precedente. Puoi anche utilizzare servizi gratuiti basati sul web per identificare le località registrate degli indirizzi IP scaricati.

Identifica il traffico dei controlli di uptime nei log

Puoi identificare le richieste dei server per i controlli di uptime in base alle seguenti informazioni nei log delle richieste del tuo servizio:

  • ip: il campo ip contiene uno degli indirizzi utilizzati dai server per i controlli di uptime. Per informazioni su come elencare tutti gli indirizzi IP, consulta Elencare gli indirizzi IP.
  • User-Agent: il valore dell'intestazione User-Agent è sempre il seguente:

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

    Se specifichi un'intestazione personalizzata User-Agent, viene restituito un errore di convalida del modulo e impedisce il salvataggio della configurazione di controllo.

Passaggi successivi