Crear comprobaciones de disponibilidad privadas

En este documento se describe cómo configurar una comprobación de tiempo de actividad privada. Las comprobaciones de tiempo de actividad privadas permiten enviar solicitudes HTTP o TCP a una red de nube privada virtual (VPC) de un cliente, al tiempo que se aplican las restricciones de Gestión de Identidades y Accesos (IAM) y los perímetros de Controles de Servicio de VPC. Las comprobaciones de disponibilidad privadas pueden enviar solicitudes a través de la red privada a recursos como una máquina virtual o un balanceador de carga interno (ILB) de nivel 4.

Los servicios de Service Directory registran las direcciones IP internas de los recursos de la red privada con el acceso a la red privada habilitado. Para usar comprobaciones de tiempo de actividad privadas, debes configurar el acceso a la red privada mediante el producto Service Directory.

El Google Cloud proyecto que almacena la comprobación de tiempo de actividad privada y el Google Cloud proyecto que almacena el servicio de Service Directory pueden ser proyectos diferentes. Cloud Monitoring te permite monitorizar recursos de varios proyectos desde un proyecto mediante un permiso de métricas.Google Cloud El proyecto en el que se define la comprobación de disponibilidad es el proyecto de ámbito de un ámbito de métricas. El ámbito de métricas es una lista de todos los proyectos que monitoriza el proyecto de ámbito. El servicio Directorio de servicios puede definirse en el proyecto de ámbito o en un proyecto del ámbito de las métricas. Para obtener más información sobre los ámbitos de las métricas, consulta el artículo Información general sobre los ámbitos de las métricas.

La red privada y sus recursos, como las VMs o los balanceadores de carga, también pueden estar en un proyecto Google Cloud diferente. Este proyecto no tiene que estar en el ámbito de las métricas del proyecto de ámbito de la comprobación de disponibilidad. El servicio Directorio de servicios recoge las métricas de tiempo de actividad, por lo que debe estar en el ámbito de las métricas, pero los recursos que encapsula no.

En este documento se describe cómo configurar una red privada y sus recursos de Service Directory mediante la Google Cloud consola o la API. En los ejemplos de la API se da por supuesto que la red privada y el servicio de Service Directory se encuentran en el proyecto de ámbito de la comprobación de tiempo de actividad. Sin embargo, en Crear una comprobación de disponibilidad privada también se describe cómo usar la API para crear una comprobación de disponibilidad que utilice un servicio del directorio de servicios en el ámbito de las métricas.

Para obtener información sobre cómo configurar comprobaciones de disponibilidad del servicio que usen direcciones IP públicas, consulte Crear comprobaciones de disponibilidad del servicio públicas. Para obtener información sobre cómo gestionar y monitorizar tus verificaciones de tiempo de actividad, consulta la sección Pasos siguientes de este documento.

Esta función solo se admite en proyectos de Google Cloud . 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.

Antes de empezar

  1. Habilita las siguientes APIs:

    • API Cloud Monitoring: monitoring.googleapis.com
    • API de Service Directory: servicedirectory.googleapis.com
    • API Service Networking: servicenetworking.googleapis.com
    • API de Compute Engine: compute.googleapis.com

    Puedes habilitar las APIs mediante la CLI de gcloud o laGoogle Cloud consola. En las siguientes pestañas se describe cómo instalar la CLI de gcloud y habilitar la API Cloud Monitoring:

    Google Cloud consola

    1. En la Google Cloud consola, selecciona el Google Cloud proyecto en el que quieras habilitar la API y, a continuación, ve a la página APIs & Services (APIs y servicios):

      Ve a APIs y servicios.

    2. Haz clic en el botón Habilitar APIs y servicios.

    3. Busca "Monitorización".

    4. En los resultados de búsqueda, haz clic en "API de Stackdriver Monitoring".

    5. Si se muestra "API habilitada", significa que la API ya está habilitada. Si no es así, haz clic en Habilitar.

    CLI de gcloud

    1. Si aún no has instalado Google Cloud CLI en tu estación de trabajo, consulta el artículo Instalar gcloud CLI.

    2. Para comprobar si la API Monitoring está habilitada, ejecuta el siguiente comando en tu estación de trabajo. Sustituye PROJECT_ID por el ID del proyecto en el que quieras habilitar la API:

      gcloud services list --project=PROJECT_ID
      

      Si monitoring.googleapis.com aparece en el resultado, significa que la API está habilitada.

    3. Si la API no está habilitada, ejecuta el siguiente comando para habilitarla:

      gcloud services enable monitoring --project=PROJECT_ID
      

      Para obtener más información, consulta gcloud services.

    Puedes seguir los mismos pasos para habilitar las demás APIs:

    • Para usar la Google Cloud consola, busca el nombre visible, por ejemplo, "API Service Directory".
    • Para usar gcloud CLI, especifica el primer elemento del nombre de googleapis.com, por ejemplo, servicedirectory.
  2. Configura los canales de notificaciones que quieras usar para recibir notificaciones. Te recomendamos que crees varios tipos de canales de notificación. Para obtener más información, consulta cómo crear y gestionar canales de notificación.

  3. Configura una red privada y una VM o un ILB para que tengan acceso a esa red privada. Para obtener más información, consulta Acceso a servicios privados.

    Las comprobaciones privadas que se dirigen a ILBs se limitan a las regiones con comprobadores de tiempo de actividad. La región de comprobación del tiempo de actividad USA incluye las regiones USA_OREGON, USA_IOWA y USA_VIRGINIA. Cada una de las USA_* regiones tiene un verificador, y USA incluye los tres. Las otras regiones de comprobación del tiempo de actividad, EUROPE, SOUTH_AMERICA y ASIA_PACIFIC, tienen cada una un comprobador. Para eliminar esta limitación, debes configurar el acceso global a tu balanceador de carga. Para obtener más información sobre cómo configurar el acceso global, consulta la pestaña ILB de la sección Configurar recursos de Service Directory de este documento.

    Si tienes previsto comprobar un balanceador de carga interno que no permite el acceso global, selecciona una de las siguientes regiones para tu balanceador de carga interno:

    • us-east4
    • us-central1
    • us-west1
    • europe-west1
    • southamerica-east1
    • asia-southeast1
  4. Determina qué interfaz vas a usar:

    • Google Cloud Consola: te permite crear una comprobación de tiempo de actividad cuando una VM está atendiendo solicitudes. Esta interfaz te guía para configurar recursos de Service Directory, autorizar la cuenta de servicio y configurar las reglas de firewall de red.

    • Interfaces de línea de comandos: puedes usar la CLI de Google Cloud y la API Cloud Monitoring para crear comprobaciones de tiempo de actividad privadas cuando los balanceadores de carga internos y las VMs estén atendiendo solicitudes.

  5. Si tienes previsto usar la línea de comandos para configurar tus comprobaciones de disponibilidad privadas, completa los pasos previos.

