查看序列埠輸出內容

虛擬機器執行個體有四個虛擬序列埠。執行個體的作業系統、BIOS 及其他系統層級實體通常會將輸出內容寫入序列埠,因此序列埠可在排解當機、啟動失敗、開機或關機問題時派上用場。

本頁面說明查看序列埠輸出內容的方法,包括使用 Stackdriver 記錄來保留序列埠輸出內容,且即使在執行個體已停止或遭刪除後也可繼續保留。如果您需要在執行個體運作時傳送指令至序列埠,請參閱與序列主控台互動一文。

只有在 VM 執行個體運作時,才能透過 GCP Console、gcloud 工具及 API 存取序列埠輸出,而且只限於每個通訊埠最近 1 MB 的輸出記錄。

如果您啟用將序列埠輸出記錄寫入至 Stackdriver 的功能,記錄保留期限為 30 天,且使用 Stackdriver 時,每月前 50 GB 的記錄為免費。詳情請參閱 Stackdriver 計價方式說明。

事前準備

啟用及停用將序列埠輸出記錄寫入 Stackdriver 的功能

您可以透過設定專案層級或執行個體層級中繼資料,來控制執行個體是否將序列埠輸出傳送至 Stackdriver。您也可以透過設定組織政策來停用機構中所有使用者的這項功能。

設定專案和執行個體中繼資料

如果您的機構未限制將序列埠輸出記錄寫入至 Stackdriver,可以透過將中繼資料 serial-port-logging-enable 設定為 truefalse 來為專案和個別 VM 執行個體啟用或停用該功能。

如果在專案層級serial-port-logging-enable 設為 true,則專案中的所有 VM 執行個體都會繼承該設定。如果在 VM 執行個體層級將其設為 true,則無論專案設定為何,系統都只會針對該 VM 啟用這項功能。

相反地,如要停用專案或執行個體的序列埠輸出記錄功能,請將 serial-port-logging-enable 中繼資料值設為 false。在專案層級將此中繼資料設為 false 時,專案中所有執行個體都會停用將序列埠輸出記錄寫入至 Stackdriver 的功能。在執行個體層級將其設為 false 時,則無論專案設定為何,系統都只會停用該 VM 的序列埠記錄功能。

您可以透過 Google Cloud Platform Console、gcloud 工具或 API 設定中繼資料。詳情請參閱設定自訂中繼資料一節。

例如,您可以使用以下 gcloud 指令,為現有執行個體啟用將序列埠輸出記錄寫入至 Stackdriver 的功能。如果組織政策阻止這項設定,該指令將會失敗。

gcloud compute instances add-metadata instance-name \
    --metadata serial-port-logging-enable=true

如要停用將序列埠輸出記錄寫入至 Stackdriver 的功能,請將 serial-port-logging-enable 設為 false

gcloud compute instances add-metadata instance-name \
    --metadata serial-port-logging-enable=false

排除篩選器

您可以在 Stackdriver 中建立排除篩選器,以從記錄檢視器中移除特定序列埠項目。舉例來說,在專案層級設定 serial-port-logging-enable=true 後,您可以使用如下的進階篩選器,針對特定 VM 執行個體停用序列埠輸出記錄功能。

logName = "projects/project-id/logs/serialconsole.googleapis.com%2Fserial_port_1_output"
resource.type = "gce_instance"
resource.labels.instance_id != "instance-1-id"
resource.labels.instance_id != "instance-2-id"

設定組織政策

您可以透過設定組織政策來為整個機構停用將序列埠輸出記錄寫入至 Stackdriver 的功能,藉此限制 GCP 資源的某些設定。具體而言,您可以設定以下布林限制:constraints/compute.disableSerialPortLogging。詳情請參閱建立及管理組織政策一文。

constraints/compute.disableSerialPortLogging 設為 true 來停用序列埠記錄功能的效力不溯及既往;現有 VM 執行個體如果具有啟用將序列埠記錄寫入至 Stackdriver 的功能的中繼資料,會繼續將記錄寫入 Stackdriver,除非您重設這些執行個體的中繼資料

將此機構限制設為 true 後,您就無法為機構內的任何執行個體,將執行個體或專案中繼資料設定為啟用將序列埠輸出記錄寫入至 Stackdriver 的功能。

查看序列埠輸出內容

主控台

  1. 前往「VM instances」(VM 執行個體) 頁面。

    前往「VM instances」(VM 執行個體) 頁面。

  2. 選取要查看其序列埠輸出內容的 VM 執行個體。
  3. 在「Logs」(記錄) 底下,按一下 [Serial port 1] (序列埠 1)、[Serial port 2] (序列埠 2)、[Serial port 3] (序列埠 3) 或 [Serial port 4] (序列埠 4)。系統層級的執行個體通常會使用第一個序列埠 (序列埠 1),又稱序列主控台

gcloud

使用 gcloud instances get-serial-port-output 指令。

gcloud compute instances get-serial-port-output instance-name \
  --port port \
  --start start \
  --zone zone

其中:

  • instance-name 是執行個體的名稱。
  • port 是序列埠編號 (1234),視您想查看哪個序列埠的輸出而定。系統層級的執行個體通常會使用第一個序列埠 (序列埠 1),又稱序列主控台。系統預設會傳回第一個序列埠的輸出內容。
  • start 是指位元組索引 (從零開始),視您要傳回的第一個位元組而定。如果先前要求的輸出內容過長,無法一次傳回,而您想繼續查看該要求的輸出內容,請使用這個標記。

API

在 API 中,針對 instances.getSerialPortOutput 方法建立 get 要求。

GET https://www.googleapis.com/compute/projects/project-id/zones/zone/instances/instance-name/serialPort

Stackdriver

  1. 啟用 Stackdriver 序列埠記錄功能。
  2. 前往「VM instances」(VM 執行個體) 頁面。

    前往「VM instances」(VM 執行個體) 頁面。

  3. 選取您要查看其啟動代理程式記錄的 VM 執行個體。
  4. 按一下「Logs」(記錄) 底下的 [Stackdriver Logging],查看 Stackdriver 記錄。

  5. 展開「All logs」(所有記錄) 下拉式選單,選取您要查看的序列埠輸出內容。系統層級的執行個體通常會使用第一個序列埠 (序列埠 1),又稱序列主控台。如果下拉式選單中沒有出現某個序列埠,表示這個序列埠沒有可查看的輸出內容。

  6. 您也可以展開「Any log level」(任何記錄層級) 下拉式選單,選擇隱藏低於您要查看的嚴重性等級的記錄。例如,如果您選取 [Info] (資訊) 記錄層級,將會隱藏「Debug」(偵錯) 記錄項目。「Debug」(偵錯) 項目通常只有在啟動時由 BIOS 使用。

  7. 詳情請參閱 Stackdriver 說明文件的查看記錄頁面,包括基本和進階篩選方式。

處理非 UTF8 字元

序列埠輸出內容是使用開放原始碼 Abseil C++ 程式庫的 CHexEscape() 方法逸出,因此非 UTF8 字元會以十六進位字串的形式編碼。您可以使用對應的 CUnescape() 方法,取得發送至序列埠的確切輸出內容。

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Compute Engine 說明文件