本文件說明如何設定運作時間檢查,以驗證 HTTP 回應代碼和受檢查資源傳送的回應資料。根據預設,HTTP 運作時間檢查會驗證回應代碼是否為 2xx
。此外,根據預設,系統不會驗證回應資料。不過,您可以修改這些設定。舉例來說,您可以設定 HTTP 運作時間檢查,接受 2xx
和 3xx
回應代碼。針對所有運作時間檢查,您可以指定回應資料必須或不得包含的值,以便運作時間檢查成功。
這項功能僅支援 Google Cloud 專案。如要設定 App Hub,請選取 App Hub 主機專案或啟用應用程式的資料夾管理專案。
如何驗證回應資料
您可以在建立或編輯運作時間檢查時,設定 Cloud Monitoring 驗證已檢查資源的回應資料。
Google Cloud 控制台
如要建立運作時間檢查來驗證回應資料,請執行下列操作:
-
在 Google Cloud 控制台中,前往
「Uptime checks」頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果。
- 在 Google Cloud 控制台的工具列中,選取您的 Google Cloud 專案。如要設定 App Hub,請選取 App Hub 主機專案或啟用應用程式的資料夾管理專案。
- 按一下「建立運作時間檢查」。
- 輸入標題,然後點選「下一步」。
- 輸入目標,然後點選「下一步」。
設定「回應驗證」:
- 如要驗證回應資料,請確認畫面上顯示「Content matching is enabled」,然後填寫與回應驗證相關的欄位。如要瞭解這些選項,請參閱本文的下一節。
- 針對 HTTP 運作時間檢查,請設定可接受的回應代碼。根據預設,HTTP 運作時間檢查會將任何
2xx
回應標示為成功回應。
按一下「下一步」,然後完成運作時間檢查設定。
Cloud Monitoring API
如要設定運作時間檢查來驗證回應資料,請填入 UptimeCheckConfig
物件的 contentMatchers
陣列。
ContentMatcher
物件包含下列欄位:
matcher
:說明比較方式。如需值清單,請參閱ContentMatcherOption
。請勿使用
CONTENT_MATCHER_OPTION_UNSPECIFIED
值。content
:儲存要搜尋的回應資料值。值為字串常值或規則運算式。jsonPathMatcher
:儲存JsonPathMatcher
物件,說明要搜尋哪個 JSONpath,以及如何執行比較。除非運作時間檢查是驗證特定 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 |
失敗 | 傳遞 |
在前述表格中,「回應資料」欄會說明已檢查資源傳回的資料,而「測試字串」欄則會列出字串文字常值。接下來的兩個欄會指定測試類型和運作時間檢查結果。
使用規則運算式進行搜尋
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} |
傳遞 | 失敗 |
在前述表格中,「回應資料」欄會說明已檢查資源傳回的資料,而「規則運算式」欄則會列出規則運算式。接下來的兩個欄會指定測試類型和運作時間檢查結果。
在 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 回應的公開網站。
將 JSONpath 與數字或字串常值進行比較
Google Cloud 控制台
如要設定運作時間檢查,讓系統在回應資料中的特定 JSONpath 與字串文字相符時通過,請使用下列設定:
- 在「回應內容比對類型」選單中,選取「與 JSONPath 中的內容相符」。
- 在「JSONPath」JSONPath欄位中輸入路徑。
- 在「回應內容」欄位中輸入數字或字串文字。
- 如要驗證設定,請按一下「Test」。
如要設定運作時間檢查,當回應資料中的特定 JSONpath 與字串文字相符時,檢查作業就會失敗,請使用下列設定:
- 在「回應內容比對類型」選單中,選取「與 JSONPath 中的內容不符」。
- 在「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」欄會指出要測試的元素,「Test value」欄則會列出該元素的值。接下來的兩個資料欄會指定測試類型和運作時間檢查結果。
比較 JSONPath 和規則運算式
規則運算式比對支援字串、數字、布林值和空值 JSON 值的比對。
Google Cloud 控制台
如要設定運作時間檢查,讓系統在回應資料中的特定 JSONpath 與規則運算式相符時通過,請使用下列設定:
- 在「回應內容比對類型」選單中,選取「與 JSONPath 中的內容相符」。
- 在「JSONPath」JSONPath欄位中輸入路徑。
- 在「回應內容」欄位中輸入規則運算式。
- 如要驗證設定,請按一下「Test」。
如要設定運作時間檢查,當回應資料中的特定 JSONpath 與規則運算式相符時,檢查作業就會失敗,請使用下列設定:
- 在「回應內容比對類型」選單中,選取「與 JSONPath 中的內容不符」。
- 在「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 欄會列出規則運算式。接下來的兩個資料欄會指定測試類型和運作時間檢查結果。