Crear una comprobación de disponibilidad privada

En esta sección se explica cómo crear y configurar comprobaciones de tiempo de actividad privadas de servicios de Service Directory:

  • Para usar la Google Cloud consola, selecciona la pestaña Google Cloud consola.

  • Para usar la API Cloud Monitoring y configurar el servicio Service Directory para que esté en el mismo Google Cloud proyecto que la comprobación de disponibilidad, selecciona la pestaña API: proyecto de ámbito.

  • Para usar la API Cloud Monitoring y configurar el servicio Service Directory para que esté en un proyecto monitorizado por el ámbito de las métricas del proyecto de la comprobación de disponibilidad, selecciona la pestaña API: proyecto monitorizado.

Google Cloud consola

Para crear una comprobación de disponibilidad mediante la consola Google Cloud , haz lo siguiente:

  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. Haz clic en Crear comprobación de disponibilidad.

    Cuadro de diálogo para crear una comprobación de disponibilidad del servicio.

  4. Especifica una comprobación de disponibilidad privada:

    1. Selecciona el protocolo, que puede ser HTTP, HTTPS o TCP.

    2. Elige el tipo de recurso IP interna.

  5. Si no tienes configurado ningún servicio de Service Directory en tu proyecto o quieres crear uno, haz clic en Ver y completa el panel Requisitos previos de comprobación de disponibilidad privada:

    1. Si se te solicita, habilita la API Compute Engine o la API Service Directory. Habilitar las APIs puede tardar un minuto.

    2. Despliega Cuenta de servicio, si se muestra, y haz clic en Crear cuenta de servicio.

      Si no existe una cuenta de servicio de Monitoring, se crea una. A continuación, Monitoring asigna dos roles de Service Directory a la cuenta de servicio.

    3. Despliega el menú Directorio de servicios y sigue estos pasos:

      1. Despliega Región y, a continuación, selecciona la región de la VM que está atendiendo las solicitudes.
      2. Despliega Espacio de nombres y, a continuación, selecciona un espacio de nombres de Directorio de servicios o haz clic en Crear espacio de nombres para crear uno.
      3. Haz clic en Nombre del servicio y escribe el nombre del servicio. Los servicios son los destinos de las comprobaciones de disponibilidad privadas.
      4. Haz clic en Nombre del endpoint y escribe el nombre que quieras darle. Un endpoint es un par de valores de dirección IP y puerto que un servicio puede usar para gestionar solicitudes. Si tu servicio contiene varios endpoints, se elige uno de forma aleatoria.
      5. Despliega Red y, a continuación, selecciona tu red privada.
      6. Despliega Instancia y, a continuación, selecciona la VM de la red privada que está atendiendo las solicitudes. Después de seleccionar la instancia, se muestra su dirección IP interna.
      7. Haz clic en Listo.
    4. Expande Reglas de cortafuegos:

      1. Expande Red y selecciona la red a la que se adjunta la regla de red.

      2. Haz clic en Crear reglas de cortafuegos.

        La regla de cortafuegos habilita el tráfico TCP entrante desde las rutas 35.199.192.0/19. Una ruta de 35.199.192.0/19 admite la conectividad a destinos de reenvío que usan el enrutamiento privado. Para obtener más información, consulta Rutas de VPC.

  6. En el panel Comprobación de disponibilidad privada, para especificar el servicio del Directorio de servicios que se va a usar, haga una de las siguientes acciones:

    • Selecciona Usar nombre de servicio completo y, a continuación, introduce el nombre completo del servicio:

      projects/SERVICE_DIRECTORY_PROJECT_ID/locations/REGION/namespaces/PRIVATE_NAMESPACE/services/PRIVATE_SERVICE
      
    • Selecciona Región, Espacio de nombres y Servicio mediante los menús. Si has creado un servicio, estos campos se seleccionarán automáticamente.

  7. En el panel Comprobación privada del tiempo de actividad, completa la descripción del objetivo de la comprobación del tiempo de actividad:

    1. Opcional: Introduce un componente de ruta para la solicitud.

      Las comprobaciones de tiempo de actividad privadas que usan el protocolo HTTP o HTTPS envían una solicitud a http://target/path. En esta expresión, target es la dirección IP interna configurada en el endpoint de Directorio de servicios.

      Si deja el campo Ruta en blanco o le asigna el valor /, la solicitud se enviará a http://target/.

    2. Opcional: Para definir la frecuencia con la que se ejecuta la comprobación del tiempo de actividad, usa el campo Frecuencia de comprobación.

    3. Opcional: Para seleccionar regiones de comprobación o configurar la autenticación, los encabezados de las comprobaciones HTTP y HTTPS, y otros valores, haz clic en Más opciones de destino:

      • Regiones: selecciona las regiones en las que se van a recibir las solicitudes de comprobación de disponibilidad. Una comprobación de tiempo de actividad debe tener al menos tres comprobadores. Hay un verificador en todas las regiones, excepto en Estados Unidos, donde hay tres. El ajuste predeterminado, Global, incluye todas las regiones.
      • Método de solicitud: selecciona GET o POST.
      • Cuerpo: en las comprobaciones HTTP POST, introduce el cuerpo codificado como URL. Debes hacer la codificación tú mismo. Para el resto de las comprobaciones, deja este campo en blanco.
      • Cabecera Host: no defina este campo al configurar comprobaciones de disponibilidad privadas.
      • Puerto: cualquier valor que definas aquí anula el puerto de la configuración del endpoint de Service Directory. No asignes ningún valor aquí si quieres que se use la configuración del endpoint.
      • Encabezados personalizados: añade encabezados personalizados y, opcionalmente, encríptalos. El cifrado oculta los valores del encabezado en el formulario. Encripta los encabezados relacionados con la autenticación que no quieras que vean otros usuarios.
      • Autenticación: proporciona un único nombre de usuario y una contraseña. Estos valores se envían como un encabezado de autorización. Si seleccionas valores aquí, no configures otro encabezado de autorización y, si configuras un encabezado de autorización, no añadas valores aquí. Las contraseñas siempre se ocultan en el formulario.
  8. Haga clic en Continuar y configure los requisitos de la respuesta. Todos los ajustes de esta sección tienen valores predeterminados:

    • Para definir un periodo de tiempo de espera para la comprobación de disponibilidad, usa el campo Tiempo de espera de la respuesta. Una comprobación del tiempo de actividad falla cuando no se recibe ninguna respuesta de más de una ubicación durante este periodo.

    • Para configurar la comprobación del tiempo de actividad para que realice la coincidencia con contenido, asegúrate de que la etiqueta del interruptor sea Coincidencia con contenido habilitada:

      • Seleccione el Tipo de coincidencia de contenido de respuesta en el menú de opciones. Este campo determina cómo se compara el contenido de la respuesta con los datos devueltos. Por ejemplo, supongamos que el contenido de la respuesta es abcd y que el tipo de coincidencia de contenido es Contiene. La comprobación del tiempo de actividad solo se realiza correctamente cuando los datos de la respuesta contienen abcd. Para obtener más información, consulta Validar datos de respuesta.
      • Introduce el contenido de la respuesta. El contenido de la respuesta debe ser una cadena que no supere los 1024 bytes. En la API, este campo es el objeto ContentMatcher.
    • Para evitar que se creen entradas de registro debido a las comprobaciones de disponibilidad, desmarca Registrar fallos de comprobación.

    • En el caso de las comprobaciones de disponibilidad HTTP, configura los códigos de respuesta aceptables. De forma predeterminada, las comprobaciones de tiempo de actividad HTTP marcan cualquier respuesta 2xx como correcta.

  9. Haz clic en Continuar y configura las políticas de alertas y las notificaciones.

    Para recibir una notificación cuando falle una comprobación de disponibilidad, crea una política de alertas y configura canales de notificación para esa política:

    1. Opcional: Cambia el nombre de la política de alertas.
    2. Opcional: En el campo Duración, selecciona cuánto tiempo deben fallar las comprobaciones de tiempo de actividad antes de que se envíen las notificaciones. De forma predeterminada, las notificaciones se envían cuando al menos dos regiones informan de errores en la comprobación de disponibilidad durante al menos un minuto.
    3. En el cuadro Canales de notificación, expande Menú, selecciona los canales que quieras añadir y, a continuación, haz clic en Aceptar.

      En el menú, los canales de notificación se agrupan alfabéticamente por tipo de canal.

    Si no quieres crear una política de alertas, asegúrate de que el texto del botón de activación sea No crear una alerta.

  10. Haz clic en Continuar y completa la comprobación del tiempo de actividad:

    1. Introduce un título descriptivo para la comprobación de disponibilidad del servicio.

    2. Opcional: Para añadir etiquetas definidas por el usuario a tu comprobación de tiempo de actividad, haz lo siguiente:

      1. Haz clic en Mostrar etiquetas de usuario.
      2. En el campo Clave, introduce un nombre para la etiqueta. Los nombres de las etiquetas deben empezar por una letra en minúscula y pueden contener letras en minúscula, números, guiones bajos y guiones. Por ejemplo, escribe severity.
      3. En el campo Valor, introduce un valor para la etiqueta. Los valores de etiqueta pueden contener letras en minúscula, números, guiones bajos y guiones. Por ejemplo, escribe critical.
      4. Por cada etiqueta adicional, haz clic en Añadir etiqueta de usuario y, a continuación, introduce la clave y el valor de la etiqueta.
    3. Para verificar la configuración de la comprobación de disponibilidad del servicio, haz clic en Probar. Si el resultado no es el esperado, consulta la sección Solución de problemas, corrige la configuración y repite el paso de verificación.

    4. Haz clic en Crear.

