Crear un comprobador de enlaces rotos

En este documento se describe cómo configurar una prueba periódica de los enlaces incluidos en un URI creando un monitor sintético. Especifica las opciones de la prueba, como el URI de origen, el número de enlaces probados y el número de reintentos, y, a continuación, implementa una función de Cloud Run preconfigurada. Para ayudarte a solucionar problemas y depurar, los monitores sintéticos guardan información detallada sobre cada prueba, incluidas capturas de pantalla. Las capturas de pantalla te permiten ver la respuesta exacta que ven los clientes de tu aplicación.

Para obtener más información sobre los monitores sintéticos, consulta el artículo Acerca de los monitores sintéticos.

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.

Acerca de los verificadores de enlaces rotos

Cada comprobador de enlaces rotos prueba los enlaces de forma secuencial y hay un tiempo de espera sintético general que se puede configurar.

De forma predeterminada, un comprobador de enlaces rotos hace lo siguiente:

  • Busca elementos de anclaje HTML con atributos href en el URI de origen.
  • Prueba los 10 primeros enlaces encontrados en el URI de origen.
  • Por cada enlace, el comprobador envía una solicitud y espera un máximo de 30 segundos para recibir una respuesta. Cuando se recibe una respuesta, el comprobador verifica que el estado de la respuesta HTTP sea 200, lo que indica que la respuesta se ha enviado correctamente. El comprobador no realiza reintentos.

Especifica el URI de origen. Puede configurar los elementos HTML en los que buscará el comprobador de enlaces rotos, el número máximo de elementos que se probarán, el tiempo de espera por prueba y si se realizarán reintentos. También puedes configurar comprobadores de enlaces rotos para que esperen a que aparezca un selector.

Los comprobadores de enlaces rotos usan la plantilla broken-links-ok. La configuración de un comprobador de enlaces rotos se especifica mediante el objeto options del archivo index.js. Si creas el verificador mediante laGoogle Cloud consola, se te pedirá que indiques cada opción de configuración y se actualizará la función de Cloud Run. Sin embargo, si usas la API Cloud Monitoring o Terraform, debes rellenar este objeto.

Después de crear un comprobador de enlaces rotos, para modificar la configuración, actualiza el objeto options y vuelve a implementar la función de Cloud Run.

Antes de empezar

