创建损坏的链接检查工具

本文档介绍了如何配置 通过创建合成监控工具访问 URI 中包含的链接。您可以指定 用于测试的选项,例如源 URI、测试的链接数量 以及重试次数 然后部署预配置的 Cloud Function 为了支持您的问题排查和调试工作,合成监控工具会在 提供关于每次测试的信息,包括屏幕截图。屏幕截图可让您查看 您的应用的客户看到的确切响应。

如需详细了解合成监控工具,请参阅 合成监控工具简介

关于损坏链接检查工具

每个损坏链接检查工具都会依序测试链接, 合成超时(可配置)。

默认情况下,损坏链接检查工具会执行以下操作:

  • 在原始 URI 中搜索具有 href 属性的 HTML 锚元素。
  • 用于测试在源 URI 中找到的前 10 个链接。
  • 对于每个链接,该检查工具都会发出请求,然后最多等待 30 秒以做出回应。收到响应后,检查工具 用于验证 HTTP 响应状态为 200,表示响应成功。 检查工具不会执行重试。

您应指定源 URI。您可以配置 损坏链接检查工具的搜索、测试的元素数上限 每次测试的超时时间,以及是否执行重试。你还可以 链接检查工具,等待选择器出现。

损坏链接检查工具使用 broken-links-ok 模板。损坏链接检查工具的配置由 index.js 文件的 options 对象。如果您使用 Google Cloud 控制台中,系统会提示您选择每个配置选项, 系统会为您更新 Cloud Function不过,如果您使用 Cloud Monitoring API 或 Terraform,则必须填充此对象。

创建损坏链接检查工具后,要修改配置,请更新 options 对象并重新部署 Cloud Function。

准备工作

  1. 如需获取使用 Google Cloud 控制台查看和修改合成监控工具所需的权限, 请让管理员向您授予 项目的以下 IAM 角色:

    如需详细了解如何授予角色,请参阅管理访问权限

    您也可以通过自定义角色或其他预定义角色来获取所需的权限。

  2. 启用 Cloud Monitoring API, Artifact Registry API, Cloud Build API, Cloud Functions API, Cloud Logging API, Pub/Sub API, and Cloud Run Admin API API。

    启用 API

  3. 验证您的 Google Cloud 项目是否包含默认的 Compute Engine 服务账号。此服务账号是在您启用 Compute Engine API,其名称类似于 12345-compute@developer.gserviceaccount.com.

    在 Google Cloud 控制台中,转到服务账号页面:

    转到服务账号

    如果您使用搜索栏查找此页面,请选择子标题为 IAM 和管理的结果。

    如果默认的 Compute Engine 服务账号不存在,请点击 创建服务账号并完成对话框。

  4. 确保使用默认的 Compute Engine 服务账号,或 创建的新服务账号 授予了 Editor 角色 (roles/editor)。

    如需查看授予服务账号的角色,请执行以下操作:

    1. 在 Google Cloud 控制台中,进入 IAM 页面:

      前往 IAM

      如果您使用搜索栏查找此页面,请选择子标题为 IAM 和管理的结果。

    2. 选择包括 Google 提供的角色授权
    3. 如果系统未列出您的合成监控工具使用的服务账号,或者 尚未授予包含该角色权限的角色 的 Cloud Trace Agent (roles/cloudtrace.agent),则将此角色授予 您的服务账号
  5. 配置您要用于接收通知的通知渠道 通知。我们建议您创建多种类型的通知 渠道。如需了解详情,请参阅 创建和管理通知渠道,以及 通过 API 创建和管理通知渠道

创建损坏的链接检查工具

控制台