API: proyecto de alcance

Para crear la configuración de una comprobación de tiempo de actividad privada, crea un objeto UptimeCheckConfig y pásalo al método uptimeCheckConfigs.create de la API Cloud Monitoring.

El objeto UptimeCheckConfig de una comprobación de disponibilidad del servicio privada se diferencia del objeto de una comprobación de disponibilidad del servicio pública en los siguientes aspectos:

  • El recurso monitorizado especificado en la configuración de la comprobación de disponibilidad debe ser del tipo servicedirectory_service. Este tipo de recurso tiene las siguientes etiquetas:

    • project_id: el ID de proyecto asociado al servicio de Service Directory.
    • location: la región de la nube asociada al servicio.
    • namespace_name: espacio de nombres del Directorio de servicios.
    • service_name: nombre del servicio del directorio de servicios.
  • No es necesario que especifiques un valor de port en la configuración de la comprobación de tiempo de actividad. El valor del puerto del endpoint de Directorio de servicios anula cualquier valor definido en la configuración de comprobación del tiempo de actividad. La comprobación falla si no se especifica ningún puerto en la configuración de Directorio de servicios.

  • La configuración de la comprobación de disponibilidad debe especificar el campo checker_type con el valor VPC_CHECKERS. Este valor es obligatorio para las comprobaciones de tiempo de actividad privadas. De forma predeterminada, las comprobaciones de disponibilidad son públicas, por lo que no es necesario especificar este campo.

