本文档介绍了如何配置拨测来验证
已检查的资源发送的 HTTP 响应代码和响应数据。修改者
默认情况下,HTTP 拨测会验证响应代码是否为 2xx
。此外,
默认情况下,响应数据未经验证。不过,您可以修改这些
设置。例如,您可以将 HTTP 拨测配置为接受
2xx
和 3xx
响应代码。对于所有拨测
可以指定一个值
必须包含(或不能包含)才能确保拨测成功。
如何验证响应数据
您可以配置 Cloud Monitoring 来验证以下来源的响应数据: 请在创建或修改拨测时检查已检查的资源。
Google Cloud 控制台
创建拨测以验证 响应数据,请执行以下操作:
-
在 Google Cloud 控制台中,前往
拨测页面:
如果您使用搜索栏查找此页面,请选择子标题为监控的结果。
- 点击 Create Uptime check。
- 输入标题,然后点击下一步。
- 输入目标,然后点击下一步。
配置响应验证:
- 如需验证响应数据,请确保已启用内容匹配 然后填写与响应验证相关的字段。 有关这些选项的详情, 文档。
- 对于 HTTP 拨测,请配置可接受的响应代码。
默认情况下,HTTP 拨测会将任何
将
2xx
响应视为成功响应。
点击 Next,然后完成拨测配置。
Cloud Monitoring API
要配置拨测以验证响应数据,请执行以下操作:
填充 contentMatchers
数组的
UptimeCheckConfig
对象。
ContentMatcher
对象
包含以下字段:
matcher
:描述如何执行比较。 有关值列表,请参阅ContentMatcherOption
.请勿使用
CONTENT_MATCHER_OPTION_UNSPECIFIED
值。content
:存储要在响应数据中搜索的值。通过 value 为字符串字面量或正则表达式。jsonPathMatcher
:存储JsonPathMatcher
对象, 描述了要搜索的 JSON 路径以及如何执行比较。除非拨测正在验证 特定 JSONpath 的路径。
本文档的其余部分介绍了如何使用 选项。
用于验证响应数据的选项
本部分介绍了您可以 用于验证由已检查的资源发送的响应。对于每种策略 您需要指定一个值,以及能否在响应数据中找到该值 则会导致拨测通过或失败。
系统可能不会搜索已检查的资源的完整响应:
- HTTP 和 HTTPS 拨测:第一步 搜索 4 MB。
- TCP 拨测:搜索前 1 MB。
搜索字面量子字符串
Google Cloud 控制台
要将拨测配置为在响应数据包含 字面量子字符串,请使用以下设置:
- 在响应内容匹配类型菜单中选择包含。
- 在响应内容字段中输入字面量子字符串。
- 如需验证配置,请点击 Test。
要将拨测配置为在响应数据包含 字面量子字符串,请使用以下设置:
- 在响应内容匹配类型菜单中选择不包含。
- 在响应内容字段中输入字面量子字符串。
- 如需验证配置,请点击 Test。
Cloud Monitoring API
要将拨测配置为在响应数据包含 字面量子字符串,请使用以下值:
... "contentMatchers": [ { "content": "Set to the string to be matched.", "matcher": "CONTAINS_STRING" } ], ...
要将拨测配置为在响应数据包含 字面量子字符串,请使用以下值:
... "contentMatchers": [ { "content": "Set to the string to be matched.", "matcher": "NOT_CONTAINS_STRING" } ], ...
下表显示了不同 响应数据、测试字符串和测试类型:
拨测状态 | |||
---|---|---|---|
响应数据 | 测试字符串 | 包含 | 不包含 |
abcd |
abcd |
通过 | 未通过 |
abc |
abcd |
未通过 | 通过 |
abc |
a |
通过 | 未通过 |
Uptime Checks |
Uptime |
通过 | 未通过 |
Uptime Checks |
uptime |
未通过 | 通过 |
在上表中,响应数据列描述了数据 所检查的资源返回的,而 Test string 列会列出 字符串字面量。接下来的两列分别指定了测试的类型 运行时间检查的结果
使用正则表达式进行搜索
Google Cloud 控制台
将拨测配置为在响应数据匹配时通过 正则表达式,请使用以下设置:
- 在响应内容匹配类型菜单中选择匹配正则表达式。
- 在响应内容字段中输入正则表达式。
- 如需验证配置,请点击 Test。
配置在响应数据匹配时拨测失败 正则表达式,请使用以下设置:
- 在响应内容匹配类型菜单中选择与正则表达式不匹配。
- 在响应内容字段中输入正则表达式。
- 如需验证配置,请点击 Test。
Cloud Monitoring API
将拨测配置为在响应数据匹配时通过 正则表达式,请使用以下值:
... "contentMatchers": [ { "content": "Set to the regular expression to be matched.", "matcher": "MATCHES_REGEX" } ], ...
配置在响应数据匹配时拨测失败 正则表达式,请使用以下值:
... "contentMatchers": [ { "content": "Set to the regular expression to be matched.", "matcher": "NOT_MATCHES_REGEX" } ], ...
下表显示了不同 响应数据、正则表达式和测试类型:
拨测状态 | |||
---|---|---|---|
响应数据 | 正则表达式 | 匹配正则表达式 | 与正则表达式不匹配 |
abcd |
abcd |
通过 | 未通过 |
Uptime Checks |
[uU]ptime |
通过 | 未通过 |
Uptime Checks |
[a-z]{6} |
未通过 | 通过 |
Uptime Checks |
[a-zA-Z]{6} |
通过 | 未通过 |
在上表中,响应数据列描述了数据 所检查的资源返回的部分,而 Regex 列会列出 正则表达式。接下来的两列分别指定了测试的类型 运行时间检查的结果
搜索 JSON 响应中的特定字段
您可以配置拨测来验证 JSONpath。如果您选择 JSONpath 测试,此测试会将路径值与数字、字符串字面量 或正则表达式:
指定 JSONpath 时,您必须使用 $.
和
然后在该字段后面添加特定字段标识符当 JSON 响应返回
包含一系列元素,请使用方括号 []
来标识
要匹配的特定数组元素。以下示例展示了
路径语法:
$.type
匹配根对象的type
字段。$.[0].address.city
与存储的address
对象中的city
字段匹配 。$.content[0].phone
与第一个数组元素的phone
字段匹配content
字段中的值。content
字段是根对象的子项。
您可以将正常运行时间测试配置为匹配多个字段。考虑使用 以下 JSON:
[
{
...
"address": {
...
"city": "Gwenborough",
"geo": {
"lat": "-37.3159",
"lng": "81.1496"
}
},
},
...
]
如需匹配第一个数组元素中 geo
字段的整个路径,请使用以下代码:
将 JSONpath 设置为 $.[0].address.geo
,然后输入完整值
在内容字段中:
{
"lat": "-37.3159",
"lng": "81.1496"
}
如果你有兴趣尝试一下这些选项,可以找 返回 JSON 响应的网站。例如: 请参阅 JSON 测试。
将 JSONpath 与数字或字符串字面量进行比较
Google Cloud 控制台
要将拨测配置为在 响应数据与字符串字面量匹配,请使用以下设置:
- 在响应内容匹配类型菜单中选择 Matches at JSONPath。
- 在 JSONPath 字段中输入路径。
- 在响应内容字段中输入数字或字符串字面量。
- 如需验证配置,请点击 Test。
将拨测配置为在 响应数据与字符串字面量匹配,请使用以下设置:
- 在响应内容匹配类型菜单中选择与 JSONPath 不匹配。
- 在 JSONPath 字段中输入路径。
- 在响应内容字段中输入数字或字符串字面量。
- 如需验证配置,请点击 Test。
Cloud Monitoring API
要将拨测配置为在
JSON 格式的响应匹配数字或字符串字面量,
对 ContentMatcher
对象使用以下值:
... "contentMatchers": [ { "content" : "Set to a number, a boolean, or the string to be matched.", "matcher" : "MATCHES_JSON_PATH", "jsonPathMatcher" : { "jsonPath" : "Set to the JSONpath.", "jsonMatcher" : "EXACT_MATCH" } ], ...
将拨测配置为在
JSON 格式的响应匹配数字或字符串字面量,
对 ContentMatcher
对象使用以下值:
... "contentMatchers": [ { "content" : "Set to a number, a boolean, or the string to be matched.", "matcher" : "NOT_MATCHES_JSON_PATH", "jsonPathMatcher" : { "jsonPath" : "Set to the JSONpath.", "jsonMatcher" : "EXACT_MATCH" } ], ...
为了说明 JSONpath 字符串匹配测试的运行方式, 请考虑以下 JSON 响应数据:
{ "name": "Sample Uptime Check", "type": "JSONpath", "content": [ { "id": 1, "phone": "1234567890", "alias": "Exact", "enabled": true, }, { "id": 2, "phone": "1234512345", "alias": "Regex", "enabled": false, } ] }
下表显示了上一个响应的拨测状态。 但对于不同的路径,测试值和测试类型:
拨测状态 | |||
---|---|---|---|
JSONpath | 测试值 | JSONpath 匹配 | JSONpath 不匹配 |
$. |
"JSONpath" |
通过 | 未通过 |
$. |
"Sample" |
未通过 | 通过 |
$. |
"Sample Uptime Check" |
通过 | 未通过 |
$. |
1 |
通过 | 未通过 |
$. |
"Exact" |
通过 | 未通过 |
$. |
true |
通过 | 未通过 |
在上表中,JSONpath 列标识了要 测试值列会列出该值。接下来的两列 指定测试类型和拨测的结果。
将 JSONpath 与正则表达式进行比较
正则表达式匹配支持匹配字符串、数字、布尔值和 null JSON 值。
Google Cloud 控制台
要将拨测配置为在 与正则表达式匹配,请使用以下设置:
- 在响应内容匹配类型菜单中选择 Matches at JSONPath。
- 在 JSONPath 字段中输入路径。
- 在响应内容字段中输入正则表达式。
- 如需验证配置,请点击 Test。
将拨测配置为在 与正则表达式匹配,请使用以下设置:
- 在响应内容匹配类型菜单中选择与 JSONPath 不匹配。
- 在 JSONPath 字段中输入路径。
- 在响应内容字段中输入正则表达式。
- 如需验证配置,请点击 Test。
Cloud Monitoring API
要将拨测配置为在
JSON 格式的响应与正则表达式匹配,则使用以下
ContentMatcher
对象的值:
... "contentMatchers": [ { "content" : "Set to the regular expression to be matched." "matcher" : "MATCHES_JSON_PATH", "jsonPathMatcher" : { "jsonPath" : "Set to the JSONpath.", "jsonMatcher" : "REGEX_MATCH" } ], ...
将拨测配置为在
JSON 格式的响应与正则表达式匹配,则使用以下
ContentMatcher
对象的值:
... "contentMatchers": [ { "content" : "Set to the regular expression to be matched.", "matcher" : "NOT_MATCHES_JSON_PATH", "jsonPathMatcher" : { "jsonPath" : "Set to the JSONpath.", "jsonMatcher" : "REGEX_MATCH" } ], ...
为了说明 JSONpath 正则表达式测试的运行方式, 请考虑以下 JSON 响应数据:
{ "name": "Sample Uptime Check", "type": "JSONpath", "content": [ { "id": 1, "phone": "1234567890", "alias": "Exact", "enabled": true, }, { "id": 2, "phone": "1234512345", "alias": "Regex", "enabled": false, } ] }
下表显示了上一个响应的拨测状态。 但对于不同的路径、正则表达式和测试类型:
拨测状态 | |||
---|---|---|---|
JSONpath | 正则表达式 | JSONpath 与正则表达式匹配 | JSONpath 与正则表达式不匹配 |
$. |
[A-Z]{4}Path |
通过 | 未通过 |
$. |
Sample |
未通过 | 通过 |
$. |
. |
通过 | 未通过 |
$. |
2 |
通过 | 未通过 |
$. |
"[12345]{2}" |
通过 | 未通过 |
$. |
f. |
通过 | 未通过 |
在上表中,JSONpath 列标识了要 Regex 列将列出相应正则表达式。接下来的两列 指定测试类型和拨测的结果。