排解綜合監控和運作時間檢查問題

本文提供資訊,說明如何尋找記錄資料,以及如何排解合成監控和運作時間檢查失敗的問題:

尋找記錄

本節說明如何尋找合成監控器和運作時間檢查的記錄:

  1. 前往 Google Cloud 控制台的「Logs Explorer」頁面:

    前往「Logs Explorer」(記錄檔探索工具)

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Logging」的結果

  2. 在 Google Cloud 控制台的工具列中,選取您的 Google Cloud 專案。如要進行 App Hub 設定,請選取 App Hub 主專案或已啟用應用程式的資料夾管理專案。
  3. 請採行下列任一動作:

    • 如要找出與合成監控器或運作時間檢查相關的所有記錄,請依資源類型查詢。您可以使用「資源」選單,也可以輸入查詢。

      如要進行運作時間檢查,請在「資源」選單中選取「運作時間檢查網址」,或在查詢編輯器中輸入下列查詢,然後按一下「執行查詢」

      resource.type="uptime_url"
      

      如果是合成監控器,請在「Resource」(資源) 選單中選取「Cloud Run Revision」(Cloud Run 修訂版本),或在查詢編輯器中輸入下列查詢,然後按一下「Run query」(執行查詢)

      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"
      

      「ip」protoPayload.ip欄位包含運作時間檢查伺服器使用的其中一個位址。如要瞭解如何列出所有 IP 位址,請參閱「列出 IP 位址」。

排解通知問題

本節說明設定快訊政策時可能會遇到的一些錯誤,並提供解決方法。

其中一項檢查失敗,但其他檢查通過

您正在查看運作時間檢查指標,發現其中一個檢查程式回報失敗,但其他檢查程式都回報成功。

您無須採取任何行動即可解決這個問題。

如果只有一個檢查程式回報失敗,可能是因為網路問題導致檢查程式的指令逾時。也就是說,指令不會失敗,而是未在指定逾時時間內完成。

如果快訊政策使用預設設定,至少要有兩個檢查程式發生失敗,才會建立事件並傳送通知。如果只有一個檢查程式回報失敗,系統不會發送通知。

您收到通知,想偵錯失敗原因

  1. 如要找出失敗開始的時間,請執行下列任一操作:

    • 如要判斷運作時間檢查的失敗時間,請查看「運作時間詳細資料」頁面:

      1. 前往 Google Cloud 控制台的「運作時間檢查」頁面:

        前往「Uptime checks」(運作時間檢查)

        如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果

      2. 在 Google Cloud 控制台的工具列中,選取您的 Google Cloud 專案。如要進行 App Hub 設定,請選取 App Hub 主專案或已啟用應用程式的資料夾管理專案。
      3. 找出並選取運作時間檢查。

        「通過的檢查」圖表會顯示檢查記錄。如要找出運作時間檢查首次失敗的時間,可能需要修改圖表的時間範圍。時間範圍選取器位於「正常運作時間詳細資料」頁面的工具列中。

    • 如果是綜合監控,如要判斷發生失敗的時間,請查看「運作時間詳細資料」頁面:

      1. 前往 Google Cloud 控制台的 「Synthetic monitoring」(綜合監控) 頁面

        前往「綜合監控」

        如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果

      2. 在 Google Cloud 控制台的工具列中,選取您的 Google Cloud 專案。如要進行 App Hub 設定,請選取 App Hub 主專案或已啟用應用程式的資料夾管理專案。
      3. 找出並選取合成監控器。
  2. 如要瞭解如何尋找相關聯的記錄資料,請參閱本頁面「尋找記錄」一節。

您未收到運作時間檢查失敗的通知

您已設定運作時間檢查,並查看該檢查的「運作時間詳細資料」頁面。您發現「通過檢查」圖表顯示至少有一項檢查失敗。但你沒有收到通知。

根據預設,如果至少有兩個區域的檢查程式無法收到運作時間檢查的回應,系統就會建立事件並傳送通知。這些故障必須同時發生。