El siguiente código JSON muestra un objeto UptimeCheckConfig de una comprobación de tiempo de actividad privada que usa los recursos de Service Directory configurados para una instancia de VM en una red privada:

{
  "displayName": "private-check-demo",
  "monitoredResource": {
    "type": "servicedirectory_service",
    "labels": {
      "project_id": "SERVICE_DIRECTORY_PROJECT_ID",
      "service_name": "PRIVATE_SERVICE",
      "namespace_name": "PRIVATE_NAMESPACE",
      "location": "REGION"
    }
  },
  "httpCheck": {
    "requestMethod": "GET"
  },
  "period": "60s",
  "timeout": "10s",
  "checker_type": "VPC_CHECKERS"
}'

Para crear una comprobación de disponibilidad privada cuando el servicio de Directorio de servicios se encuentre en el mismo proyecto que la comprobación de disponibilidad, haz lo siguiente: Google Cloud

  1. Define el Google Cloud proyecto predeterminado de gcloud CLI:

    gcloud config set project PROJECT_ID
    
  2. Crea una variable de entorno para almacenar el ID de tu proyecto:

    export PROJECT_ID=$(gcloud config get-value core/project)
    
  3. Crea una variable de entorno que contenga un token de acceso:

    export TOKEN=`gcloud auth print-access-token`
    
  4. Usa la herramienta curl para invocar el método uptimeCheckConfigs.create y enviarle un objeto de configuración:

    curl https://monitoring.googleapis.com/v3/projects/${PROJECT_ID}/uptimeCheckConfigs \
    -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
    --request POST --data '{
    "displayName": "private-check-demo",
    "monitoredResource": {
      "type": "servicedirectory_service",
      "labels": {
        "project_id": "'"$PROJECT_ID"'",
        "service_name": "PRIVATE_SERVICE",
        "namespace_name": "PRIVATE_NAMESPACE",
        "location": "REGION"
      }
    },
    "httpCheck": {
      "requestMethod": "GET"
    },
    "period": "60s",
    "timeout": "10s",
    "checker_type": "VPC_CHECKERS"
    }'
    

Si falla la creación de la comprobación de disponibilidad, verifica que la cuenta de servicio tenga los roles necesarios. Para obtener más información, consulta el artículo Falla la creación de la comprobación de disponibilidad.

API: proyecto monitorizado

Para crear la configuración de una comprobación de tiempo de actividad privada, crea un objeto UptimeCheckConfig y pásalo al método uptimeCheckConfigs.create de la API Cloud Monitoring.

El objeto UptimeCheckConfig de una comprobación de disponibilidad del servicio privada se diferencia del objeto de una comprobación de disponibilidad del servicio pública en los siguientes aspectos:

  • El recurso monitorizado especificado en la configuración de la comprobación de disponibilidad debe ser del tipo servicedirectory_service. Este tipo de recurso tiene las siguientes etiquetas:

    • project_id: el ID de proyecto asociado al servicio de Service Directory.
    • location: la región de la nube asociada al servicio.
    • namespace_name: espacio de nombres del Directorio de servicios.
    • service_name: nombre del servicio del directorio de servicios.
  • No es necesario que especifiques un valor de port en la configuración de la comprobación de tiempo de actividad. El valor del puerto del endpoint de Directorio de servicios anula cualquier valor definido en la configuración de comprobación del tiempo de actividad. La comprobación falla si no se especifica ningún puerto en la configuración de Directorio de servicios.

  • La configuración de la comprobación de disponibilidad debe especificar el campo checker_type con el valor VPC_CHECKERS. Este valor es obligatorio para las comprobaciones de tiempo de actividad privadas. De forma predeterminada, las comprobaciones de disponibilidad son públicas, por lo que no es necesario especificar este campo.

