使用 Canary 蓝图 - Amazon CloudWatch
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Canary 蓝图

本节提供有关每种 Canary 蓝图的详细信息以及每种蓝图最适合的任务。为以下 Canary 类型提供了蓝图:

  • 检测信号显示器

  • API Canary

  • 无效链接检查器

  • Canary

  • GUI 工作流程

使用蓝图创建 Canary 时,在您填写 CloudWatch 控制台中的字段时,会将脚本编辑器区域显示您正在创建的金丝雀作为 Node.js 脚本。您还可以在此区域编辑 Canary 以进一步定制。

检测信号监控

检测信号脚本加载指定的 URL,并存储页面的屏幕截图和 HTTP 存档文件(HAR 文件)。它们还存储已访问 URL 的日志。

您可以使用 HAR 文件查看有关网页性能的详细数据。您可以分析 Web 请求列表并捕获性能问题,例如某个项的加载时间。

如果你的金丝雀使用syn-nodejs-puppeteer-3.1或更高版本的运行时,您可以使用检测信号监视蓝图监视多个 URL,并查看状态、持续时间、关联的屏幕截图和失败原因或 Canary 运行报告的步骤摘要中的每个 URL。

API Canary

API Canary 可以测试 REST API 的基本读写函数。REST 指表述性状态转移,是开发人员在创建 API 时需要遵循的一组规则。其中一条规则规定,指向特定 URL 的链接应返回一段数据。

Canary 可以使用任何 API 并测试所有类型的功能。每个金丝雀都可以进行多个 API 调用。

在使用运行时版本的金丝雀syn-nodejs-2.2或更高版本,API 金丝雀蓝图支持多步骤金丝雀,这些金丝雀将您的 API 作为 HTTP 步骤进行监控。您可以在一个金丝雀中测试多个 API。每个步骤都是一个单独的请求,它可以访问不同的 URL,使用不同的标头,以及对是否捕获标题和响应正文使用不同的规则。通过不捕获标头和响应正文,您可以防止记录敏感数据。

API Canary 中的每个请求包含以下信息:

  • 终端节点,即您请求的 URL。

  • 方法,它是发送到服务器的请求类型。REST API 支持 GET(读取)、POST(写入)、PUT(更新)、PATCH(更新)和 DELETE(删除)操作。

  • 标头,用于向客户端和服务器提供信息。它们用于身份验证和提供有关正文内容的信息。有关有效标头的列表,请参阅HTTP 标头

  • 这些区域有:数据(或body),其中包含要发送到服务器的信息。这仅用于 POST、PUT、PATCH 或 DELETE 请求。

  • 您请求的 URL。

API Canary 蓝图支持 GET 和 POST 方法。使用此蓝图时,您必须指定标头。例如,您可以指定 Authorization 作为 Key (键),并指定必要的授权数据作为该键的 Value (值)

如果您在测试 POST 请求,还可以在 Data (数据) 字段中指定要发布的内容。

与 API Gateway 集成

API 蓝图与 Amazon API Gateway 集成。这使您能够选择一个 API Gateway API,并从相同的Amazon账户和区域作为金丝雀,或从 API Gateway 上传 Swagger 模板以进行跨账户和跨区域 API 监控。然后,您可以选择控制台中的其余细节来创建金丝雀,而不是从头开始输入它们。有关 API Gateway 的更多信息,请参阅什么是 Amazon API Gateway?

无效链接检查器使用,收集您正在测试的 URL 中的所有链接。document.getElementsByTagName('a')。它仅测试指定数量的链接,URL 本身计为第一个链接。例如,如果要检查包含五个链接的页面上的所有链接,则必须指定 Canary 跟踪六个链接。

断开的链接检查器金丝雀使用syn-nodejs-2.0-beta运行时或更高版本支持以下额外的功能:

  • 提供包含检查链接、状态代码、失败原因(如果有)以及源页和目标页面截图的报告。

  • 查看金丝雀结果时,您可以筛选以仅查看断开的链接,然后根据失败原因修复链接。

  • 此版本捕获每个链接的带注释的源页屏幕截图,并突出显示链接所在的锚点。隐藏的组件不会被注释。

  • 您可以将此版本配置为捕获源页和目标页面的屏幕截图、仅捕获源页面或仅捕获目标页面的屏幕截图。

  • 此版本修复了早期版本中的一个问题,即使从第一页抓取更多链接,Canary 脚本也会在第一个断开的链接后停止。

