Crear un verificador de vínculos rotos

En este documento, se describe cómo configurar una prueba periódica de los vínculos que contiene un URI mediante la creación de un monitor sintético. Especifica las opciones para la prueba, como el URI de origen, la cantidad de vínculos probados y la cantidad de reintentos, y, luego, implementarás una Cloud Function preconfigurada. Para ayudarte a solucionar problemas y realizar tareas de depuración, los monitores sintéticos guardan información detallada sobre cada prueba, incluidas las capturas de pantalla. Las capturas de pantalla te permiten ver la respuesta exacta que vieron los clientes de tu aplicación.

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

Información sobre los verificadores de vínculos rotos

Cada verificador de vínculos rotos prueba los vínculos en serie, y hay un tiempo de espera sintético general que se puede configurar.

De forma predeterminada, un verificador de vínculos rotos hace lo siguiente:

  • Busca el URI de origen para elementos de anclaje HTML con atributos href.
  • Prueba los primeros 10 vínculos encontrados en el URI de origen.
  • Para cada vínculo, el verificador emite una solicitud y, luego, espera 30 segundos como máximo para obtener una respuesta. Cuando se recibe una respuesta, el verificador verifica que el estado de la respuesta HTTP sea 200, lo que indica una respuesta exitosa. El verificador no realiza reintentos.

Debes especificar el URI de origen. Puedes configurar los elementos HTML que busca el verificador de vínculos rotos, la cantidad máxima de elementos probados, el tiempo de espera por prueba y si se realizan reintentos. También puedes configurar verificadores de vínculos rotos a fin de esperar a que aparezca un selector.

Los verificadores de vínculos rotos usan la plantilla broken-links-ok. El objeto options del archivo index.js especifica la configuración de un verificador de vínculos rotos. Si creas tu verificador con la consola de Google Cloud, se te solicitará cada opción de configuración y la Cloud Function se actualizará por ti. Sin embargo, si usas la API de Cloud Monitoring o Terraform, debes propagar este objeto.

Después de crear un verificador de vínculos rotos, para modificar la configuración, actualiza el objeto options y vuelve a implementar la Cloud Function.

Antes de comenzar

  1. Si quieres obtener los permisos que necesitas para ver y modificar los monitores sintéticos con la consola de Google Cloud, pídele a tu administrador que te otorgue los siguientes roles de IAM en tu proyecto:

    Si quieres obtener más información para otorgar roles, consulta Administra el acceso.

    Es posible que también puedas obtener los permisos necesarios a través de los roles personalizados o de otros roles predefinidos.

  2. Habilita las API de Cloud Monitoring API, Artifact Registry API, Cloud Build API, Cloud Functions API, Cloud Logging API, Pub/Sub API, and Cloud Run Admin API.

    Habilita las API

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

    En el panel de navegación de la consola de Google Cloud, selecciona IAM y administración y, luego, Cuentas de servicio:

    Ir a Cuentas de servicio

    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 a la cuenta de servicio predeterminada de Compute Engine o a la cuenta de servicio que creaste se haya otorgado el rol de editor (roles/editor).

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

    1. En el panel de navegación de la consola de Google Cloud, elige IAM:

      Ir a IAM

    2. Selecciona Incluir asignaciones de roles proporcionadas por Google.
    3. Si la cuenta de servicio que usa tu monitor sintético no aparece en la lista o si no se le otorgó un rol que incluya los permisos en el rol de agente de Cloud Trace (roles/cloudtrace.agent), otorga este rol a tu cuenta de servicio.
  5. Configura los canales de notificaciones que deseas usar para recibir notificaciones. Te recomendamos que crees varios tipos de canales de notificaciones. Para obtener más información, consulta Cómo crear y administrar canales de notificaciones y Cómo crear y administrar canales de notificaciones mediante la API.

Crear un verificador de vínculos rotos

Console