El siguiente código JSON muestra un objeto UptimeCheckConfig de una comprobación de tiempo de actividad privada que usa los recursos de Service Directory configurados para una instancia de VM en una red privada:

{
  "displayName": "private-check-demo",
  "monitoredResource": {
    "type": "servicedirectory_service",
    "labels": {
      "project_id": "SERVICE_DIRECTORY_PROJECT_ID",
      "service_name": "PRIVATE_SERVICE",
      "namespace_name": "PRIVATE_NAMESPACE",
      "location": "REGION"
    }
  },
  "httpCheck": {
    "requestMethod": "GET"
  },
  "period": "60s",
  "timeout": "10s",
  "checker_type": "VPC_CHECKERS"
}'

Para crear una comprobación de disponibilidad privada cuando el servicio Directory de servicios se encuentre en un Google Cloud proyecto Google Cloud que esté monitorizado por el proyectoGoogle Cloud del ámbito de las métricas de la comprobación de disponibilidad, haz lo siguiente:

  1. Configura gcloud CLI para que use de forma predeterminada el proyecto Google Cloud en el que se va a crear la comprobación de disponibilidad del servicio:

    gcloud config set project PROJECT_ID
    
  2. Crea una variable de entorno para almacenar el ID de tu proyecto:

    export PROJECT_ID=$(gcloud config get-value core/project)
    
  3. Crea una variable de entorno para almacenar el ID del proyectoGoogle Cloud en el que se define el servicio de Directorio de servicios:

    export MONITORED_PROJECT_ID=MONITORED_PROJECT_ID
    

    Este proyecto debe estar en el ámbito de las métricas del proyecto de la comprobación de tiempo de actividad.

  4. Crea una variable de entorno que contenga un token de acceso:

    export TOKEN=`gcloud auth print-access-token`
    
  5. Usa la herramienta curl para invocar el método uptimeCheckConfigs.create y enviarle un objeto de configuración:

    curl https://monitoring.googleapis.com/v3/projects/${PROJECT_ID}/uptimeCheckConfigs \
    -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
    --request POST --data '{
    "displayName": "private-check-demo",
    "monitoredResource": {
      "type": "servicedirectory_service",
      "labels": {
        "project_id": "'"$MONITORED_PROJECT_ID"'",
        "service_name": "PRIVATE_SERVICE",
        "namespace_name": "PRIVATE_NAMESPACE",
        "location": "REGION"
      }
    },
    "httpCheck": {
      "requestMethod": "GET"
    },
    "period": "60s",
    "timeout": "10s",
    "checker_type": "VPC_CHECKERS"
    }'
    

Si falla la creación de la comprobación de disponibilidad, verifica que la cuenta de servicio tenga los roles necesarios. Para obtener más información, consulta el artículo Falla la creación de la comprobación de disponibilidad.

Puede haber un retraso de hasta 5 minutos antes de que los resultados de la comprobación de disponibilidad empiecen a enviarse a Monitoring. Durante ese tiempo, el panel de control de comprobación de disponibilidad del servicio muestra el estado "No hay datos disponibles".

Pasos previos

Si tienes previsto usar la interfaz de la consola, ve a Crear una comprobación de tiempo de actividad privada. Google Cloud La consola deGoogle Cloud te guiará por todos los pasos previos necesarios.

Si tienes previsto usar la línea de comandos para configurar tus comprobaciones de tiempo de actividad privadas, debes completar los siguientes pasos antes de poder crear la comprobación:

  1. Configurar recursos de Service Directory
  2. Autorizar la cuenta de servicio
  3. Configurar reglas de cortafuegos

Configurar recursos de Service Directory

Las comprobaciones de tiempo de actividad privadas determinan la disponibilidad de un recurso mediante una dirección IP interna registrada por un servicio de Directorio de servicios. Puedes configurar un Directorio de servicios para los siguientes recursos:

  • Máquinas virtuales en una red privada
  • Balanceadores de carga internos (ILBs) L4

Para usar comprobaciones de tiempo de actividad privadas, debes configurar los siguientes recursos de Service Directory:

  • Endpoint: un endpoint es un par de valores de dirección IP y puerto que un servicio puede usar para gestionar solicitudes. Si tu servicio contiene varios endpoints, se elige uno de forma aleatoria.
  • Servicio: un servicio es una colección de endpoints que proporcionan un conjunto de comportamientos. Los servicios son los destinos de las comprobaciones de disponibilidad privadas.
  • Espacio de nombres: un espacio de nombres contiene un conjunto de nombres de servicio y sus puntos finales asociados. Los espacios de nombres te permiten agrupar servicios para gestionarlos de forma coherente.

Puedes configurar estos recursos con la CLI de gcloud o con laGoogle Cloud consola. Cuando usas la consola, los pasos de configuración se incluyen en el cuadro de diálogo Crear comprobación de disponibilidad.

Google Cloud consola

Cuando usas la Google Cloud consola, después de seleccionar IP interna como tipo de recurso para una comprobación de disponibilidad, se te pide que crees un Directorio de servicios y un servicio.

CLI de gcloud: VM

Para obtener información sobre los comandos que se usan en este documento para servicios, espacios de nombres y endpoints, consulta el grupo de comandos gcloud service-directory.

