VM 管理員疑難排解

本文件說明如何排解 VM Manager 的問題。

如要進一步瞭解 VM 管理員,請參閱「VM 管理員」。

事前準備

  • 如果尚未設定,請先設定驗證機制。驗證是指驗證身分,以便存取 Google Cloud 服務和 API 的程序。如要在本機開發環境中執行程式碼或範例,您可以選取下列任一選項,向 Compute Engine 進行驗證:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    2. Set a default region and zone.

    REST

    To use the REST API samples on this page in a local development environment, you use the credentials you provide to the gcloud CLI.

      After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    For more information, see Authenticate for using REST in the Google Cloud authentication documentation.

總覽

如要排解問題,請先確認 VM Manager 已正確設定。如果設定正確,但仍有問題,您可以查看記錄。您可以查看記錄,找出 VM 或 VM Manager 工作流程中的問題,例如指令或指令碼中的錯誤,並加以隔離及解決。

您可以從記錄收集下列資訊:

  • VM 記錄的任何錯誤訊息或警告。這非常適合用於找出 VM 層級錯誤,或 VM 上執行的其他服務發生的錯誤。如要查看這些記錄,請參閱「檢視 Cloud Logging」一文。
  • OS 設定代理程式記錄的詳細偵錯資訊。這有助於找出 VM Manager 執行的任何作業的問題。如要檢查 OS Config 代理程式的偵錯記錄,請參閱「檢查偵錯記錄」。

找出問題或錯誤後,您也可以參閱「常見錯誤」一節,瞭解潛在的修正方式。

檢查 Cloud Logging

您可以使用各項功能的 Google Cloud 控制台快速連結查看記錄。

OS 修補程式

  1. 在 Google Cloud 控制台中,前往「Patch」頁面的「Jobs run」分頁。

    前往「Jobs run」(執行中的工作)

  2. 按一下要偵錯的修補工作名稱。
  3. 前往「已更新的 VM 執行個體」部分。
  4. 針對特定 VM,請在「Logs」下方點選「View」

OS 政策

這項程序適用於 OS 政策。 如果是訪客政策 (Beta 版),請使用下一個部分的偵錯記錄檔選項。

  1. 在 Google Cloud 控制台中,前往「OS policies」(OS 政策) 頁面的「VM instances」(VM 執行個體) 分頁。

    前往 VM 執行個體

  2. 按一下要偵錯的 VM 名稱。
  3. 前往「政策」部分。
  4. 按一下「記錄」下方的「查看」

OS 政策自動化調度管理工具

  1. 在 Google Cloud 控制台中,前往「OS policies」頁面中的「OS policy orchestrators」分頁。

    前往 OS 政策自動化調度管理工具

  2. 按一下要偵錯的 OS 政策自動化調度管理工具名稱。
  3. 前往「Logs」部分,確認記錄項目。

檢查偵錯記錄

您可以為 OS 設定代理程式啟用偵錯功能,並查看偵錯記錄,藉此找出任何 VM Manager 功能的問題。

為 OS Config 代理程式啟用偵錯記錄功能

您可以在 VM 執行個體或專案上設定 osconfig-log-level=debug 中繼資料,啟用偵錯記錄功能。

如要在 VM 上啟用偵錯記錄,請完成下列步驟:

主控台

  1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面

    前往 VM 執行個體

  2. 按一下要設定中繼資料值的 VM 名稱。

  3. 在「執行個體詳細資料」頁面中,按一下「編輯」即可編輯設定。

  4. 在「Custom metadata」(自訂中繼資料) 下新增下列中繼資料項目:

    鍵:osconfig-log-level
    值:debug

  5. 按一下「儲存」,將變更套用至 VM。

gcloud

使用 instances add-metadata 指令,並加上 --metadata=osconfig-log-level=debug 旗標。

gcloud compute instances add-metadata VM_NAME \
    --metadata=osconfig-log-level=debug

VM_NAME 替換為您的 VM 名稱。

REST

如要瞭解如何設定執行個體的中繼資料,請按照設定執行個體中繼資料一節中的 API 操作說明進行。

下列鍵/值組合是必要的中繼資料屬性:

鍵:osconfig-log-level
值:debug

