Mostrar direcciones IP de servidores de comprobaciones de disponibilidad del servicio

En este documento se explica cómo obtener una lista de las direcciones IP que usan los servidores de comprobación de disponibilidad y cómo identificar el tráfico de estos servidores en sus registros.

Mostrar direcciones IP

Cuando compruebas un servicio que está detrás de un cortafuegos, puedes configurar el cortafuegos del servicio para que acepte el tráfico del conjunto actual de direcciones IP que se usan para comprobar el tiempo de actividad. Para obtener estas direcciones IP, sigue estas instrucciones:

Consola

  1. En la Google Cloud consola, ve a la página  Comprobaciones de tiempo de actividad:

    Ve a Comprobaciones de disponibilidad del servicio.

    Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuya sección sea Monitorización.

  2. En la barra de herramientas de la Google Cloud consola, selecciona tu Google Cloud proyecto. En el caso de las configuraciones de App Hub, seleccione el proyecto host de App Hub o el proyecto de gestión de la carpeta habilitada para aplicaciones.
  3. En el menú Comprobaciones de tiempo de actividad, haga clic en Descargar. Se descarga un archivo uptime-source-ips.txt que contiene las direcciones IP.

gcloud

Ejecuta el comando gcloud monitoring uptime list-ips:

gcloud monitoring uptime list-ips

El método devuelve la siguiente información de cada dirección IP:

  • La dirección IP, no un intervalo, en formato IPv4 o IPv6.
  • Región: USA, EUROPE, SOUTH_AMERICA o ASIA_PACIFIC.
  • La ubicación dentro de la región.

API

Llama al método uptimeCheckIps.list de la API Monitoring.

El método devuelve la siguiente información de cada dirección IP:

  • Región: USA, EUROPE, SOUTH_AMERICA o ASIA_PACIFIC.
  • Una ubicación más específica dentro de la región.
  • La dirección IP, no un intervalo, en formato IPv4 o IPv6.

C#

Para autenticarte en Monitoring, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo 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 autenticarte en Monitoring, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo 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 autenticarte en Monitoring, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo 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 autenticarte en Monitoring, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo 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 autenticarte en Monitoring, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo 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 autenticarte en Monitoring, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo 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 autenticarte en Monitoring, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo 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

Las comprobaciones de tiempo de actividad pueden proceder de cualquiera de las direcciones IP, pero solo se usa una dirección de cada ubicación geográfica en cada intervalo de tiempo. Las ubicaciones geográficas se muestran en el panel de control de comprobaciones de tiempo de actividad, tal como se indica en la sección anterior. También puede usar servicios web gratuitos para identificar las ubicaciones registradas de las direcciones IP que ha descargado.

Identificar el tráfico de comprobaciones de disponibilidad en los registros

Puedes identificar las solicitudes de los servidores de comprobación del tiempo de actividad por la siguiente información de los registros de solicitudes de tu servicio:

  • ip el campo ip contiene una de las direcciones usadas por los servidores de comprobación del tiempo de actividad. Para obtener información sobre cómo enumerar todas las direcciones IP, consulta Listar direcciones IP.
  • User-Agent: el valor del encabezado User-Agent siempre es el siguiente:

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

    Si especificas un encabezado personalizado User-Agent, se producirá un error de validación del formulario y no se podrá guardar la configuración de la comprobación.

Siguientes pasos