Para crear recursos de Service Directory para una VM, sigue estos pasos:

  1. Configura la CLI de Google Cloud para que use de forma predeterminada el proyecto en el que se van a crear los recursos de Service Directory: Google Cloud

    gcloud config set project PROJECT_ID
    
  2. Crea variables de entorno para almacenar el ID y el número de tu proyecto:

    export PROJECT_ID=$(gcloud config get-value core/project)
    
    export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='get(projectNumber)')
    
  3. Crea un espacio de nombres de Directorio de servicios:

    gcloud service-directory namespaces create PRIVATE_NAMESPACE --location=REGION
    
  4. Crea un servicio de Directorio de servicios en el espacio de nombres:

    gcloud service-directory services create PRIVATE_SERVICE \
    --namespace PRIVATE_NAMESPACE --location=REGION
    
  5. Crea una variable de entorno para almacenar la dirección IP de la máquina virtual en la red privada:

    export INTERNAL_IP=$(gcloud compute instances describe --zone=ZONE \
    PRIVATE_SERVICE_INSTANCE --format='get(networkInterfaces[0].networkIP)')
    
  6. Crea un endpoint de Service Directory que contenga la dirección IP interna y un puerto:

    gcloud service-directory endpoints create PRIVATE_ENDPOINT \
    --location=REGION --namespace=PRIVATE_NAMESPACE \
    --service=PRIVATE_SERVICE \
    --network=projects/$PROJECT_NUMBER/locations/global/networks/PRIVATE_CHECK_NETWORK \
    --address=$INTERNAL_IP --port=80
    

CLI de gcloud: ILB de nivel 4

Para obtener información sobre los comandos que se usan en este documento para servicios, espacios de nombres y endpoints, consulta el grupo de comandos gcloud service-directory.

Puedes usar comprobaciones de tiempo de actividad privadas para monitorizar la disponibilidad de un balanceador de carga interno (ILB) de nivel 4 creando recursos de Directorio de servicios para el ILB de nivel 4.

Cuando creas balanceadores de carga internos de nivel 4, puedes usar la integración automática que proporciona Service Directory. Para obtener más información, consulta el artículo Configurar balanceadores de carga internos en Service Directory.

Si tienes balanceadores de carga de nivel 4 que se crearon sin usar la integración automática que proporciona Service Directory, puedes configurar manualmente los recursos de Service Directory de la siguiente manera:

  1. Configura la CLI de Google Cloud para que use de forma predeterminada el proyecto en el que se van a crear los recursos de Service Directory: Google Cloud

    gcloud config set project PROJECT_ID
    
  2. Crea variables de entorno para almacenar el ID y el número de tu proyecto:

    export PROJECT_ID=$(gcloud config get-value core/project)
    
    export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='get(projectNumber)')
    
  3. Para permitir que todos los verificadores de tiempo de actividad transfieran datos a tu ILB de nivel 4, habilita el acceso global al ILB:

    gcloud compute forwarding-rules update ILB_FORWARDING_RULE_NAME \
    --region=ILB_REGION --allow-global-access
    

    Si tu balanceador de carga interno de capa 4 no permite el acceso global, las métricas de tiempo de actividad solo estarán disponibles si ILB_REGION es uno de los siguientes:

    • us-east4
    • us-central1
    • us-west1
    • europe-west1
    • southamerica-east1
    • asia-southeast1
  4. Crea un espacio de nombres de Directorio de servicios:

    gcloud service-directory namespaces create PRIVATE_NAMESPACE_FOR_ILB\
    --location=REGION
    
  5. Crea un servicio de Directorio de servicios en el espacio de nombres:

    gcloud service-directory services create PRIVATE_SERVICE_FOR_ILB \
    --namespace PRIVATE_NAMESPACE_FOR_ILB --location=REGION
    
  6. Crea una variable de entorno para almacenar la dirección IP del balanceador de carga en la red privada:

    export INTERNAL_IP=$( gcloud compute forwarding-rules describe ILB_FORWARDING_RULE_NAME\
    --region=ILB_REGION --format='get(IPAddress)')
    
  7. Crea un endpoint de Service Directory que contenga la dirección IP interna y un puerto:

    gcloud service-directory endpoints create PRIVATE_ENDPOINT_FOR_ILB \
    --location=ILB_REGION --namespace=PRIVATE_NAMESPACE_FOR_ILB \
    --service=PRIVATE_SERVICE_FOR_ILB \
    --network=projects/$PROJECT_NUMBER/locations/global/networks/PRIVATE_CHECK_NETWORK \
    --address=$INTERNAL_IP --port=80
    

Autorizar la cuenta de servicio

Las comprobaciones de tiempo de actividad usan una cuenta de servicio propiedad de Monitoring para gestionar las interacciones con el servicio Directorio de servicios. El nombre de la cuenta de servicio tiene el siguiente formato:

service-PROJECT_NUMBER@gcp-sa-monitoring-notification.iam.gserviceaccount.com

Si esta cuenta de servicio no existe, Monitoring la crea cuando creas la comprobación de tiempo de actividad privada. No puedes crear esta cuenta de servicio.

Cuando creas una comprobación de disponibilidad privada, Monitoring intenta asignar dos roles de Service Directory a la cuenta de servicio. Sin embargo, cuando usas la API, es posible que la configuración de tu proyecto impida que Monitoring asigne roles a la cuenta de servicio. Google Cloud En esta situación, no se puede crear la comprobación de disponibilidad.

En esta sección se describe cómo puedes conceder los roles necesarios a una cuenta de servicio que ya tengas:

Google Cloud consola

Cuando usas la Google Cloud consola, después de seleccionar IP interna como tipo de recurso para una comprobación de disponibilidad, se te pide que autorices la cuenta de servicio.

