如果建立、執行或刪除合成監控器或運作時間檢查時發生問題,或是未收到預期的快訊通知,您可以檢查執行記錄、指標和追蹤記錄,診斷問題原因。您也可以解決涉及 IAM 權限、VPC Service Controls 邊界和私人網路目標的常見設定錯誤。
尋找記錄
為協助您將要求與記錄檔建立關聯,Cloud Monitoring 傳送的 HTTP 和 HTTPS 要求會包含 Check-Id 標頭,其中儲存相關聯合成監控或正常運作時間檢查的 ID。如要查看合成監控器和運作時間檢查的記錄,請按照下列步驟操作:
-
前往 Google Cloud 控制台的 「Logs Explorer」頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Logging」的結果。
- 在 Google Cloud 控制台的工具列中,選取 Google Cloud 專案。如要進行 App Hub 設定,請選取 App Hub 主專案或管理專案。
執行下列任一操作:
如要找出與合成監控器或運作時間檢查相關聯的所有記錄,請依資源類型查詢。你可以使用「資源」選單,或輸入查詢。
如果是運作時間檢查,請在「資源」選單中選取「運作時間檢查網址」,或在查詢編輯器中輸入下列查詢,然後點選「執行查詢」:
resource.type="uptime_url"如果是綜合監控器,請在「資源」選單中選取「Cloud Run 修訂版本」,或在查詢編輯器中輸入下列查詢,然後點按「執行查詢」:
resource.type="cloud_run_revision"如要尋找包含在合成監控或運作時間檢查執行期間收到的回應資訊的記錄,請執行下列任一操作:
如要使用合成監控項或正常運作時間檢查的 ID 查詢,請在查詢編輯器中輸入 ID 時使用下列格式,然後按一下「執行查詢」:
labels.check_id="my-check-id"如要查詢包含由合成監控器和運作時間檢查發出要求的回應資料的記錄,請在查詢編輯器中輸入下列查詢,然後按一下「執行查詢」:
"UptimeCheckResult"先前的查詢會比對包含
"UptimeCheckResult"字串的所有記錄項目。
這些記錄包括:
綜合監控項目或運作時間檢查的 ID,儲存在
labels.check_id欄位中。如果是綜合監控項目,則為 Cloud Run 函式的名稱,儲存在
resource.labels.service_name欄位中。收集追蹤資料時,相關聯追蹤記錄的 ID 會儲存在
trace欄位中。
如要確認服務是否收到 Google Cloud 伺服器的要求,請將下列查詢複製到查詢編輯器,然後按一下「執行查詢」:
"GoogleStackdriverMonitoring-UptimeChecks"「
protoPayload.ip」欄位包含正常運作時間檢查伺服器使用的其中一個地址。如要瞭解如何列出所有 IP 位址,請參閱「列出 IP 位址」。
排解通知問題
本節說明設定快訊政策時可能遇到的錯誤,並提供解決方法。
其中一項檢查失敗,但其他檢查未失敗
您正在查看運作時間檢查指標,發現其中一個檢查程式回報失敗,但其他檢查程式都回報成功。
您不必採取任何行動,即可解決這個問題。
如果只有一個檢查程式回報失敗,可能是因為網路問題導致檢查程式的指令逾時。也就是說,指令不會失敗,而是未在指定逾時時間內完成。
如果警報政策使用預設設定,至少要有兩個檢查程式發生失敗,系統才會建立警報並傳送通知。單一檢查程式回報失敗不會觸發通知。
您收到通知,想偵錯失敗原因
如要找出失敗開始的時間,請執行下列任一操作:
如要判斷運作時間檢查的失敗時間,請查看「運作時間詳細資料」頁面:
-
前往 Google Cloud 控制台的「運作時間檢查」
頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果。
- 在 Google Cloud 控制台的工具列中,選取 Google Cloud 專案。如要進行 App Hub 設定,請選取 App Hub 主專案或管理專案。
找出並選取運作時間檢查。
「通過的檢查」圖表會顯示檢查記錄。 如要找出運作時間檢查首次失敗的時間,可能需要修改圖表的時間範圍。時間範圍選取器位於「正常運作時間詳細資料」頁面的工具列中。
-
如果是綜合監控器,如要判斷發生失敗的時間,請查看「運作時間詳細資料」頁面:
如要瞭解如何尋找相關聯的記錄資料,請參閱「尋找記錄」。
您未收到運作時間檢查失敗的通知
您已設定運作時間檢查,並查看該檢查的「運作時間詳細資料」頁面。您發現「通過的檢查」圖表顯示至少有一項檢查失敗。但你沒有收到通知。
根據預設,如果至少有兩個區域的檢查程式無法收到運作時間檢查的回應,系統就會建立快訊並傳送通知。這些故障必須同時發生。
您可以編輯警告政策的條件,在單一區域無法收到回應時收到通知。不過,我們建議使用預設設定,減少因暫時性故障而收到的通知。
如要查看或編輯快訊政策,請按照下列步驟操作:
-
前往 Google Cloud 控制台的 notifications「Alerting」(警告) 頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果。
- 在 Google Cloud 控制台的工具列中,選取 Google Cloud 專案。如要進行 App Hub 設定,請選取 App Hub 主專案或管理專案。
- 在「政策」窗格中,按一下「查看所有政策」。
找出要查看或編輯的政策,然後點選政策名稱。
您可以在「政策詳細資料」頁面查看及編輯政策。
排解公開運作時間檢查問題
本節說明使用公開運作時間檢查時可能會遇到的錯誤,並提供解決方法。
公開運作時間檢查失敗
您設定公開運作時間檢查,但在執行驗證步驟時收到錯誤訊息。
以下列舉一些運作時間檢查失敗的可能原因:
- 連線錯誤 - 拒絕:如果您使用預設的 HTTP 連線類型,請確認您已安裝網路伺服器,且該伺服器會回應 HTTP 要求。如果尚未安裝網路伺服器,新執行個體可能會發生連線錯誤;請參閱 Compute Engine 快速入門導覽。如果您使用 HTTPS 連線類型,可能需要執行額外的設定步驟。如要解決防火牆問題,請參閱「列出正常運作時間檢查伺服器 IP 位址」。
- 找不到名稱或服務:主機名稱可能不正確。
- 403 禁止:服務將錯誤代碼傳回至運作時間檢查工具。舉例來說,預設的 Apache 網路伺服器設定會在 Amazon Linux 下傳回這個代碼,但在其他 Linux 版本下則會傳回 200 (成功) 代碼。請參閱 Amazon Linux 的 LAMP 教學課程或網頁伺服器的說明文件。
- 404 找不到:路徑可能不正確。
- 408 要求逾時,或沒有回應:通訊埠編號可能不正確、服務可能並未執行、服務可能無法存取,或逾時可能太低。確認防火牆允許運作時間伺服器的流量;請參閱「列出運作時間檢查伺服器 IP 位址」。逾時限制會指定為「回應驗證」選項的一部分。
為協助排解公開運作時間檢查失敗的問題,您可以設定運作時間檢查,在檢查期間傳送最多 3 個 ICMP Ping。舉例來說,您可以透過 Ping 判斷失敗原因是否為網路連線問題,或是應用程式逾時。詳情請參閱「使用 ICMP Ping」。
無法建立公開運作時間檢查
您嘗試建立公開運作時間檢查,但動作失敗,並顯示類似下列訊息:
Public uptime checks cannot be configured in a VPC Service Controls perimeter.
這個錯誤訊息表示您的 Google Cloud 專案位於已啟用的 VPC Service Controls perimeter 中。您無法為這些設定建立公開運作時間檢查。
如要解決這個問題,請建立私人運作時間檢查。
排解私人運作時間檢查問題
本節說明使用私人正常運作時間檢查時可能遇到的錯誤,並提供解決方法。
無法建立運作時間檢查
Google Cloud 專案設定可能禁止修改指派給服務帳戶的角色,而服務帳戶會用於管理與 Service Directory 服務的互動。在這種情況下,運作時間檢查會建立失敗。
本節說明如何授予服務帳戶所需的角色:
控制台
使用 Google Cloud 控制台建立私人運作時間檢查時, Google Cloud 控制台會發出指令,將 Service Directory 角色授予服務帳戶。
如要瞭解如何將角色授予服務帳戶,請參閱「授權服務帳戶」。
gcloud:範圍界定專案
第一次在單一 Google Cloud 專案中為 Service Directory 服務和私人資源建立私人正常運作時間檢查時,要求可能會成功或失敗。結果取決於您是否已在專案中停用服務帳戶的自動角色授予功能:
如果專案允許自動授予服務帳戶角色,首次建立正常運作時間檢查就會成功。系統會為您建立服務帳戶,並授予必要角色。
如果專案不允許自動授予服務帳戶角色,第一次建立正常運作時間檢查時就會失敗。系統會建立服務帳戶,但不會授予任何角色。
如果無法建立運作時間檢查,請執行下列操作:
- 為服務帳戶進行授權。
- 請稍候幾分鐘,等待權限生效。
- 請再次嘗試建立私人運作時間檢查。
gcloud:受監控的專案
第一次建立私有正常運作時間檢查時,如果目標是受監控專案中的 Service Directory 服務,或是其他 Google Cloud 專案中的私有資源,要求會失敗,並導致系統建立 Monitoring 服務帳戶。
授權服務帳戶的方式取決於您使用的專案數量及其關係。Google Cloud 您可能最多會參與四個專案:
- 您定義私人運作時間檢查的專案。
- 您在其中設定 Service Directory 服務的受監控專案。
- 您設定虛擬私有雲網路的專案。
- 專案,其中設定了 VM 或負載平衡器等網路資源。這項專案與本文討論的服務帳戶授權無關。
如果無法建立第一個運作時間檢查,請按照下列步驟操作:
- 為服務帳戶進行授權。
- 請稍候幾分鐘,等待權限生效。
- 請再次嘗試建立私人運作時間檢查。
無法指定 Cloud Run 服務
您想使用私人正常運作時間檢查功能,以 Cloud Run 服務為目標,但 Cloud Run 服務在客戶虛擬私有雲網路中沒有 IPv4 位址,因此無法註冊為服務目錄端點。
如要使用私人運作時間檢查功能,以 Cloud Run 服務為目標,請設定內部應用程式負載平衡器,並使用無伺服器 NEG 後端,然後在 Service Directory 中註冊負載平衡器的內部 IP 位址。如需負載平衡器設定範例,請參閱「設定區域內部應用程式負載平衡器搭配 Cloud Run」。
存取遭拒
運作時間檢查失敗,並傳回 VPC_ACCESS_DENIED 結果。這表示網路設定或服務帳戶授權有誤。
如要使用範圍專案或受監控專案,請檢查服務帳戶授權,詳情請參閱「無法建立正常運作時間檢查」。
如要進一步瞭解如何存取私人網路,請參閱「設定網路專案」。
私人運作時間檢查結果異常
您有一個服務目錄服務,其中有多個 VM,且服務設定包含多個端點。關閉其中一個 VM 時,運作時間檢查仍會顯示成功。
如果服務設定包含多個端點,系統會隨機選擇一個。如果與所選端點相關聯的 VM 正在執行,即使其中一個 VM 停止運作,運作時間檢查仍會成功。
預設標題
運作時間檢查傳回錯誤或非預期結果。如果您覆寫了預設標頭值,就可能發生這種情況。
當要求傳送至目標端點進行私有正常運作時間檢查時,要求會包含下列標頭和值:
| 標頭 | 值 |
|---|---|
HTTP_USER_AGENT |
GoogleStackdriverMonitoring-UptimeChecks(https://cloud.google.com/monitoring) |
HTTP_CONNECTION |
keep-alive |
HTTP_HOST |
Service Directory 端點的 IP |
HTTP_ACCEPT_ENCODING |
gzip、deflate、br |
CONTENT_LENGTH |
根據運作時間 POST 資料計算 |
如果您嘗試覆寫這些值,可能會發生下列情況:
- 運作時間檢查會回報錯誤。
- 系統會捨棄覆寫值,並改用表格中的值。
無法查看資料
如果運作時間檢查與 Service Directory 服務位於不同 Google Cloud 專案,運作時間檢查資訊主頁就不會顯示任何資料。
確認包含正常運作時間檢查的 Google Cloud 專案,會監控包含 Service Directory 服務的 Google Cloud 專案。
如要進一步瞭解如何列出受監控的專案,以及如何新增專案,請參閱「設定多項專案的指標範圍」。
排解綜合監控問題
本節提供相關資訊,協助您排解合成監控器問題。
啟用 API 後顯示的錯誤訊息
您開啟綜合監控作業的建立流程,系統會提示您啟用至少一個 API。啟用 API 後,系統會顯示類似下列內容的訊息:
An error occurred during fetching available regions: Cloud Functions API has not been used in project PROJECT_ID before or it is disabled.
錯誤訊息建議您確認 API 是否已啟用,然後建議您稍候再試一次。
如要確認 API 是否已啟用,請前往專案的「APIs & Services」(API 和服務) 頁面:
確認 API 已啟用後,即可繼續建立流程。API 啟用作業透過後端傳播後,系統就會自動解決問題。
系統未追蹤連出 HTTP 要求
您設定綜合監控器,收集傳出 HTTP 要求的追蹤記錄資料。您的追蹤資料只會顯示一個範圍,類似於以下螢幕截圖:
如要解決這個問題,請確認服務帳戶已獲派 Cloud Trace 代理者角色 (roles/cloudtrace.agent)。編輯者角色 (roles/editor) 也適用。
如要查看授予服務帳戶的角色,請按照下列步驟操作:
-
前往 Google Cloud 控制台的「IAM」頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「IAM & Admin」(IAM 與管理) 的結果。
- 在 Google Cloud 控制台的工具列中,選取 Google Cloud 專案。如要進行 App Hub 設定,請選取 App Hub 主專案或管理專案。
- 選取「包含 Google 提供的角色授予項目」。
如果合成監控項使用的服務帳戶未列出,或尚未獲派包含 Cloud Trace 代理者角色 (
roles/cloudtrace.agent) 權限的角色,請將這個角色授予服務帳戶。如果您不知道服務帳戶名稱,請在導覽選單中選取「服務帳戶」。
「處理中」狀態
「綜合監控」頁面會列出狀態為 In progress 的綜合監控。如果狀態為 In progress,表示最近才建立合成監控項,因此沒有資料可供顯示,或是函式部署失敗。
如要判斷函式是否部署失敗,請嘗試下列做法:
請確認 Cloud Run 函式名稱不含底線。如果存在底線,請移除底線並重新部署 Cloud Run 函式。
開啟綜合監控器的「綜合監控詳細資料」頁面。
如果看到以下訊息,請刪除合成監控器。
Cloud Function not found for this Synthetic monitor. Please confirm it exists or delete this monitor.
錯誤訊息指出函式已遭刪除,因此綜合監控項目無法執行函式。
開啟函式的 Cloud Run functions 頁面。如要從「Synthetic monitor details」(綜合監控詳細資料) 頁面開啟這個頁面,請按一下「Code」(程式碼),然後按一下函式名稱。
如果看到類似下列內容的訊息,表示函式部署失敗。
This function has failed to deploy and will not work correctly. Please edit and redeploy
如要解決這項失敗問題,請查看函式程式碼並修正錯誤,避免函式無法建構或部署。
建立合成監控項時,部署及執行函式可能需要幾分鐘的時間。
警告狀態
「綜合監控」頁面會列出狀態為 Warning 的綜合監控。Warning 狀態表示執行結果不一致。這可能表示測試的設計有問題,或是測試的內容行為不一致。
未通過狀態
「綜合監控」頁面會列出狀態為 Failing 的綜合監控項目。如要進一步瞭解失敗原因,請查看最近的執行記錄。
如果顯示錯誤訊息
Request failed with status code 429,表示 HTTP 要求的目標拒絕了指令。如要解決這項失敗問題,請變更綜合監控項目的目標。端點
https://www.google.com會拒絕綜合監控發出的要求。如果失敗傳回的執行時間為
0ms,則 Cloud Run 函式可能記憶體不足。如要解決這項失敗問題,請編輯 Cloud Run 函式,然後將記憶體增加至至少 2 GiB,並將 CPU 欄位設為1。
無法刪除綜合監控項目
您使用 Cloud Monitoring API 刪除綜合監控器,但 API 呼叫失敗,並傳回類似下列內容的回應:
{
"error": {
"code": 400,
"message": "Request contains an invalid argument.",
"status": "INVALID_ARGUMENT",
"details": [
{
"@type": "type.googleapis.com/google.rpc.DebugInfo",
"detail": "[ORIGINAL ERROR] generic::invalid_argument: Cannot delete check 1228258045726183344. One or more alerting policies is using it.Delete the alerting policy with id projects/myproject/alertPolicies/16594654141392976482 and any other policies using this uptime check and try again."
}
]
}
}
如要解決失敗問題,請刪除監控綜合監控結果的警告政策,然後刪除綜合監控。
無法編輯失效連結檢查工具的設定
您使用 Google Cloud 控制台建立了無效連結檢查工具,現在想變更測試的 HTML 元素,或是修改 URI 逾時、重試、等待選取器和每個連結的選項。不過,編輯失效連結檢查工具時, Google Cloud 控制台不會顯示設定欄位。
如要解決這項失敗問題,請按照下列步驟操作:
-
在 Google Cloud 控制台中,前往
「Synthetic monitoring」(綜合監控) 頁面:如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果。
- 在 Google Cloud 控制台的工具列中,選取 Google Cloud 專案。如要進行 App Hub 設定,請選取 App Hub 主專案或管理專案。
- 找出要編輯的合成監控器,按一下「更多選項」more_vert,然後選取「編輯」。
- 按一下「編輯函式」。
在
index.js檔案中編輯options物件,然後按一下「套用函式」。如要瞭解這個物件的欄位和語法,請參閱
broken-links-ok/index.js。按一下 [儲存]。
Google Cloud 控制台回報儲存螢幕截圖失敗
您已建立無效連結檢查工具,並設定儲存螢幕截圖。 不過, Google Cloud 控制台會顯示下列其中一則警告訊息,以及更詳細的資訊:
InvalidStorageLocationStorageValidationErrorBucketCreationErrorScreenshotFileUploadError
如要解決這些失敗問題,請嘗試下列做法:
如果看到
InvalidStorageLocation訊息,請確認名為options.screenshot_options.storage_location的欄位中指定的 Cloud Storage bucket 是否存在。查看與 Cloud Run 函式相關的記錄。 詳情請參閱「尋找記錄」。
確認對應 Cloud Run 函式中使用的服務帳戶是否具備 Identity and Access Management 角色,可建立、存取及寫入 Cloud Storage bucket。