VM 管理員疑難排解

本文說明如何排解 VM 管理工具的問題。

如要進一步瞭解 VM 管理員,請參閱這篇文章

事前準備

  • 如果尚未設定驗證,請先完成設定。 驗證可確認您的身分,以便存取 Cloud de Confiance by S3NS 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列其中一個選項,向 Compute Engine 進行驗證:

    選取這個頁面上的分頁,瞭解如何使用範例:

    控制台

    使用 Cloud de Confiance 控制台存取 Cloud de Confiance by S3NS 服務和 API 時,無須設定驗證。

    gcloud

    1. 安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。登入後,執行下列指令來初始化 Google Cloud CLI:

      gcloud init
  • 設定預設地區和區域
  • REST

    如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。

      安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI

    詳情請參閱 Cloud de Confiance 驗證說明文件中的「使用 REST 進行驗證」。

總覽

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

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

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

找出問題或錯誤後,您也可以查看「常見錯誤」一節,瞭解可能的修正方式。

檢查 Cloud Logging

您可以透過各項功能的 Cloud de Confiance 控制台快速連結查看記錄。

OS 修補程式

  1. 前往 Cloud de Confiance 控制台的「Patch」(修補程式) 頁面,然後點選「Jobs run」(工作執行) 分頁標籤。

    前往「Jobs run」(工作執行) 頁面

  2. 按一下要偵錯的修補工作名稱。
  3. 前往「Updated VM instances」(已更新的 VM 執行個體) 區段。
  4. 如要查看特定 VM 的記錄,請點選「記錄」下方的「查看」

OS 政策

這項程序適用於 OS 政策。 如為訪客政策 (Beta 版),請使用下一節的偵錯記錄選項。

  1. 前往 Cloud de Confiance 控制台的「OS policies」(作業系統政策) 頁面,然後點選「VM instances」(VM 執行個體) 分頁標籤

    前往 VM 執行個體

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

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

  1. 前往 Cloud de Confiance 控制台的「OS policies」(作業系統政策) 頁面,然後點選「OS policy orchestrators」(作業系統政策協調器) 分頁標籤。

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

  2. 按一下要偵錯的 OS 政策協調器名稱。
  3. 前往「記錄」部分,並驗證記錄項目。

檢查偵錯記錄

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

啟用 OS 設定代理程式的偵錯記錄功能

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

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

控制台

  1. 前往 Cloud de Confiance 控制台的「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 名稱替換為 VM_NAME

REST

如要設定執行個體中繼資料,請按照設定執行個體中繼資料一節中的 API 指示操作。

中繼資料屬性必須包含下列鍵/值組合:

鍵:osconfig-log-level
值:debug

查看偵錯記錄

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

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

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

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

控制台

  1. 前往Cloud de Confiance 控制台的「Logging」>「Logs Explorer」(記錄檔探索工具) 頁面:

    前往 Logs Explorer

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

  3. 在「資源」下拉式清單中,選取「VM 執行個體」。畫面上會顯示可用 VM 清單 (instance_id)。

  4. 按一下要查看的 VM。

  5. 按一下「新增」。

  6. 在「記錄檔名稱」下拉式清單中,選取「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 管理工具,必須符合下列條件:

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

如果您使用 VM 管理員,但沒有連接服務帳戶或 Google Cloud OS Config 服務代理,在處理修補工作時可能會看到下列錯誤:

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.s3ns-system.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-.*/

後續步驟