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

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

尋找記錄

本節說明如何查看模擬監控和運作時間檢查的記錄:

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

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

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

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

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

      如要進行運作時間檢查,請在「Resource」選單中選取「Uptime Check URL」,或在查詢編輯器中輸入以下查詢,然後按一下「Run query」

      resource.type="uptime_url"
      

      如要使用模擬監控器,請在「資源」選單中選取「Cloud Run 修訂版本」,或在查詢編輯器中輸入以下查詢,然後按一下「執行查詢」

      resource.type="cloud_run_revision"
      
    • 找尋記錄包含執行合成監控或運作時間檢查時收到的回應資訊,執行下列任一操作:

      • 如要使用綜合監控器或正常運作時間檢查的 ID 進行查詢,請在將 ID 輸入查詢編輯器時使用下列格式,然後按一下「Run query」

        labels.check_id="my-check-id"
        
      • 如要查詢記錄,其中包含由綜合監控器和正常運作時間檢查發出的請求回應資料,請在查詢編輯器中輸入以下查詢,然後按一下「Run query」

        "UptimeCheckResult"
        

        先前的查詢會比對包含 "UptimeCheckResult" 字串的所有記錄項目。

      這些記錄包括:

      • 綜合監控項目或運作時間檢查的 ID,儲存在 labels.check_id 欄位中。

      • 對於綜合監控項目,Cloud Run 函式名稱會儲存在 resource.labels.service_name 欄位中。

      • 收集追蹤記錄資料時,相關聯追蹤記錄的 ID,儲存在 trace 欄位中。

    • 如要確認服務是否收到來自 Google Cloud 伺服器的要求,請將下列查詢複製到查詢編輯器,然後按一下「Run query」

      "GoogleStackdriverMonitoring-UptimeChecks"
      

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

排解通知相關問題

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

一個檢查器失敗,但其他檢查器沒有

您正在查看運作時間檢查指標,並發現當所有其他檢查器都回報成功時,其中一個檢查器回報失敗。

您不需要採取任何行動即可解決這個問題。

如果只有一個檢查器回報失敗,可能是因為檢查器的命令因網路問題而逾時,也就是說,指令並未在指定的逾時期限內完成,而非指令失敗。

使用預設設定的快訊政策必須先收到至少兩個檢查器的失敗通知,才能建立事件並傳送通知。單一檢查器回報的失敗狀況不會觸發通知。

您收到通知,並想對失敗情形進行偵錯

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

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

      1. 在 Google Cloud 控制台中,前往 「Uptime checks」頁面:

        前往「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 位址」。逾時限制會在「回應驗證」選項中指定。

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

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

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

建立運作時間檢查失敗

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

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

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 是否已啟用,請前往專案的「API 和服務」頁面:

前往「API 和服務」

確認已啟用 API 後,您可以繼續進行建立流程。在 API 啟用功能透過後端傳播後,條件會自動解析。

未追蹤連出 HTTP 要求

您可以設定綜合監控器,收集輸出 HTTP 要求的追蹤記錄資料。追蹤記錄資料只會顯示一個區間,如下圖所示:

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

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

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

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

    前往「身分與存取權管理」頁面

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

  2. 在 Google Cloud 控制台的工具列中,選取您的 Google Cloud 專案。如要設定 App Hub,請選取 App Hub 主機專案或啟用應用程式的資料夾管理專案。
  3. 選取「包含 Google 提供的角色授予項目」
  4. 如果模擬監控器使用的服務帳戶未列於清單中,或是未授予包含 Cloud Trace 代理人 (roles/cloudtrace.agent) 角色權限的角色,請將這個角色授予服務帳戶。

    如果您不知道服務帳戶名稱,請在導覽選單中選取「Service Accounts」(服務帳戶)

處理中狀態

「Synthetic monitors」頁面會列出狀態為 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 函式頁面。如要從「Synthetic monitor details」頁面開啟這個頁面,請按一下「Code」,然後點選函式名稱。

    如果您看到類似以下的訊息,表示函式無法部署。

    This function has failed to deploy and will not work correctly. Please edit and redeploy
    

    如要解決這項失敗問題,請查看函式程式碼,並修正導致函式無法建構或部署的錯誤。

建立綜合監控時,函式可能需要幾分鐘的時間才能部署及執行。

警告狀態

「Synthetic monitors」會列出狀態為 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 物件,然後按一下「Apply function」(套用函式)

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

  6. 按一下 [儲存]

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

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

  • InvalidStorageLocation
  • StorageValidationError
  • BucketCreationError
  • ScreenshotFileUploadError

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

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

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

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