查看偵錯記錄

啟用偵錯記錄後,OS Config 代理程式會將記錄項目寫入 Cloud Logging 和序列埠主控台。

在 VM 上啟用偵錯記錄功能後,OS 設定代理程式需要約 10 分鐘的時間,才能開始在 Cloud Logging 中寫入偵錯訊息。您可以重新啟動代理程式或重新啟動 VM,縮短等待時間。如要進一步瞭解 Cloud Logging,請參閱「查看 Cloud Logging 記錄」。

如要查看偵錯記錄,您可以使用下列選項:

  • Cloud Logging:使用 Google Cloud 控制台或 Google Cloud CLI
  • 序列埠控制台

主控台

  1. 在 Google Cloud 控制台中,前往「Logging」>「Logs Explorer」(記錄檔探索工具) 頁面:

    前往「Logs Explorer」

  2. 視需要在頁面頂端選取現有 Google Cloud 專案,或建立新專案。

  3. 在「Resource」下拉式清單中,選取「VM Instance」。系統會顯示可用的 VM 清單 (instance_id)。

  4. 按一下要查看的 VM。

  5. 按一下「新增」。

  6. 在「Log name」下拉式清單中,選取「OSConfigAgent」

  7. 按一下「新增」。

  8. 您的查詢應類似以下內容:

    resource.type="gce_instance" resource.labels.instance_id="INSTANCE_ID"
    logName="projects/PROJECT_ID/logs/OSConfigAgent"
    
  9. 點選「執行查詢」

gcloud

執行 gcloud logging read 指令

 gcloud logging read "resource.type=gce_instance AND logName=projects/PROJECT_ID/logs/OSConfigAgent"
 

PROJECT_ID 替換為您的專案 ID。

序列埠

如要查看序列埠主控台的偵錯記錄資訊,請參閱「查看序列埠輸出內容」。

常見錯誤

驗證問題

如要使用 VM Manager,您必須具備下列條件:

  • 已附加的服務帳戶。VM Manager 會使用這個服務帳戶,為 API 服務的請求簽署。
  • 請確認已連結的服務帳戶具有 roles/logging.logWriter 角色,才能將記錄寫入 Logging API。
  • Google Cloud OS 設定服務代理人。VM 管理員會在啟動修補作業時建立這個服務代理程式,並授予 Cloud OS 設定服務代理人角色。如要建立 OS 政策,您不需要設定這個服務代理程式。

如果您使用 VM Manager,但沒有附加的服務帳戶或 Google Cloud OS Config Service Agent,在使用修補作業時,您可能會看到下列錯誤:

Service account permissions are missing. Verify that the service account has the correct permissions and try again.
OSConfigAgent Error main.go:88: error getting token from metadata: metadata: GCE metadata "instance/service-accounts/default/identity?audience=osconfig.googleapis.com&format=full" not defined
message: "Error running OPERATION_NAME: error calling OPERATION_NAME: code: "PermissionDenied", message: "The caller does not have permission", details: []"

驗證問題也可能導致 VM 執行個體無法顯示在修補資訊主頁中。

如要解決這些問題,請嘗試下列一或所有方法:

  • 確認所有 VM 都有已附加的服務帳戶
  • 請確認 Google Cloud OS 設定服務代理人已設定 Cloud OS 設定服務代理人角色 (roles/osconfig.serviceAgent)。

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member='serviceAccount:service-PROJECT_NUMBER@gcp-sa-osconfig.iam.gserviceaccount.com' \
      --role='roles/osconfig.serviceAgent'
    

    更改下列內容:

    • PROJECT_ID:您的專案 ID
    • PROJECT_NUMBER:您的專案編號

排除套件以進行修補更新時發生錯誤

如果在修補工作中排除套件時,您為套件名稱指定萬用字元或特殊字元,OS 修補管理可能會忽略清單並更新所有套件。

如要解決這個問題,請更新 OS 設定代理程式20220829.00 版本,並使用正斜線 (/) 包裝套件名稱。

在以下範例中,OS 修補程式管理會排除套件名稱中含有前置字元 google-yum 套件。

      gcloud compute os-config patch-jobs execute --instance-filter-all
--yum-excludes=/google-.*/

後續步驟