API: proyecto de alcance

Para asignar los roles de Service Directory a una cuenta de servicio, sigue estos pasos:

  1. Configura gcloud CLI para que use de forma predeterminada el proyecto Google Cloud en el que se va a crear la comprobación de disponibilidad del servicio:

    gcloud config set project PROJECT_ID
    
  2. Crea variables de entorno para almacenar el ID y el número del proyecto:

    export PROJECT_ID=$(gcloud config get-value core/project)
    
    export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='get(projectNumber)')
    
  3. Ejecuta estos comandos:

    gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member='serviceAccount:service-'$PROJECT_NUMBER'@gcp-sa-monitoring-notification.iam.gserviceaccount.com' \
    --role='roles/servicedirectory.viewer'
    
    gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member='serviceAccount:service-'$PROJECT_NUMBER'@gcp-sa-monitoring-notification.iam.gserviceaccount.com' \
    --role='roles/servicedirectory.pscAuthorizedService'
    

    Los comandos anteriores otorgan los siguientes roles a la cuenta de servicio:

    • roles/servicedirectory.viewer
    • roles/servicedirectory.pscAuthorizedService

API: proyecto monitorizado

Para asignar los roles de Service Directory a una cuenta de servicio, sigue estos pasos:

  1. Configura gcloud CLI para que use de forma predeterminada el proyecto Google Cloud en el que se va a crear la comprobación de disponibilidad del servicio:

    gcloud config set project PROJECT_ID
    
  2. Crea variables de entorno para almacenar el ID y el número del proyecto:

    export PROJECT_ID=$(gcloud config get-value core/project)
    
    export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='get(projectNumber)')
    
  3. Crea una variable de entorno que contenga el ID del proyecto en el que se define el servicio de Directorio de servicios:

    export MONITORED_PROJECT_ID=MONITORED_PROJECT_ID
    

    Este proyecto debe estar en el ámbito de las métricas del proyecto de la comprobación de tiempo de actividad.

  4. Crea una variable de entorno que contenga el ID del proyecto en el que se define la red:

    export NETWORK_PROJECT_ID=NETWORK_PROJECT_ID
    

    No es necesario que este proyecto esté en el ámbito de las métricas del proyecto de la comprobación de disponibilidad.

  5. Ejecuta estos comandos:

    gcloud projects add-iam-policy-binding $MONITORED_PROJECT_ID \
    --member='serviceAccount:service-'$PROJECT_NUMBER'@gcp-sa-monitoring-notification.iam.gserviceaccount.com' \
    --role='roles/servicedirectory.viewer'
    
    gcloud projects add-iam-policy-binding $NETWORK_PROJECT_ID \
    --member='serviceAccount:service-'$PROJECT_NUMBER'@gcp-sa-monitoring-notification.iam.gserviceaccount.com' \
    --role='roles/servicedirectory.pscAuthorizedService'
    

    Los comandos anteriores otorgan los siguientes roles a la cuenta de servicio:

    • roles/servicedirectory.viewer del proyecto monitorizado en el que se ha configurado el servicio Directorio de servicios. $SERVICE_MONITORED_PROJECT_ID
    • roles/servicedirectory.pscAuthorizedService del proyecto en el que se ha configurado la red privada, $NETWORK_PROJECT_ID.

Configurar reglas de cortafuegos

Debes crear una regla de cortafuegos que habilite el tráfico TCP entrante desde las rutas 35.199.192.0/19. Una ruta de 35.199.192.0/19 admite la conectividad con destinos de reenvío que usan el enrutamiento privado. Para obtener más información, consulta Rutas de VPC.

Google Cloud consola

Cuando usas la Google Cloud consola, después de seleccionar IP interna como tipo de recurso de una comprobación de tiempo de actividad, se te pide que configures las reglas de firewall.

CLI de gcloud

Para crear una regla de cortafuegos que permita el tráfico TCP entrante a través del cortafuegos para acceder a la red privada, ejecuta el siguiente comando:

  1. Configura gcloud CLI para que use de forma predeterminada el proyecto Google Cloud en el que se va a crear la comprobación de disponibilidad del servicio:

    gcloud config set project PROJECT_ID
    
  2. Crea variables de entorno para almacenar el ID y el número del proyecto:

    export PROJECT_ID=$(gcloud config get-value core/project)
    
  3. Crea la regla de red:

    gcloud compute firewall-rules create PRIVATE_CHECK_NETWORK_HOPE_RULE \
    --network="PRIVATE_CHECK_NETWORK"  \
    --action=allow   --direction=ingress   --source-ranges="35.199.192.0/19" \
    --rules=tcp   --project="$PROJECT_ID"
    

    En el comando anterior, PRIVATE_CHECK_NETWORK es la red a la que se adjunta esta regla, mientras que PRIVATE_CHECK_NETWORK_HOPE_RULE es el nombre de la regla de cortafuegos.

Para obtener más información sobre este paso, consulta Configurar el proyecto de red.

Limitaciones

Cuando se usan comprobaciones de tiempo de actividad privadas, la validación de los certificados SSL está inhabilitada, independientemente de la configuración.

Las comprobaciones de tiempo de actividad privadas no admiten endpoints que tengan redirecciones.

Solución de problemas

En esta sección se describen algunos errores que pueden producirse al usar comprobaciones de tiempo de actividad privadas y se proporciona información para resolverlos.

Fallo al crear una comprobación de disponibilidad del servicio