您可以編輯快訊政策的條件,以便在單一區域無法收到回應時收到通知。不過,我們建議您使用預設設定,這樣就能減少因暫時性失敗而收到的通知。

如要查看或編輯快訊政策,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的 「Alerting」(警告) 頁面

    前往「Alerting」(快訊)

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果

  2. 在 Google Cloud 控制台的工具列中,選取您的 Google Cloud 專案。如要進行 App Hub 設定,請選取 App Hub 主專案或已啟用應用程式的資料夾管理專案。
  3. 在「政策」窗格中,按一下「查看所有政策」
  4. 找出要查看或編輯的政策,然後按一下政策名稱。

    您可以在「政策詳細資料」頁面中查看及編輯政策。

排解公開運作時間檢查問題

本節說明使用公開正常運作時間檢查時可能會遇到的錯誤,並提供解決方法。

公開運作時間檢查失敗

您設定了公開運作時間檢查,但在執行驗證步驟時收到錯誤訊息。

以下列舉一些運作時間檢查失敗的可能原因:

  • 連線錯誤 - 遭到拒絕:如果您使用預設的 HTTP 連線類型,請檢查您是否已安裝回應 HTTP 要求的網路伺服器。如果您尚未安裝網路伺服器,則可能會在新的執行個體上發生連線錯誤;請參閱 Compute Engine 快速入門導覽課程。如果您使用 HTTPS 連線類型,則可能必須執行其他設定步驟。如要解決防火牆問題,請參閱列出運作時間檢查伺服器 IP 位址
  • 找不到名稱或服務:主機名稱可能不正確。
  • 403 禁止:服務將錯誤代碼傳回至運作時間檢查工具。舉例來說,預設的 Apache 網路伺服器設定會在 Amazon Linux 之下傳回此代碼,但在其他某些 Linux 版本之下會傳回代碼 200 (成功)。請參閱 Amazon Linux 的 LAMP 教學課程或網路伺服器的說明文件。
  • 404 找不到:路徑可能不正確。
  • 408 要求逾時,或沒有回應:通訊埠編號可能不正確、服務可能並未執行、服務可能無法存取,或逾時可能太低。請檢查防火牆是否允許來自運作時間伺服器的流量;請參閱列出運作時間檢查伺服器 IP 位址。 逾時限制是 Response Validation (回應驗證) 選項的一部分。

為協助排解公開運作時間檢查失敗的問題,您可以設定運作時間檢查,在檢查期間傳送最多 3 個 ICMP Ping。透過 Ping,您可以區分失敗原因,例如網路連線問題和應用程式逾時。詳情請參閱「使用 ICMP Ping」。

排解私人運作時間檢查問題

本節說明使用私人正常運作時間檢查時可能會遇到的一些錯誤,並提供解決方法。

無法建立運作時間檢查

Google Cloud 專案設定可能會禁止修改指派給服務帳戶的角色,而服務帳戶會使用這些角色管理與 Service Directory 服務的互動。在這種情況下,運作時間檢查會建立失敗。

本節說明如何授予服務帳戶所需的角色:

Google Cloud 控制台

使用 Google Cloud 控制台建立私人運作時間檢查時, Google Cloud 控制台會發出指令,將 Service Directory 角色授予服務帳戶。

如要瞭解如何將角色授予服務帳戶,請參閱授權服務帳戶

API:設定專案範圍

首次為單一 Google Cloud 專案中的 Service Directory 服務和私人資源建立私人正常運作時間檢查時,要求可能會成功或失敗。結果取決於您是否已在專案中停用服務帳戶的自動角色授予功能

  • 如果專案允許自動授予服務帳戶角色,首次建立正常運作時間檢查時就會成功。系統會為您建立服務帳戶,並授予必要角色。

  • 如果專案不允許自動授予服務帳戶角色,首次建立正常運作時間檢查時就會失敗。系統會建立服務帳戶,但不會授予任何角色。

如果無法建立運作時間檢查,請執行下列操作:

  1. 為服務帳戶提供授權
  2. 權限可能需要幾分鐘才會全面生效。
  3. 請再次嘗試建立私人運作時間檢查。

API:受監控的專案