当您使用 Google Cloud 控制台创建合成监控工具时, Cloud Function (第 2 代) 并为该 Cloud Function 创建监控工具。 您无法创建用于监控 现有 Cloud Function。

  1. 确保您已启用 其中包含所需的 API 默认 Compute Engine 服务账号,并且此账号拥有 已被授予 Editor 角色 (roles/editor)。如需更多信息 请参阅准备工作
  2. 在 Google Cloud 控制台中,前往  合成监控页面:

    转到合成监控

    如果您使用搜索栏查找此页面,请选择子标题为监控的结果。

  3. 选择创建合成监控工具
  4. 对于模板,请选择损坏的链接检查工具
  5. 输入合成监控工具的名称。
  6. 可选:更新响应超时检查频率和 添加用户定义的标签。

  7. 配置要测试的 URI 和元素:

    1. 点击源 URI,然后输入要测试的 URI。值 必须是 HTTP 或 HTTPS 端点。例如: 则可以输入 https://mywebsite.example.com

    2. 可选:在要跟踪的链接数量中,更新 测试的链接数量。此字段的默认值为 10

    3. 可选:在 HTML 元素选择器字段中,输入 HTML 以逗号分隔列表的形式表示。 您输入的值会被转换为字符串,然后传递给 Document: querySelectorAll() 方法。

      默认情况下,此字段设置为 a,以与锚点匹配。您 如果您想匹配两个定位点,可以输入 a, img 等值 和图片。

    4. 可选:在要跟踪的 HTML 属性字段中,输入 您想要匹配的 HTML 属性。输入的逗号分隔值 每个 传递给 getAttribute() 方法。

      默认情况下,此字段设置为 href,用于指定 链接。您可以输入多个属性,例如, 输入 href, src。在此示例中,代码搜索 属性 href,然后搜索 src 属性。

    5. 可选:配置选择器的等待时间、每个 URI 的超时、重试和 预期的状态代码:

      1. 点击显示更多选项
      2. 配置损坏链接检查工具,以等待特定的 选择器(在抓取任何链接之前显示在 URI 中),请输入 CSS 选择器 等待元素选择器字段。 您输入的值会被转换为字符串,然后传递给 page.waitForSelector() 方法。

        如果选择器在超时到期之前没有显示,则 都会记录在日志中

      3. 更新选择链接进行测试的顺序。

      4. 配置重试。

        默认情况下,系统会向每个链接发送一个请求,如果初始 请求因任何原因失败,例如,命令超时或 HTTP 状态代码不是 200,则表示链接被标记为失败。

        此字段用于指定损坏链接检查工具的次数 可以先对链接发出 HTTP 请求,然后再将链接标记为失败。

      5. 配置应用于每个 URI 的超时。默认情况下,此值 已设为 30 秒。

      6. 要为特定 URI 指定预期的状态代码和超时, 点击添加链接级选项,然后完成对话框。

  8. 可选:配置是否收集回复的屏幕截图以及 已保存。如果您使用默认设置,则系统不会保存屏幕截图。 如果您启用屏幕截图收集功能,就可以收集屏幕截图 所有测试或仅针对失败的测试。Cloud Monitoring 使用 为 Cloud Storage 存储桶命名:

    gcm-PROJECT_ID-synthetics-LOCATION
    

    在前面的表达式中:

    • PROJECT_ID:您的 Google Cloud 项目的 ID。
    • LOCATION:Cloud Storage 存储桶的位置。

    您可以选择使用现有的 Cloud Storage 存储桶。

  9. 请检查您的配置,确保其正确且完整。 然后创建 Cloud Function:

    1. 点击创建函数

      URI 配置字段中的值 在您点击Optionsindex.js 创建函数。点击创建函数后,将 修改 Options 对象。

    2. 输入显示名,然后选择一个区域。名称在 区域。

    3. 运行时、构建、连接和安全设置部分中, 执行以下操作:

      • 连接标签页中,确保允许所有流量 已选择。

      • 请查看默认设置,并在必要时更新这些设置。

      • 运行时服务账号字段中,选择一个服务账号。

    4. 点击应用函数

  10. 配置提醒政策

    1. 可选:更新提醒政策名称和失败时长 才会发送通知。

    2. 添加通知渠道。

  11. 点击创建

    您定义的 Cloud Functions 函数按如下方式构建和部署: 第 2 代,以及创建了合成监控工具。

API

使用 Cloud Monitoring API 与创建任何其他 合成监控工具。 如需了解如何使用 Cloud Monitoring API 创建合成监控工具, 请参阅创建合成监控工具,然后选择 Cloud Monitoring 标签页。