Cuando creas un monitor sintético con la consola de Google Cloud, se implementa una Cloud Function (2ª gen..) nueva y se crea el monitor para esa Cloud Function. No puedes crear un monitor sintético que supervise una Cloud Function existente.

  1. Asegúrate de que habilitaste las APIs necesarias, que tu proyecto contenga una cuenta de servicio predeterminada de Compute Engine y que a esta cuenta se le haya otorgado la función de editor (roles/editor). Para obtener más información, consulta Antes de comenzar.
  2. En el panel de navegación de la consola de Google Cloud, selecciona Monitoring y, luego, elige  Supervisión sintética:

    Ir a Supervisión sintética

  3. Selecciona Create Synthetic Monitor.
  4. En la plantilla, selecciona Verificador de vínculos roto.
  5. Ingresa un nombre para el monitor sintético.
  6. Opcional: Actualiza el Tiempo de espera de respuesta, la Frecuencia de verificación y agrega etiquetas definidas por el usuario.

  7. Configura el URI y los elementos que se probarán:

    1. Haz clic en URI de origen y escribe el URI que quieras probar. El valor que ingreses debe ser un extremo HTTP o HTTPS. Por ejemplo, puedes ingresar https://mywebsite.example.com.

    2. Opcional: En Cantidad de vínculos que se deben seguir, actualiza la cantidad máxima de vínculos que se prueban. El valor predeterminado de este campo es 10.

    3. Opcional: En el campo Selector de elementos HTML, ingresa el elemento HTML que quieres que coincida, como una lista separada por comas. El valor que ingreses se convertirá en una string y, luego, se pasará al método Document: querySelectorAll().

      De forma predeterminada, este campo se establece en a, que coincide con las anclas. Puedes ingresar valores como a, img cuando quieras hacer coincidir tanto las anclas como las imágenes.

    4. Opcional: En el campo Atributos HTML que se deben seguir, ingresa los atributos HTML que quieres que coincidan. Los valores separados por comas que ingreses se pasarán de forma individual al método getAttribute().

      De forma predeterminada, este campo se establece en href, que especifica el URI del vínculo. Puedes ingresar varios atributos, por ejemplo, href, src. En este ejemplo, el código busca el atributo href y, luego, el atributo src.

    5. Opcional: Configura la 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. Si deseas configurar el verificador de vínculos rotos a fin de que espere a que aparezca un selector específico en el URI antes de que se extraigan los vínculos, ingresa los selectores de CSS en el campo Esperar al selector de elementos. El valor que ingreses se convertirá en una string y, luego, se pasará al método page.waitForSelector().

        Si el selector no aparece antes de que venza el tiempo de espera, la falla se registra en los registros.

      3. Actualiza el orden en el que se seleccionan los vínculos para las pruebas.

      4. Configura los reintentos.

        De forma predeterminada, se envía una solicitud a cada vínculo 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 vínculo se marca como con errores.

        Este campo especifica la cantidad de veces que el verificador de vínculos rotos puede emitir una solicitud HTTP a un vínculo antes de marcarlo como fallido.

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

      6. Para especificar el código de estado esperado y agotar el tiempo de espera de un URI específico, haz clic en Agregar opción por vínculo y completa el cuadro de diálogo.

  8. Opcional: Configura si se recopilan y guardan las capturas de pantalla de las respuestas. Si usas la configuración predeterminada, no se guardarán las capturas de pantalla. Si habilitas la recopilación de capturas de pantalla, puedes recopilar capturas de pantalla para todas las pruebas o solo para las pruebas fallidas. Cloud Monitoring usa la siguiente convención para nombrar el bucket de Cloud Storage:

    gcm-PROJECT_ID-synthetics-LOCATION
    

    En la expresión anterior:

    • PROJECT_ID: El ID del proyecto de Google Cloud.
    • LOCATION: Es la ubicación del bucket de Cloud Storage.

    Tienes la opción de usar un bucket de Cloud Storage existente.

  9. Revisa tu configuración y asegúrate de que sea correcta y esté completa. Luego, crea tu Cloud Function:

    1. Haz clic en Crear función.

      Los valores en los campos de configuración del 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. Ingresa un nombre visible y selecciona una región. Los nombres deben ser únicos en una región.

    3. En la sección Configuración del entorno de ejecución, la compilación, las conexiones y la seguridad, haz lo siguiente:

      • En la pestaña Conexiones, asegúrate de que Permitir todo el tráfico esté seleccionado.

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

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

    4. Haz clic en Aplicar función.

  10. Configura la política de alertas:

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

    2. Agrega los canales de notificaciones.

  11. Haz clic en Crear.

    La Cloud Function que definiste se compila y se implementa como 2ª gen.. y se crea el monitor sintético.

API