Sigue estos pasos en el Google Cloud proyecto que almacenará el comprobador de enlaces:

  1. Para obtener los permisos que necesitas para ver y modificar monitores sintéticos mediante la Google Cloud consola, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos en tu proyecto:

    Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

    También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.

  2. Enable the Cloud Monitoring API, Artifact Registry API, Cloud Build API, Cloud Functions API, Cloud Logging API, Pub/Sub API, and Cloud Run Admin API APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  3. Comprueba que tu Google Cloud proyecto contiene la cuenta de servicio predeterminada de Compute Engine. Esta cuenta de servicio se crea cuando habilitas la API Compute Engine y tiene un nombre similar a 12345-compute@developer.gserviceaccount.com.

    En la Google Cloud consola, ve a la página Cuentas de servicio:

    Ve a Cuentas de servicio.

    Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo sea IAM y administrador.

    Si la cuenta de servicio predeterminada de Compute Engine no existe, haz clic en Crear cuenta de servicio y completa el cuadro de diálogo.

  4. Asegúrate de que la cuenta de servicio predeterminada de Compute Engine o la cuenta de servicio que has creado tenga asignado el rol Editor (roles/editor).

    Para ver los roles concedidos a tu cuenta de servicio, haz lo siguiente:

    1. En la Google Cloud consola, ve a la página Gestión de identidades y accesos:

      Ve a Gestión de identidades y accesos.

      Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo sea IAM y administrador.

    2. Selecciona Incluir concesiones de roles proporcionadas por Google.
    3. Si la cuenta de servicio que usa tu monitor sintético no aparece en la lista o no se le ha asignado un rol que incluya los permisos del rol Agente de Cloud Trace (roles/cloudtrace.agent), asigna este rol a tu cuenta de servicio.
  5. Configura los canales de notificación que quieras usar para recibir notificaciones. Te recomendamos que crees varios tipos de canales de notificaciones. Para obtener más información, consulta los artículos Crear y gestionar canales de notificación y Crear y gestionar canales de notificación mediante la API.
  6. Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    Terraform

    Para usar las muestras de Terraform de esta página en un entorno de desarrollo local, instala e inicializa la CLI de gcloud y, a continuación, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.

      Instala Google Cloud CLI.

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

      If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    Para obtener más información, consulta Configurar ADC en un entorno de desarrollo local en la documentación de autenticación Google Cloud .

    REST

    Para usar las muestras de la API REST de esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la CLI de gcloud.

      Instala Google Cloud CLI.

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .

    Crear un comprobador de enlaces rotos

    Consola

    Cuando creas un monitor sintético mediante la Google Cloud consola, se despliega una nueva función de Cloud Run (2.ª gen.) y se crea el monitor de esa función de Cloud Run. No puedes crear un monitor sintético que monitorice una función de Cloud Run.

    1. Asegúrate de que has habilitado las APIs necesarias, de que tu proyecto contiene una cuenta de servicio predeterminada de Compute Engine y de que a esta cuenta se le ha asignado el rol Editor (roles/editor). Para obtener más información, consulta Antes de empezar.
    2. En la Google Cloud consola, ve a la página  Monitorización sintética:

      Ve a Monitorización sintética.

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

    3. 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.
    4. Selecciona Crear monitor sintético.
    5. En la plantilla, selecciona Comprobador de enlaces rotos.
    6. Introduce un nombre para el monitor sintético.
    7. Opcional: Actualiza los campos Tiempo de espera de la respuesta y Frecuencia de comprobación, y añade etiquetas definidas por el usuario.

    8. Configura el URI y los elementos que quieras probar:

      .
      1. Haga clic en URI de origen e introduzca el URI que quiera probar. El valor que introduzcas debe ser un endpoint HTTP o HTTPS. Por ejemplo, puedes escribir https://mywebsite.example.com.

      2. Opcional: En Número de enlaces que seguir, actualice el número máximo de enlaces que se van a probar. El valor predeterminado de este campo es 10.

      3. Opcional: En el campo Selector de elementos HTML, introduzca el elemento HTML que quiera que coincida como una lista separada por comas. El valor que introduzca se convertirá en una cadena y, a continuación, se pasará al método Document: querySelectorAll().

        De forma predeterminada, este campo tiene el valor a, que coincide con los anclajes. Puedes introducir valores como a, img si quieres que se incluyan tanto los enlaces como las imágenes.

      4. Opcional: En el campo Atributos HTML que se deben seguir, introduzca los atributos HTML que quiera que coincidan. Los valores separados por comas que introduzcas se transfieren individualmente al método getAttribute().

        De forma predeterminada, este campo tiene el valor href, que especifica el URI del enlace. Puedes introducir varios atributos. Por ejemplo, puedes introducir href, src. En este ejemplo, el código busca el atributo href y, a continuación, el atributo src.

      5. Opcional: Configura el tiempo de espera del selector, el tiempo de espera por URI, los reintentos y los códigos de estado esperados:

        1. Haz clic en Mostrar más opciones.
        2. Para configurar el comprobador de enlaces rotos de forma que espere a que aparezca un selector específico en el URI antes de extraer los enlaces, introduzca los selectores de CSS en el campo Esperar selector de elemento. El valor que introduzcas se convertirá en una cadena y, a continuación, se pasará al método page.waitForSelector().

          Si el selector no aparece antes de que venza el tiempo de espera, se registrará un error en los registros.

        3. Actualiza el orden en el que se seleccionan los enlaces para las pruebas.

        4. Configura los reintentos.

          De forma predeterminada, se envía una solicitud a cada enlace y, si la solicitud inicial falla por algún motivo (por ejemplo, si se agota el tiempo de espera del comando o si el código de estado HTTP no es 200), el enlace se marca como fallido.

          Este campo especifica el número de veces que el comprobador de enlaces rotos puede enviar una solicitud HTTP a un enlace antes de marcarlo como fallido.

        5. Configura un tiempo de espera que se aplique a cada URI. De forma predeterminada, este valor es de 30 segundos.

        6. Para especificar el código de estado y el tiempo de espera esperados de un URI concreto, haga clic en Añadir opción por enlace y complete el cuadro de diálogo.

    9. Opcional: Configura si se recogen y se guardan capturas de pantalla de las respuestas. Si usas la configuración predeterminada, las capturas de pantalla no se guardarán. Si habilitas la recogida de capturas de pantalla, podrás recogerlas de todas las pruebas o solo de las que fallen. Cloud Monitoring usa la siguiente convención para asignar nombres a los segmentos de Cloud Storage:

      gcm-PROJECT_ID-synthetics-LOCATION
      

      En la expresión anterior:

      • PROJECT_ID: el ID de tu proyecto de Google Cloud .
      • LOCATION: la ubicación de tu segmento de Cloud Storage.

      Puedes usar un segmento de Cloud Storage que ya tengas.

    10. Revisa la configuración y asegúrate de que sea correcta y esté completa. A continuación, crea la función de Cloud Run:

      1. Haz clic en Crear función.

        Los valores de los campos Configuración de URI se copian en el objeto Options del archivo index.js cuando haces clic en Crear función. Después de hacer clic en Crear función, edita el objeto Options para cambiar la configuración.

      2. Introduce un nombre visible y selecciona una región. Los nombres deben ser únicos en una región.

      3. En la sección Runtime, build, connections and security settings (Configuración de tiempo de ejecución, compilación, conexiones y seguridad), haga lo siguiente:

        • En la pestaña Conexiones, comprueba que la opción Permitir todo el tráfico esté seleccionada.

        • Revisa la configuración predeterminada y actualízala cuando sea necesario.

        • En el campo Cuenta de servicio de tiempo de ejecución, selecciona una cuenta de servicio.

      4. Haz clic en Aplicar función.

    11. Configura la política de alertas:

      1. Opcional: Actualiza el nombre de la política de alertas y la duración del error antes de que se envíen las notificaciones.

      2. Añade los canales de notificaciones.

    12. Haz clic en Crear.

      La función de Cloud Run que has definido se compila y se despliega como de 2.ª gen., y se crea el monitor sintético.

    Terraform

    Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform. Para obtener más información, consulta la documentación de referencia del proveedor Terraform.

    El proceso para crear un comprobador de enlaces rotos con Terraform es idéntico al de cualquier otro monitor sintético. Para obtener información sobre cómo usar Terraform para crear un monitor sintético, consulta Crear un monitor sintético y selecciona la pestaña Terraform.

    Los comprobadores de enlaces rotos usan la plantilla broken-links-ok. La configuración de un comprobador de enlaces rotos se especifica mediante el objeto options del archivo index.js.

    Cuando se define la estructura options.screenshot_options, el comprobador de enlaces rotos recoge capturas de pantalla y las guarda en un segmento de Cloud Storage. Si el campo screenshot_options.storage_location no está definido o si el valor es una cadena vacía, Monitoring crea un segmento de Cloud Storage y las capturas de pantalla se guardan en ese segmento. Monitoring usa la siguiente convención para asignar nombres a los segmentos de Cloud Storage:

    gcm-PROJECT_ID-synthetics-LOCATION
    

    En la expresión anterior:

    • PROJECT_ID: el ID de tu proyecto de Google Cloud .
    • LOCATION: la ubicación de tu segmento de Cloud Storage.

    REST

    El proceso para crear una comprobación de enlaces rotos con la API Cloud Monitoring es idéntico al de cualquier otro monitor sintético. Para obtener información sobre cómo usar la API Cloud Monitoring para crear un monitor sintético, consulta Crear un monitor sintético y selecciona la pestaña Cloud Monitoring.

    Los comprobadores de enlaces rotos usan la plantilla broken-links-ok. La configuración de un comprobador de enlaces rotos se especifica mediante el objeto options del archivo index.js.

    Cuando se define la estructura options.screenshot_options, el comprobador de enlaces rotos recoge capturas de pantalla y las guarda en un segmento de Cloud Storage. Si el campo screenshot_options.storage_location no está definido o si el valor es una cadena vacía, Monitoring crea un segmento de Cloud Storage y las capturas de pantalla se guardan en ese segmento. Monitoring usa la siguiente convención para asignar nombres a los segmentos de Cloud Storage:

    gcm-PROJECT_ID-synthetics-LOCATION
    

    En la expresión anterior:

    • PROJECT_ID: el ID de tu proyecto de Google Cloud .
    • LOCATION: la ubicación de tu segmento de Cloud Storage.

    Consultar resultados

    En cada ejecución, el comprobador de enlaces rotos hace lo siguiente:

    • Genera una tabla en la que cada fila proporciona información sobre las pruebas de un URI específico. La información de resumen incluye el URI de destino, la latencia, el estado y el identificador del elemento HTML. Por ejemplo, esta columna muestra a cuando se prueba un elemento de anclaje HTML. Cuando la fila corresponde al URI de origen, el valor del identificador del elemento HTML es -.

    • Recoge métricas, datos de trazas y datos de registro.

    • Recoge capturas de pantalla cuando se configura.

    Para obtener más información sobre cómo explorar los datos recogidos, consulta Explorar los resultados de monitorización sintética.

    Solucionar problemas

    En esta sección se proporciona información que puede usar para solucionar problemas con sus comprobadores de enlaces rotos.

    No se puede editar la configuración de un comprobador de enlaces rotos

    Has creado un comprobador de enlaces rotos mediante la Google Cloud consola y quieres cambiar los elementos HTML que se prueban o modificar el tiempo de espera de URI, los reintentos, el tiempo de espera del selector y las opciones por enlace. Sin embargo, cuando editas el comprobador de enlaces rotos, la consola Google Cloud no muestra los campos de configuración.

    Para solucionar este problema, sigue estos pasos:

    1. En la Google Cloud consola, ve a la página  Monitorización sintética:

      Ve a Monitorización sintética.

      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. Busca el monitor sintético que quieras editar, haz clic en Más opciones y, a continuación, selecciona Editar.
    4. Haz clic en Editar función.
    5. Edita el objeto options en el archivo index.js y, a continuación, haz clic en Aplicar función.

      Para obtener información sobre los campos y la sintaxis de este objeto, consulta broken-links-ok/index.js.

    6. Haz clic en Guardar.

    Google Cloud La consola muestra que no se pueden guardar las capturas de pantalla

    Has creado un comprobador de enlaces rotos y lo has configurado para que guarde capturas de pantalla. Sin embargo, la consola Google Cloud muestra uno de los siguientes mensajes de advertencia junto con información más detallada:

    • InvalidStorageLocation
    • StorageValidationError
    • BucketCreationError
    • ScreenshotFileUploadError

    Para solucionar estos errores, prueba lo siguiente:

    • Si ves el mensaje InvalidStorageLocation, verifica que existe el segmento de Cloud Storage especificado en el campo options.screenshot_options.storage_location.

    • Consulta los registros relacionados con tu función de Cloud Run. Para obtener más información, consulta el artículo sobre cómo buscar registros.

    • Verifica que la cuenta de servicio que se usa en la función de Cloud Run correspondiente tenga un rol de Gestión de Identidades y Accesos que le permita crear, acceder y escribir en segmentos de Cloud Storage.

    Siguientes pasos