可用于 Node.js 金丝雀脚本的库函数
本节列出了可用于 Node.js 金丝雀脚本的库函数。
适用于所有金丝雀的 Node.js 库类和函数
以下用于 Node.js 的 CloudWatch Synthetics 库函数适用于所有金丝雀。
Synthetics 类
以下适用于所有金丝雀的函数都属于 Synthetics 类。
addExecutionError(errorMessage, ex);
errorMessage
描述错误,
ex
指遇到的异常
您可以使用
addExecutionError
来设置金丝雀的执行错误。它会在不中断脚本执行的情况下导致金丝雀失败。它也不会影响
successPercent
指标。
只有当错误对于指示金丝雀脚本成功或故障并不重要时,才应将错误作为执行错误进行跟踪。
以下是使用
addExecutionError
的示例。您将会监控端点的可用性,并在页面加载完成后捕获屏幕截图。由于捕获屏幕截图故障并不会决定端点的可用性,因此您可以捕获在截图时遇到的任何错误,并将它们添加为执行错误。可用性指标仍会指示端点已启动并正在运行,但金丝雀状态会被标记为失败。以下示例代码块将会捕获此类错误并将其添加为执行错误。
try { await synthetics.takeScreenshot(stepName, "loaded"); } catch(ex) { synthetics.addExecutionError('Unable to take screenshot ', ex);此类仅在
syn-nodejs-2.1或更高版本的运行时中可用。您可以使用 SyntheticsConfiguration 类来配置 Synthetics 库函数的行为。例如,您可以使用此类将
executeStep()函数配置为不捕获屏幕截图。您可以在全局级别设置 CloudWatch Synthetics 配置,这些配置会应用于金丝雀的所有步骤。您还可以通过传递配置键/值对,在步骤级别覆盖这些配置。
您可以在步骤级别传入选项。有关示例,请参阅 async executeStep(stepName, functionToExecute, [stepConfig]); 和 executeHttpStep(stepName, requestOptions, [callback], [stepConfig])。
函数定义:
includeRequestHeaders(布尔值)– 是否在报告中包含请求标头。默认为false。
includeResponseHeaders(布尔值)– 是否在报告中包含响应标头。默认为false。
restrictedHeaders(数组)– 要忽略的标头值列表(如果包含标头)。这对请求标头和响应标头均适用。例如,您可以将 includeRequestHeaders 传递为true并将 restrictedHeaders 传递为['Authorization'],来隐藏您的凭证。
includeRequestBody(布尔值)– 是否在报告中包含请求体。默认为false。
includeResponseBody(布尔值)– 是否在报告中包含响应体。默认为false。
CloudWatch 指标的相关 setConfig(options)
对于使用
syn-nodejs-puppeteer-3.1
或更高版本的金丝雀,
setConfig
的
(options)
可包含以下布尔参数,这些参数决定将由金丝雀发布的指标。其中每个选项的默认值均为
true
。以
aggregated
开头的选项决定是否不带
CanaryName
维度发出指标。您可以使用该等指标查看所有金丝雀的聚合结果。其他选项决定是否带
CanaryName
维度发出指标。您可以使用该等指标查看每个金丝雀的结果。
有关金丝雀发出的 CloudWatch 指标的列表,请参阅
金丝雀发布的 CloudWatch 指标
。
-
failedCanaryMetric
(布尔值)– 是否发出此金丝雀的
Failed
指标(带
CanaryName
维度)。默认为
true
。
-
failedRequestsMetric
(布尔值)– 是否发出此金丝雀的
Failed requests
指标(带
CanaryName
维度)。默认为
true
。
-
_2xxMetric
(布尔值)– 是否发出此金丝雀的
2xx
指标(带
CanaryName
维度)。默认为
true
。
-
_4xxMetric
(布尔值)– 是否发出此金丝雀的
4xx
指标(带
CanaryName
维度)。默认为
true
。
-
_5xxMetric
(布尔值)– 是否发出此金丝雀的
5xx
指标(带
CanaryName
维度)。默认为
true
。
-
stepDurationMetric
(布尔值)– 是否发出此金丝雀的
Step duration
指标(带
CanaryName
StepName
维度)。默认为
true
。
-
stepSuccessMetric
(布尔值)– 是否发出此金丝雀的
Step success
指标(带
CanaryName
StepName
维度)。默认为
true
。
-
aggregatedFailedCanaryMetric
(布尔值)– 是否发出此金丝雀的
Failed
指标(不带
CanaryName
维度)。默认为
true
。
-
aggregatedFailedRequestsMetric
(布尔值)– 是否发出此金丝雀的
Failed Requests
指标(不带
CanaryName
维度)。默认为
true
。
-
aggregated2xxMetric
(布尔值)– 是否发出此金丝雀的
2xx
指标(不带
CanaryName
维度)。默认为
true
。
-
aggregated4xxMetric
(布尔值)– 是否发出此金丝雀的
4xx
指标(不带
CanaryName
维度)。默认为
true
。
-
aggregated5xxMetric
(布尔值)– 是否发出此金丝雀的
5xx
指标(不带
CanaryName
维度)。默认为
true
。
-
visualMonitoringSuccessPercentMetric
(布尔值)– 是否发出此金丝雀的
visualMonitoringSuccessPercent
指标。默认为
true
。
-
visualMonitoringTotalComparisonsMetric
(布尔值)– 是否发出此金丝雀的
visualMonitoringTotalComparisons
指标。默认为
false
。
-
stepsReport
(布尔值)– 是否报告步骤执行摘要。默认为
true
。
-
includeUrlPassword
(布尔值)– 是否包含 URL 中显示的密码。预设情况下,URL 中显示的密码会在日志和报告中进行编辑,以防泄露敏感数据。默认为
false
。
-
restrictedUrlParameters
(数组)– 要编辑的 URL 路径或查询参数的列表。这适用于出现在日志、报告和错误中的 URL。此参数区分大小写。您可以传递星号 (*) 作为值来编辑所有 URL 路径和查询参数值。默认值为空数组。
-
logRequest
(布尔值)– 是否将每个请求都记录在金丝雀日志中。对于 UI 金丝雀,这会记录浏览器发送的每个请求。默认为
true
。
-
logResponse
(布尔值)– 是否将每个响应都记录在金丝雀日志中。对于 UI 金丝雀,这会记录浏览器收到的每个响应。默认为
true
。
-
logRequestBody
(布尔值)– 是否随请求一起将请求体记录在金丝雀日志中。仅当
logRequest
为
true
时,此配置才适用。默认为
false
。
-
logResponseBody
(布尔值)– 是否随响应一起将响应体记录在金丝雀日志中。仅当
logResponse
为
true
时,此配置才适用。默认为
false
。
-
logRequestHeaders
(布尔值)– 是否随请求一起将请求标头记录在金丝雀日志中。仅当
logRequest
为
true
时,此配置才适用。默认为
false
。
请注意,
includeRequestHeaders
会在构件中启用标头。
-
logResponseHeaders
(布尔值)– 是否随响应一起将响应标头记录在金丝雀日志中。仅当
logResponse
为
true
时,此配置才适用。默认为
false
。
请注意,
includeResponseHeaders
会在构件中启用标头。
注意
始终会发出每个金丝雀的
Duration
和
SuccessPercent
指标,这两个指标都会带有和不带
CanaryName
指标。
用于启用或禁用指标的方法
enableAggregatedRequestMetrics()
启用金丝雀发出以不带
CanaryName
维度形式发出的所有请求指标。
enableRequestMetrics()
启用所有请求指标,包括每个金丝雀的指标和跨所有金丝雀聚合的指标。
enableStepMetrics()
启用所有步骤指标,包括步骤成功指标和步骤持续时间指标。
get2xxMetric()
返回金丝雀是否发出带
CanaryName
维度的
2xx
指标。
get4xxMetric()
返回金丝雀是否发出带
CanaryName
维度的
4xx
指标。
get5xxMetric()
返回金丝雀是否发出带
CanaryName
维度的
5xx
指标。
getAggregated2xxMetric()
返回金丝雀是否发出不带维度的
2xx
指标。
getAggregated4xxMetric()
返回金丝雀是否发出不带维度的
4xx
指标。
getAggregatedFailedCanaryMetric()
返回金丝雀是否发出不带维度的
Failed
指标。
getAggregatedFailedRequestsMetric()
返回金丝雀是否发出不带维度的
Failed requests
指标。
getAggregated5xxMetric()
返回金丝雀是否发出不带维度的
5xx
指标。
getFailedCanaryMetric()
返回金丝雀是否发出带
CanaryName
维度的
Failed
指标。
getFailedRequestsMetric()
返回金丝雀是否发出带
CanaryName
维度的
Failed requests
指标。
getStepDurationMetric()
返回金丝雀是否发出带有此金丝雀的
CanaryName
维度的
Duration
指标。
getStepSuccessMetric()
返回金丝雀是否发出带有此金丝雀的
CanaryName
维度的
StepSuccess
指标。
with2xxMetric(_2xxMetric)
接受一个布尔参数,该参数指定是否为此金丝雀发出带
CanaryName
维度的
2xx
指标。
with4xxMetric(_4xxMetric)
接受一个布尔参数,该参数指定是否为此金丝雀发出带
CanaryName
维度的
4xx
指标。
with5xxMetric(_5xxMetric)
接受一个布尔参数,该参数指定是否为此金丝雀发出带
CanaryName
维度的
5xx
指标。
withAggregated2xxMetric(aggregated2xxMetric)
接受一个布尔参数,该参数指定是否为此金丝雀发出不带维度的
2xx
指标。
withAggregated4xxMetric(aggregated4xxMetric)
接受一个布尔参数,该参数指定是否为此金丝雀发出不带维度的
4xx
指标。
withAggregated5xxMetric(aggregated5xxMetric)
接受一个布尔参数,该参数指定是否为此金丝雀发出不带维度的
5xx
指标。
withAggregatedFailedCanaryMetric(aggregatedFailedCanaryMetric)
接受一个布尔参数,该参数指定是否为此金丝雀发出不带维度的
Failed
指标。
withAggregatedFailedRequestsMetric(aggregatedFailedRequestsMetric)
接受一个布尔参数,该参数指定是否为此金丝雀发出不带维度的
Failed
requests
指标。
withFailedCanaryMetric(failedCanaryMetric)
接受一个布尔参数,该参数指定是否为此金丝雀发出带
CanaryName
维度的
Failed
指标。
withFailedRequestsMetric(failedRequestsMetric)
接受一个布尔参数,该参数指定是否为此金丝雀发出带
CanaryName
维度的
Failed
requests
指标。
withStepDurationMetric(stepDurationMetric)
接受一个布尔参数,该参数指定是否为此金丝雀发出带
CanaryName
维度的
Duration
指标。
withStepSuccessMetric(stepSuccessMetric)
接受一个布尔参数,该参数指定是否为此金丝雀发出带
CanaryName
维度的
StepSuccess
指标。
withRestrictedUrlParameters()
接受要编辑的 URL 路径或查询参数的数组。这适用于出现在日志、报告和错误中的 URL。您可以传递星号 (*) 作为值来编辑所有 URL 路径和查询参数值
withLogRequest()
接受一个布尔参数,该参数指定是否将每个请求记录在金丝雀的日志中。
withLogResponse()
接受一个布尔参数,该参数指定是否将每个响应记录在金丝雀的日志中。
withLogRequestBody()
接受一个布尔参数,该参数指定是否将每个请求体记录在金丝雀的日志中。
withLogResponseBody()
接受一个布尔参数,该参数指定是否将每个响应体记录在金丝雀的日志中。
withLogRequestHeaders()
接受一个布尔参数,该参数指定是否将每个请求标头记录在金丝雀的日志中。
withLogResponseHeaders()
接受一个布尔参数,该参数指定是否将每个响应标头记录在金丝雀日志中。
getHarFile()
返回金丝雀是否创建 HAR 文件。
getStepsReport()
返回金丝雀是否报告步骤执行摘要。
getIncludeUrlPassword()
返回金丝雀是否在日志和报告中包含 URL 中出现的密码。
getRestrictedUrlParameters()
返回金丝雀是否编辑 URL 路径或查询参数。
getLogRequest()
返回金丝雀是否将每个请求记录在金丝雀的日志中。
getLogResponse()
返回金丝雀是否将每个响应记录在金丝雀的日志中。
getLogRequestBody()
返回金丝雀是否将每个请求体记录在金丝雀的日志中。
getLogResponseBody()
返回金丝雀是否将每个响应体记录在金丝雀的日志中。
getLogRequestHeaders()
返回金丝雀是否将每个请求标头记录在金丝雀的日志中。
getLogResponseHeaders()
返回金丝雀是否将每个响应标头记录在金丝雀的日志中。
-
withIncludeRequestHeaders
(includeRequestHeaders)
-
withIncludeResponseHeaders
(包括响应标题)
-
withRestrictedHeaders
(restrictedHeaders)
-
withIncludeRequestBody
(includeRequestBody)
-
withIncludeResponseBody
(includeResponseBody)
-
enableReportingOptions
() – 启用所有报告选项--
includeRequestHeaders
、
includeResponseHeaders
、
includeRequestBody
和
includeResponseBody
。
-
disableReportingOptions
() – 禁用所有报告选项--
includeRequestHeaders
、
includeResponseHeaders
、
includeRequestBody
和
includeResponseBody
。
用于 UI 金丝雀的 setConfig(options)
对于 UI 金丝雀,
setConfig
可包含以下布尔参数:
disableStepScreenshots()
禁用所有屏幕截图选项(screenshotOnStepStart、screenshotOnStepSuccess 和 screenshotOnStepFailure)。
enableStepScreenshots()
启用所有屏幕截图选项(screenshotOnStepStart、screenshotOnStepSuccess 和 screenshotOnStepFailure)。预设情况下,这些方法均未启用。
getScreenshotOnStepFailure()
返回金丝雀是否在步骤失败后捕获屏幕截图。
getScreenshotOnStepStart()
返回金丝雀是否在开始步骤之前捕获屏幕截图。
getScreenshotOnStepSuccess()
返回金丝雀是否在成功完成步骤后捕获屏幕截图。
screenshotOnStepStart: true,
screenshotOnStepSuccess: false,
screenshotOnStepFailure: false
synConfig.withScreenshotOnStepStart(false).withScreenshotOnStepSuccess(true).withScreenshotOnStepFailure(true)
若要禁用所有屏幕截图,请使用 disableStepScreenshots() 函数,如本示例所示。
synConfig.disableStepScreenshots();
您可以在代码中的任何位置启用和禁用屏幕截图。例如,若要仅禁用一个步骤的屏幕截图,请在运行该步骤之前禁用屏幕截图,然后在该步骤后启用它们。
用于 API 金丝雀的 setConfig(options)
对于 API 金丝雀,
setConfig
可包含以下布尔参数:
可视化监控
可视化监控将在金丝雀运行期间捕获的屏幕截图与在基准金丝雀运行期间捕获的屏幕截图进行比较。如果两个屏幕截图之间的差异超出阈值百分比,则金丝雀失败,您可以在金丝雀运行报告中看到以高亮颜色突出显示的差异区域。运行
syn-puppeteer-node-3.2
和更高版本的金丝雀支持可视化监控。运行 Python 和 Selenium 的金丝雀中目前不支持可视化监控。
若要启用可视化监控,请将以下代码行添加到金丝雀脚本中。有关更多信息,请参阅
SyntheticsConfiguration 类
。
syntheticsConfiguration.withVisualCompareWithBaseRun(true);
将此行添加到脚本后,金丝雀首次成功运行时,它会使用在该运行期间捕获的屏幕截图作为比较基准。在金丝雀的该首次运行之后,您可以使用 CloudWatch 控制台编辑金丝雀以执行以下任一操作:
-
将金丝雀的下一次运行设置为新基准。
-
在当前基准屏幕截图上绘制边界,以指定在可视化比较过程中要忽略的屏幕截图区域。
-
删除屏幕截图,使其不用于可视化监控。
有关使用 CloudWatch 控制台编辑金丝雀的更多信息,请参阅
编辑或删除金丝雀脚本
。
可视化监控的其他选项
syntheticsConfiguration.withVisualVarianceThresholdPercentage(desiredPercentage)
设置可视化对比中屏幕截图差异的可接受百分比。
syntheticsConfiguration.withVisualVarianceHighlightHexColor("#fafa00")
设置在查看使用可视化监控的金丝雀运行报告时指明差异区域的突出显示颜色。
syntheticsConfiguration.withFailCanaryRunOnVisualVariance(failCanary)
设置当存在超过阈值的可视化差异时金丝雀是否失败。默认为金丝雀失败。
Synthetics Logger
SyntheticsLogger 将日志写入控制台和同一日志级别的本地日志文件。仅当日志级别与所调用的日志函数所需的日志记录级别相同或比其级别低时,此日志文件才会写入到这两个位置。
本地日志文件中的日志记录语句前面加上“DEBUG:”、“INFO:”等,以便与所调用的函数的日志级别相匹配。
如果您希望在与 Synthetics 金丝雀日志记录相同的日志级别运行 Synthetics 库,可以使用 SyntheticsLogger。
如果要创建上载到 S3 结果位置的日志文件,不需要使用 SyntheticsLogger。您可以在
/tmp
文件夹中创建不同的日志文件。在
/tmp
文件夹下创建的任何文件都会作为构件上传到 S3 中的结果位置。
要使用 Synthetics 库日志记录程序,请执行以下操作:
const log = require('SyntheticsLogger');
有用的函数定义:
log.debug(
message
,
ex
);
参数:
message
是要记录的消息。
ex
是要记录的异常(如果有)。
log.debug("Starting step - login.");
log.error(
message
,
ex
);
参数:
message
是要记录的消息。
ex
是要记录的异常(如果有)。
try {
await login();
catch (ex) {
log.error("Error encountered in step - login.", ex);
log.info(message, ex);
参数:message 是要记录的消息。ex 是要记录的异常(如果有)。
log.info("Successfully completed step - login.");
log.log(message, ex);
这是 log.info 的一个别名。
参数:message 是要记录的消息。ex 是要记录的异常(如果有)。
log.log("Successfully completed step - login.");
log.warn(message, ex);
参数:message 是要记录的消息。ex 是要记录的异常(如果有)。
log.warn("Exception encountered trying to publish CloudWatch Metric.", ex);
SyntheticsLogHelper 类
SyntheticsLogHelper 类在 syn-nodejs-puppeteer-3.2 和更高版本的运行时中可用。其已在 CloudWatch Synthetics 库中初始化,并配置了 Synthetics 配置。您可以将它作为依赖项添加到脚本中。此类使您能够清理 URL、标头和错误消息,以编辑敏感信息。
注意
根据 Synthetics 配置设置 restrictedUrlParameters,Synthetics 会对其记录的所有 URL 和错误消息进行清理,然后再将它们纳入日志、报告、HAR 文件和金丝雀运行错误中。仅当您在脚本中记录 URL 或错误时,才必须使用 getSanitizedUrl 或 getSanitizedErrorMessage。除了脚本引发的金丝雀错误之外,Synthetics 不会存储任何金丝雀构件。金丝雀运行构件存储在您的客户账户中。有关更多信息,请参阅Synthetics 金丝雀的安全注意事项。
getSanitizedUrl(url, stepConfig = null)
此函数在 syn-nodejs-puppeteer-3.2 和更高版本中可用。它根据配置返回经过清理的 url 字符串。您可以通过设置 restrictedUrlParameters 属性选择编辑敏感 URL 参数(如密码和 access_token)。预设情况下,会编辑 URL 中的密码。如果需要,您可以通过将 includeUrlPassword 设置为 true 来启用 URL 密码。
如果传入的 URL 不是有效 URL,此函数会引发一个错误。
url 是一个字符串,也是要清理的 URL。
StepConfig(可选)覆盖此函数的全局 Synthetics 配置。如果 stepConfig 未传入,则使用全局配置清理 URL。