首次建立私人正常運作時間檢查,以監控專案中的 Service Directory 服務或不同 Google Cloud 專案中的私人資源為目標時,要求會失敗,並導致建立 Monitoring 服務帳戶。

授權服務帳戶的方式取決於您使用的Google Cloud 專案數量及其關係。您最多可能需要參與四個專案:

  • 您定義私人運作時間檢查的專案。
  • 您在其中設定 Service Directory 服務的受監控專案。
  • 您在其中設定虛擬私有雲網路的專案。
  • 設定 VM 或負載平衡器等網路資源的專案。這項專案與本文討論的服務帳戶授權無關。

如果無法建立第一個運作時間檢查,請按照下列步驟操作:

  1. 為服務帳戶提供授權
  2. 權限可能需要幾分鐘才會全面生效。
  3. 請再次嘗試建立私人運作時間檢查。

存取遭拒

運作時間檢查失敗,並傳回 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 gzipdeflatebr
CONTENT_LENGTH 根據運作時間貼文資料計算

如果嘗試覆寫這些值,可能會發生下列情況:

  • 運作時間檢查回報錯誤
  • 系統會捨棄覆寫值,並改用表格中的值

無法顯示資料

如果運作時間檢查與 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 已啟用後,即可繼續建立流程。API 啟用作業透過後端傳播後,系統就會自動解決問題。

系統未追蹤連出 HTTP 要求

您可以設定綜合監控器,收集輸出 HTTP 要求的追蹤記錄資料。您的追蹤資料只會顯示一個範圍,類似於下列螢幕截圖:

Cloud Trace 只顯示一項追蹤記錄。

如要解決這個問題,請確認服務帳戶已獲派 Cloud Trace 代理者角色 (roles/cloudtrace.agent)。編輯者角色 (roles/editor) 也足夠。

如要查看授予服務帳戶的角色,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「IAM」IAM頁面:

    前往 IAM

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「IAM & Admin」的結果

  2. 在 Google Cloud 控制台的工具列中,選取您的 Google Cloud 專案。如要進行 App Hub 設定,請選取 App Hub 主專案或已啟用應用程式的資料夾管理專案。
  3. 選取「包含 Google 提供的角色授權」
  4. 如果合成監控器使用的服務帳戶未列出,或未獲授包含 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 頁面。如要從「綜合監控詳細資料」頁面開啟這個頁面,請按一下「程式碼」,然後按一下函式名稱。

    如果看到類似下列內容的訊息,表示函式部署失敗。

    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 控制台不會顯示設定欄位。

如要解決這項失敗問題,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的 「Synthetic monitoring」(綜合監控) 頁面

    前往「綜合監控」

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果

  2. 在 Google Cloud 控制台的工具列中,選取您的 Google Cloud 專案。如要進行 App Hub 設定,請選取 App Hub 主專案或已啟用應用程式的資料夾管理專案。
  3. 找出要編輯的合成監控器,按一下「更多選項」,然後選取「編輯」
  4. 按一下「編輯函式」
  5. 編輯 index.js 檔案中的 options 物件,然後按一下「套用函式」

    如要瞭解這個物件的欄位和語法,請參閱 broken-links-ok/index.js

  6. 按一下 [儲存]

Google Cloud 控制台顯示螢幕截圖儲存失敗

您已建立無效連結檢查工具,並設定儲存螢幕截圖。不過, Google Cloud 控制台會顯示下列其中一個警告訊息,以及更詳細的資訊:

  • InvalidStorageLocation
  • StorageValidationError
  • BucketCreationError
  • ScreenshotFileUploadError

如要解決這些失敗問題,請嘗試下列做法:

  • 如果看到 InvalidStorageLocation 訊息,請確認名為 options.screenshot_options.storage_location 的欄位中指定的 Cloud Storage bucket 是否存在。

  • 查看與 Cloud Run function 相關的記錄。 詳情請參閱「尋找記錄」。

  • 確認對應 Cloud Run 函式中使用的服務帳戶,是否具備可建立、存取及寫入 Cloud Storage 值區的 Identity and Access Management 角色。