本文說明如何設定運作時間檢查,以驗證 HTTP 回應代碼和受檢查資源傳送的回應資料。根據預設,HTTP 運作時間檢查會驗證回應代碼是否為 2xx
。此外,系統預設不會驗證回應資料。不過,您可以修改這些設定。舉例來說,您可以將 HTTP 運作時間檢查設為接受 2xx
和 3xx
回應代碼。針對所有運作時間檢查,您可以指定回應資料必須或不得包含的值,運作時間檢查才會成功。
這項功能僅支援 Google Cloud 專案。 如果是 App Hub 設定,請選取 App Hub 主專案或管理專案。
如何驗證回應資料
建立或編輯運作時間檢查時,您可以設定 Cloud Monitoring,驗證所檢查資源的回應資料。
Google Cloud 控制台
如要建立運作時間檢查來驗證回應資料,請執行下列操作:
-
前往 Google Cloud 控制台的「運作時間檢查」
頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果。
- 在 Google Cloud 控制台的工具列中,選取您的 Google Cloud 專案。如要進行 App Hub 設定,請選取 App Hub 主專案或管理專案。
- 按一下「建立運作時間檢查」。
- 輸入標題,然後點選「下一步」。
- 輸入目標,然後點選「下一步」。
設定「回應驗證」:
- 如要驗證回應資料,請確認系統顯示「已啟用內容比對」,然後填寫與回應驗證相關的欄位。 如要瞭解這些選項,請參閱本文的下一節。
- 如果是 HTTP 運作時間檢查,請設定可接受的回應代碼。
根據預設,HTTP 運作時間檢查會將任何
2xx
回應標示為成功回應。
按一下「下一步」,然後完成運作時間檢查設定。
Cloud Monitoring API
如要設定運作時間檢查來驗證回應資料,請填入 UptimeCheckConfig
物件的 contentMatchers
陣列。
ContentMatcher
物件包含下列欄位:
matcher
:說明比較方式。 如需值清單,請參閱ContentMatcherOption
。請勿使用
CONTENT_MATCHER_OPTION_UNSPECIFIED
值。content
:儲存要在回應資料中搜尋的值。值是字串常值或規則運算式。jsonPathMatcher
:儲存JsonPathMatcher
物件,說明要搜尋的 JSON 路徑,以及如何執行比較。除非運作時間檢查正在驗證特定 JSONpath,否則請省略這個欄位。
這份文件的其餘部分將說明如何使用內容比對選項。
驗證回應資料的選項
本節說明可用於驗證受檢查資源所傳送回應的字串比對策略。針對每項策略,您要指定值,並指出在回應資料中找到該值時,運作時間檢查會通過還是失敗。
系統可能不會搜尋已查核資源的完整回覆:
- HTTP 和 HTTPS 運作時間檢查:系統會搜尋前 4 MB 的資料。
- TCP 運作時間檢查:搜尋前 1 MB 的內容。
搜尋字串常值子字串
Google Cloud 控制台
如要設定運作時間檢查,在回應資料包含字串常值子字串時通過檢查,請使用下列設定:
- 在「回應內容比對類型」選單中選取「包含」。
- 在「回應內容」欄位中輸入字串字面值子字串。
- 如要驗證設定,請按一下「測試」。
如要設定運作時間檢查,在回應資料包含字串常值子字串時失敗,請使用下列設定:
- 在「回應內容比對類型」選單中選取「不包含」。
- 在「回應內容」欄位中輸入字串字面值子字串。
- 如要驗證設定,請按一下「測試」。
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 |
失敗 | 傳遞 |
在上表中,「回應資料」欄說明已勾選資源傳回的資料,「測試字串」欄則列出字串常值。接下來的兩欄會指定測試類型和運作時間檢查結果。
使用規則運算式搜尋
Google Cloud 控制台
如要設定運作時間檢查,讓回應資料符合規則運算式時通過檢查,請使用下列設定:
- 在「回應內容比對類型」選單中,選取「與規則運算式相符」。
- 在「回應內容」欄位中輸入規則運算式。
- 如要驗證設定,請按一下「測試」。
如要設定運作時間檢查,在回應資料符合規則運算式時失敗,請使用下列設定:
- 在「回應內容比對類型」選單中,選取「與規則運算式不符」。
- 在「回應內容」欄位中輸入規則運算式。
- 如要驗證設定,請按一下「測試」。
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 時,您必須使用 $.
指定根物件,然後加上特定欄位 ID。如果 JSON 回應包含元素陣列,請使用方括號 []
找出要比對的特定陣列元素。以下範例說明路徑語法:
$.type
與根物件的type
欄位相符。$.[0].address.city
與儲存在 JSON 回應第一個陣列元素中的address
物件的city
欄位相符。$.content[0].phone
與content
欄位第一個陣列元素的phone
欄位相符。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 路徑與數字或字串常值比較
Google Cloud 控制台
如要設定運作時間檢查,讓回應資料中的特定 JSONpath 與字串常值相符時通過檢查,請使用下列設定:
- 在「回應內容比對類型」選單中,選取「與 JSONPath 中的內容相符」。
- 在「JSONPath」JSONPath欄位中輸入路徑。
- 在「回應內容」欄位中輸入數字或字串常值。
- 如要驗證設定,請按一下「測試」。
如要設定運作時間檢查,在回應資料中的特定 JSONpath 與字串常值相符時失敗,請使用下列設定:
- 在「回應內容比對類型」選單中,選取「與 JSONPath 中的內容不符」。
- 在「JSONPath」JSONPath欄位中輸入路徑。
- 在「回應內容」欄位中輸入數字或字串常值。
- 如要驗證設定,請按一下「測試」。
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 與規則運算式
正規運算式比對支援比對字串、數字、布林值和空值 JSON 值。
Google Cloud 控制台
如要設定運作時間檢查,在回應資料中的特定 JSONpath 符合規則運算式時通過檢查,請使用下列設定:
- 在「回應內容比對類型」選單中,選取「與 JSONPath 中的內容相符」。
- 在「JSONPath」JSONPath欄位中輸入路徑。
- 在「回應內容」欄位中輸入規則運算式。
- 如要驗證設定,請按一下「測試」。
如要設定運作時間檢查,在回應資料中的特定 JSON 路徑與規則運算式相符時失敗,請使用下列設定:
- 在「回應內容比對類型」選單中,選取「與 JSONPath 中的內容不符」。
- 在「JSONPath」JSONPath欄位中輸入路徑。
- 在「回應內容」欄位中輸入規則運算式。
- 如要驗證設定,請按一下「測試」。
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」欄位則會列出規則運算式。接下來兩欄會指定測試類型和運作時間檢查結果。