损坏的链接检查工具使用 broken-links-ok 模板。损坏链接检查工具的配置由 index.js 文件的 options 对象。

定义 options.screenshot_options 结构后, 链接损坏检查工具会收集屏幕截图并将其保存到 Cloud Storage 存储桶。 如果 screenshot_options.storage_location 字段未定义或 值为空字符串,则 Monitoring 会创建一个 Cloud Storage 存储桶和屏幕截图会保存到该存储桶中。 Monitoring 使用以下惯例来命名 Cloud Storage 存储桶:

gcm-PROJECT_ID-synthetics-LOCATION

在前面的表达式中:

  • PROJECT_ID:您的 Google Cloud 项目的 ID。
  • LOCATION:Cloud Storage 存储桶的位置。

Terraform

如需了解如何应用或移除 Terraform 配置,请参阅基本 Terraform 命令。 如需了解详情,请参阅 Terraform 提供程序参考文档

使用 Terraform 的创建过程 合成监控工具。 如需了解如何使用 Terraform 创建合成监控工具, 请参阅创建合成监控工具,然后选择 Terraform 标签页。

损坏链接检查工具使用 broken-links-ok 模板。损坏链接检查工具的配置由 index.js 文件的 options 对象。

定义 options.screenshot_options 结构后, 链接损坏检查工具会收集屏幕截图并将其保存到 Cloud Storage 存储桶。 如果 screenshot_options.storage_location 字段未定义或 值为空字符串,则 Monitoring 会创建一个 Cloud Storage 存储桶和屏幕截图会保存到该存储桶中。 Monitoring 使用以下惯例来命名 Cloud Storage 存储桶:

gcm-PROJECT_ID-synthetics-LOCATION

在前面的表达式中:

  • PROJECT_ID:您的 Google Cloud 项目的 ID。
  • LOCATION:Cloud Storage 存储桶的位置。

浏览结果

对于每次执行,损坏链接检查工具都会执行以下操作:

  • 生成一个表格,其中每行都提供了关于 特定 URI。摘要信息包括目标 URI、延迟时间 以及 HTML 元素标识符。例如,此列列出了 a(当测试 HTML 锚标记时)。当行对应于 源 URI,则 HTML 元素标识符的值为 -

  • 收集指标、跟踪记录数据和日志数据。

  • 收集屏幕截图(如果配置)。

如需详细了解如何探索收集的数据,请参阅 探索合成监控工具的结果

问题排查

本部分提供的信息可以帮助您 以及损坏链接检查工具

无法修改损坏链接检查工具的配置

您使用 Google Cloud 控制台创建了一个损坏的链接检查工具, 以更改被测试的 HTML 元素,或者您想要修改 URI 超时、重试、等待选择器和各链接选项。 但是,当您修改损坏链接检查工具时,Google Cloud 控制台不会 显示配置字段。

如需解决此故障,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往  合成监控页面:

    转到合成监控

    如果您使用搜索栏查找此页面,请选择子标题为监控的结果。

  2. 找到您要修改的合成监控工具。 点击 更多选项,然后选择修改
  3. 点击修改函数
  4. 修改 index.js 文件中的 options 对象,然后 点击应用函数

    有关此对象的字段和语法的信息,请参阅 broken-links-ok/index.js.

  5. 点击保存

Google Cloud 控制台显示,屏幕截图保存失败

您创建了一个损坏的链接检查工具,并将其配置为保存屏幕截图。 不过,Google Cloud 控制台会显示以下警告之一 消息以及更多详细信息:

  • InvalidStorageLocation
  • StorageValidationError
  • BucketCreationError
  • ScreenshotFileUploadError

如需解决这些故障,请尝试以下操作:

  • 如果看到 InvalidStorageLocation 消息,请验证是否存在 存储分区的存储 Cloud Storage 存储桶的 options.screenshot_options.storage_location.

  • 查看与您的 Cloud Function 相关的日志。 如需了解详情,请参阅查找日志

  • 确认相应服务中使用的服务账号 Cloud Function 拥有 Identity and Access Management 角色 对 Cloud Storage 存储分区的访问权限和写入数据。

后续步骤