Es posible que la configuración de tu proyecto de Google Cloud impida que se modifiquen los roles asignados a la cuenta de servicio que usan las comprobaciones de tiempo de actividad para gestionar las interacciones con el servicio Service Directory. En esta situación, no se puede crear la comprobación de disponibilidad.

En esta sección se describe cómo puedes conceder los roles que requiere la cuenta de servicio:

Google Cloud consola

Cuando usas la Google Cloud consola para crear la comprobación de tiempo de actividad privada, la Google Cloud consola ejecuta los comandos para asignar los roles de Directorio de servicios a la cuenta de servicio.

Para obtener información sobre cómo asignar roles a una cuenta de servicio, consulta el artículo Autorizar la cuenta de servicio.

API: proyecto de alcance

La primera vez que crees una comprobación de tiempo de actividad privada para un servicio de Service Directory y recursos privados en un solo Google Cloud proyecto Google Cloud , la solicitud puede completarse correctamente o no. El resultado depende de si has inhabilitado la concesión automática de roles a las cuentas de servicio en tu proyecto:

  • La primera creación de una comprobación de tiempo de actividad se realiza correctamente si tu proyecto permite la concesión automática de roles a las cuentas de servicio. Se crea una cuenta de servicio y se le asignan los roles necesarios.

  • La primera creación de una comprobación de tiempo de actividad falla si tu proyecto no permite las concesiones automáticas de roles a las cuentas de servicio. Se crea una cuenta de servicio, pero no se le asigna ningún rol.

Si no se puede crear la comprobación de disponibilidad, haz lo siguiente:

  1. Autoriza la cuenta de servicio.
  2. Espera unos minutos a que se propaguen los permisos.
  3. Prueba a crear de nuevo la comprobación de tiempo de actividad privada.

API: proyecto monitorizado

La primera vez que creas una comprobación de tiempo de actividad privada que tiene como destino un servicio de Directory de servicios en un proyecto monitorizado o recursos privados en un proyecto de Google Cloud diferente, la solicitud falla y se crea una cuenta de servicio de Monitoring.

La forma de autorizar la cuenta de servicio depende del número deGoogle Cloud proyectos que utilices y de sus relaciones. Puede haber hasta cuatro proyectos implicados:

  • El proyecto en el que has definido la comprobación de disponibilidad privada.
  • El proyecto monitorizado en el que has configurado el servicio Directorio de servicios.
  • El proyecto en el que has configurado la red de VPC.
  • El proyecto en el que se configuran los recursos de red, como las máquinas virtuales o los balanceadores de carga. Este proyecto no tiene ningún rol en la autorización de cuentas de servicio que se describe aquí.

Si no se puede crear la primera comprobación de disponibilidad, haz lo siguiente:

  1. Autoriza la cuenta de servicio.
  2. Espera unos minutos a que se propaguen los permisos.
  3. Prueba a crear de nuevo la comprobación de tiempo de actividad privada.

Acceso denegado

Las comprobaciones de tiempo de actividad fallan y devuelven resultados VPC_ACCESS_DENIED. Este resultado significa que algún aspecto de la configuración de tu red o de la autorización de la cuenta de servicio no es correcto.

Comprueba la autorización de tu cuenta de servicio para usar un proyecto de cobertura o un proyecto monitorizado, tal como se describe en Falla la creación de una comprobación de tiempo de actividad.

Para obtener más información sobre cómo acceder a redes privadas, consulta el artículo Configurar el proyecto de red.

Resultados anómalos de comprobaciones de disponibilidad privadas

Tienes un servicio de Service Directory con varias VMs y la configuración del servicio contiene varios endpoints. Cuando apagas una de las VMs, la comprobación del tiempo de actividad sigue indicando que se ha completado correctamente.

Si la configuración de tu servicio contiene varios endpoints, se elige uno al azar. Si la VM asociada al endpoint elegido está en ejecución, la comprobación del tiempo de actividad se realizará correctamente aunque una de las VMs esté inactiva.

Encabezados predeterminados

Tus comprobaciones de disponibilidad devuelven errores o resultados inesperados. Esto puede ocurrir si ha anulado los valores predeterminados de los encabezados.

Cuando se envía una solicitud de comprobación de tiempo de actividad privada a un endpoint de destino, la solicitud incluye los siguientes encabezados y valores:

Header Valor
HTTP_USER_AGENT GoogleStackdriverMonitoring-UptimeChecks(https://cloud.google.com/monitoring)
HTTP_CONNECTION keep-alive
HTTP_HOST IP del endpoint de Service Directory
HTTP_ACCEPT_ENCODING gzip, deflate, br
CONTENT_LENGTH Se calcula a partir de los datos de publicación de la disponibilidad

Si intentas anular estos valores, puede ocurrir lo siguiente:

  • La comprobación de disponibilidad del servicio informa de errores
  • Los valores de anulación se eliminan y se sustituyen por los valores de la tabla.

No se ven datos

No ves ningún dato en el panel de control de comprobación del tiempo de actividad cuando la comprobación del tiempo de actividad está en un proyecto diferente al del servicio Service Directory. Google Cloud

Asegúrate de que el Google Cloud proyecto que contiene la comprobación de tiempo de actividad monitoriza el Google Cloud proyecto que contiene el servicio Service Directory.

Para obtener más información sobre cómo enumerar los proyectos monitorizados y añadir otros, consulta el artículo Configurar un ámbito de métricas para varios proyectos.

Siguientes pasos