如果您希望更新现有的 Canary,请使用syn-1.0要使用新的运行时,您必须删除 Canary 并重新创建 Canary。将现有金丝雀更新到新运行时并不会使这些功能可用。

断开的链接检查器 Canary 检测以下类型的链接错误:

  • 404 未找到页面

  • 主机名无效

  • 错误的 URL。例如,URL 缺少括号,包含多余的斜杠,或使用错误的协议。

  • 无效的 HTTP 响应代码。

  • 主机服务器返回没有内容和没有响应代码的空响应。

  • HTTP 请求在 Canary 运行期间持续超时。

  • 主机持续丢弃连接,因为它配置错误或太忙。

Canary

使用金丝雀录音机蓝图,您可以使用 CloudWatch Synthetics 记录器记录您的点击并在网站上键入操作,并自动生成 Node.js 脚本,该脚本可用于创建执行相同步骤的金丝雀。CloudWatch Synthetics 记录器是亚马逊提供的谷歌浏览器扩展。

Credits:CloudWatch Synthetics 记录器是基于无头录像机

有关更多信息,请参阅使用谷歌浏览器的 CloudWatch Synthetics 记录器

GUI 工作流生成器

GUI 工作流生成器蓝图验证是否可以在您的网页上执行操作。例如,如果您有一个带有登录表单的网页,则 Canary 可以填充用户和密码字段并提交表单,以验证网页是否正常工作。

当您使用蓝图创建此类型的 Canary 时,可以指定希望 Canary 在网页上执行的操作。您可以使用的操作如下:

  • 单击— 选择您指定的元素,然后模拟用户单击或选择该元素的行为。

    若要在 Node.js 脚本中指定元素,请使用[id=]或者a[class=]

    要在 Python 脚本中指定元素,请使用xpath //*[@id=]或者//*[@class=]

  • 验证选择器— 验证网页上存在指定的元素。此测试对于验证之前的操作是否导致使用正确的元素填充页面非常有用。

    要在 Node.js 脚本中指定待验证的元素,请使用[id=]或者a[class=]

    要在 Python 脚本中指定待验证的元素,请使用xpath //*[@id=]或者//*[class=]

  • 验证文本— 验证指定的字符串是否包含在目标元素中。此测试对于验证之前的操作是否导致显示正确的文本非常有用。

    要在 Node.js 脚本中指定元素,请使用类似于的格式,例如div[@id=]//h1因为此操作使用waitForXPath函数。

    要在 Python 脚本中指定元素,请使用 xpath 格式,例如//*[@id=] 或//* [@class =],因为此操作使用implicitly_wait函数在硒中。

  • 输入文本— 在目标元素中写入指定的文本。

    要在 Node.js 脚本中指定待验证的元素,请使用[id=]或者a[class=]

    要在 Python 脚本中指定待验证的元素,请使用xpath //*[@id=]或者//*[@class=]

  • 单击导航— 在选择指定的元素之后,等待整个页面加载。当您需要重新加载页面时,这非常有用。

    若要在 Node.js 脚本中指定元素,请使用[id=]或者a[class=]

    要在 Python 脚本中指定元素,请使用xpath //*[@id=]或者//*[@class=]

例如,以下蓝图使用 Node.js。它单击firstButton在指定的 URL 上,验证预期的选择器是否出现了预期文本,输入名称Test_Customer进入名称字段中,单击登录按钮,然后验证登录是否成功通过检查欢迎使用下一页中的文本。


              控制台中的创建 Canary 页面,其中填充了 GUI 工作流蓝图的字段。

使用以下运行时的 GUI 工作流金丝雀还提供了为每次金丝雀运行执行的步骤的摘要。您可以使用与每个步骤关联的屏幕截图和错误消息来查找失败的根本原因。

  • syn-nodejs-2.0或更高版本

  • syn-python-selenium-1.0或更高版本