Liste os endereços IP do servidor de verificação de tempo de atividade

Este documento mostra como obter uma lista de endereços IP usados pelos servidores de verificação de tempo de atividade e como pode identificar o tráfego dos servidores de verificação de tempo de atividade nos seus registos.

Liste endereços IP

Quando estiver a verificar um serviço que está protegido por uma firewall, pode configurar a firewall do serviço para aceitar tráfego do conjunto atual de endereços IP usados para a verificação do tempo de atividade. Para obter estes endereços IP, siga as instruções abaixo:

Consola

  1. Na Google Cloud consola, aceda à página  Verificações de tempo de atividade:

    Aceda a Verificações de tempo de atividade

    Se usar a barra de pesquisa para encontrar esta página, selecione o resultado cujo subtítulo é Monitorização.

  2. Na barra de ferramentas da Google Cloud consola, selecione o seu Google Cloud projeto. Para configurações do App Hub, selecione o projeto anfitrião ou o projeto de gestão do App Hub.
  3. No menu Verificações de tempo de atividade, clique em Transferir. É transferido um ficheiro uptime-source-ips.txt que contém os endereços IP.

gcloud

Execute o comando gcloud monitoring uptime list-ips:

gcloud monitoring uptime list-ips

O método devolve as seguintes informações para cada endereço IP:

  • O endereço IP, não um intervalo, no formato IPv4 ou IPv6.
  • A região: USA, EUROPE, SOUTH_AMERICA ou ASIA_PACIFIC.
  • A localização na região.

API

Chame o método uptimeCheckIps.list da API Monitoring.

O método devolve as seguintes informações para cada endereço IP:

  • A região: USA, EUROPE, SOUTH_AMERICA ou ASIA_PACIFIC.
  • Uma localização mais específica na região.
  • O endereço IP, não um intervalo, no formato IPv4 ou IPv6.

C#

Para se autenticar no Monitoring, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento 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

Para se autenticar no Monitoring, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento 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

Para se autenticar no Monitoring, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento 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

Para se autenticar no Monitoring, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento 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

Para se autenticar no Monitoring, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento 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

Para se autenticar no Monitoring, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento 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

Para se autenticar no Monitoring, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento 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

As verificações de tempo de atividade podem vir de qualquer um dos endereços IP, mas apenas um endereço de cada localização geográfica é usado para cada intervalo de tempo. As localizações geográficas são apresentadas no painel de controlo das verificações de tempo de atividade, conforme mostrado na secção anterior. Também pode usar serviços gratuitos baseados na Web para identificar as localizações registadas dos endereços IP que transferiu.

Identifique o tráfego de verificação de tempo de atividade nos registos

Pode identificar pedidos dos servidores de verificação de tempo de atividade através das seguintes informações nos registos de pedidos do seu serviço:

  • ip: o campo ip contém um dos endereços usados pelos servidores de verificação de tempo de atividade. Para obter informações sobre como listar todos os endereços IP, consulte o artigo Liste endereços IP.
  • Agente do utilizador: o valor do cabeçalho User-Agent é sempre o seguinte:

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

    Especificar um cabeçalho personalizado User-Agent resulta num erro de validação do formulário e impede que a configuração da verificação seja guardada.

O que se segue?