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

Neste documento, mostramos como conseguir uma lista de endereços IP usados por servidores de verificação de tempo de atividade e como identificar o tráfego desses servidores nos registros.

Listar endereços IP

Quando você verifica um serviço protegido por firewall, pode configurar o firewall do serviço para aceitar tráfego do conjunto atual de endereços IP usado na verificação de tempo de atividade. Para conseguir esses endereços IP, use as seguintes instruções:

Console

  1. No painel de navegação do console do Google Cloud, selecione Monitoramento e  Verificações de tempo de atividade:

    Acesse Verificações de tempo de atividade

  2. No menu Verificações de tempo de atividade, clique em Fazer o download. Um arquivo uptime-source-ips.txt é salvo e contém os endereços IP.

gcloud

Execute o comando gcloud monitoring uptime list-ips:

gcloud monitoring uptime list-ips

O método retorna as informações a seguir sobre cada endereço IP:

  • o endereço IP, não um intervalo, nos formatos IPv4 ou IPv6.
  • a região: USA, EUROPE, SOUTH_AMERICA ou ASIA_PACIFIC;
  • O local na região.

API

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

O método retorna as informações a seguir sobre cada endereço IP:

  • a região: USA, EUROPE, SOUTH_AMERICA ou ASIA_PACIFIC;
  • uma localização mais específica dentro da região;
  • o endereço IP, não um intervalo, nos formatos IPv4 ou IPv6.

C#

Para autenticar no Monitoring, configure o Application Default Credentials. Para mais informações, consulte Configurar 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 autenticar no Monitoring, configure o Application Default Credentials. Para mais informações, consulte Configurar 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 autenticar no Monitoring, configure o Application Default Credentials. Para mais informações, consulte Configurar 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 autenticar no Monitoring, configure o Application Default Credentials. Para mais informações, consulte Configurar 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 autenticar no Monitoring, configure o Application Default Credentials. Para mais informações, consulte Configurar 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 autenticar no Monitoring, configure o Application Default Credentials. Para mais informações, consulte Configurar 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 autenticar no Monitoring, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

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

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 período. As localizações geográficas são listadas no painel de verificações de tempo de atividade, como mostrado na seção anterior. Também é possível usar serviços gratuitos baseados na Web para identificar as localizações registradas dos endereços IP recebidos por download.

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

Você pode identificar solicitações dos servidores de verificação de tempo de atividade de acordo com as informações contidas nos registros de solicitações do serviço:

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

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

    A especificação de um cabeçalho personalizado User-Agent resulta em um erro de validação de formulário e impede que a configuração de verificação seja salva.

A seguir