El proceso de crear un verificador de vínculos rotos mediante la API de Cloud Monitoring es idéntico al proceso de creación de cualquier otro monitor sintético. Si quieres obtener información sobre cómo usar la API de Cloud Monitoring para crear un monitor sintético, consulta Cómo crear un monitor sintético y selecciona la pestaña Cloud Monitoring.

Los verificadores de vínculos rotos usan la plantilla broken-links-ok. El objeto options del archivo index.js especifica la configuración de un verificador de vínculos rotos.

Cuando se define la estructura options.screenshot_options, el verificador de vínculos rotos recopila capturas de pantalla y las guarda en un bucket de Cloud Storage. Si el campo screenshot_options.storage_location no está definido o si el valor es una string vacía, Monitoring crea un bucket de Cloud Storage y las capturas de pantalla se guardan en ese bucket. Monitoring usa la siguiente convención para nombrar el bucket de Cloud Storage:

gcm-PROJECT_ID-synthetics-LOCATION

En la expresión anterior:

  • PROJECT_ID: El ID del proyecto de Google Cloud.
  • LOCATION: Es la ubicación del bucket de Cloud Storage.

Terraform

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform. Para obtener más información, consulta la documentación de referencia del proveedor de Terraform.

El proceso de crear un verificador de vínculos rotos con Terraform es idéntico al proceso de creación de cualquier otro monitor sintético. Si quieres obtener información sobre cómo usar Terraform para crear un monitor sintético, consulta Crea un monitor sintético y selecciona la pestaña Terraform.

Los verificadores de vínculos rotos usan la plantilla broken-links-ok. El objeto options del archivo index.js especifica la configuración de un verificador de vínculos rotos.

Cuando se define la estructura options.screenshot_options, el verificador de vínculos rotos recopila capturas de pantalla y las guarda en un bucket de Cloud Storage. Si el campo screenshot_options.storage_location no está definido o si el valor es una string vacía, Monitoring crea un bucket de Cloud Storage y las capturas de pantalla se guardan en ese bucket. Monitoring usa la siguiente convención para nombrar el bucket de Cloud Storage:

gcm-PROJECT_ID-synthetics-LOCATION

En la expresión anterior:

  • PROJECT_ID: El ID del proyecto de Google Cloud.
  • LOCATION: Es la ubicación del bucket de Cloud Storage.

Explorar resultados

Para cada ejecución, un verificador de vínculos rotos hace lo siguiente:

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

  • Recopila métricas, datos de seguimiento y datos de registro.

  • Recopila capturas de pantalla cuando se configura.

Si quieres obtener más información para explorar los datos recopilados, consulta Cómo explorar los resultados del monitor sintético.

Solucionar problemas

En esta sección, se proporciona información que puedes usar para solucionar problemas de los verificadores de vínculos rotos.

No se puede editar la configuración de un verificador de vínculos rotos

Creaste un verificador de vínculos rotos con la consola de Google Cloud y deseas cambiar los elementos HTML que se prueban o modificar el tiempo de espera del URI, los reintentos, la espera del selector y las opciones por vínculo. Sin embargo, cuando editas el verificador de vínculos rotos, Google Cloud Console no muestra los campos de configuración.

Para resolver este error, haz lo siguiente:

  1. En el panel de navegación de la consola de Google Cloud, selecciona Monitoring y, luego, elige  Supervisión sintética:

    Ir a Supervisión sintética

  2. Busca el monitor sintético que quieras editar, haz clic en More options y, luego, selecciona Edit.
  3. Haz clic en Editar función.
  4. Edita el objeto options en el archivo index.js y 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.

  5. Haz clic en Guardar.

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

Creaste un verificador de vínculos roto y lo configuraste para guardar capturas de pantalla. Sin embargo, la consola de Google Cloud muestra uno de los siguientes mensajes de advertencia junto con información más detallada:

  • InvalidStorageLocation
  • StorageValidationError
  • BucketCreationError
  • ScreenshotFileUploadError

Para resolver estos errores, haz lo siguiente:

  • Si ves el mensaje InvalidStorageLocation, verifica la existencia del bucket de Cloud Storage especificado en el campo llamado options.screenshot_options.storage_location.

  • Visualiza los registros relacionados con tu Cloud Function. Para obtener más información, consulta Busca registros.

  • Verifica que la cuenta de servicio que se usa en la Cloud Function correspondiente tenga una función de Identity and Access Management que le permita crear buckets de Cloud Storage, así como acceder a ellos y escribirlos.

¿Qué sigue?