Container-Optimized OS 內含記錄代理程式,可將部分系統和容器記錄匯出至 Cloud Logging。在 Container-Optimized OS 101 之前,以 x86 為基礎的 Container-Optimized OS 映像檔使用以 fluentd 為基礎的容器化記錄代理程式。Container-Optimized OS 105 開始出貨時,採用了替代記錄代理程式實作項目 fluent-bit。從 Container-Optimized OS 109 開始,fluent-bit 記錄代理程式為預設選項。舊版記錄代理程式 fluentd 將在 Container-Optimized OS 113 中移除。
所有版本的 Arm 架構 Container-Optimized OS 映像檔都會隨附 fluent-bit 記錄代理程式。
啟用記錄代理程式
記錄代理程式預設為停用。建立新執行個體或更新現有執行個體時,即可啟用這項功能。
存取條件
Cloud Logging 提供 IAM 角色,可用於授予適當的存取權。如要在專案中查看記錄,您必須具備 roles/logging.viewer 角色,且應用程式必須有權寫入記錄。如要授予這項權限,請為應用程式的服務帳戶指派 IAM 角色 roles/logging.logWriter。
如要進一步瞭解權限和角色,請參閱預先定義的角色。
建立啟用記錄代理程式的執行個體
控制台
如要在 Container-Optimized OS 上執行 Compute Engine 執行個體,並啟用 fluent-bit 記錄代理程式,請執行下列操作:
在 Cloud de Confiance 控制台中開啟 Compute Engine 執行個體建立頁面。
為您的執行個體指定名稱。
在「Boot disk」(開機磁碟) 區段中,選取 Container-Optimized OS 映像檔。
按一下「管理、安全性、磁碟、網路、單獨租用」,即可展開其他選項。
在「管理」分頁標籤下方,捲動至「中繼資料」部分。新增中繼資料項目,將「Key」(鍵) 設為
google-logging-enabled,並將「Value」(值) 設為true。視需要指定其他選項。詳情請參閱「建立及設定執行個體」。
按一下 [Create] (建立) 以建立並啟動執行個體。
gcloud
如要在 Container-Optimized OS 上執行 Compute Engine 執行個體,並啟用記錄代理程式,請使用 gcloud compute instances create 指令,並在中繼資料中加入 google-logging-enabled=true。例如:
gcloud compute instances create instance-name \
--image image-name \
--image-project cos-cloud \
--zone compute-zone \
--metadata google-logging-enabled=true
更改下列內容:
- instance-name:VM 執行個體的名稱。
- image-name:執行個體的 Container-Optimized OS 映像檔名稱。例如:
--image=cos-113-18244-85-29。 - compute-zone:執行個體的運算可用區。
如要進一步瞭解 gcloud 指令,請參閱 gcloud compute instances create 參考文件。如要進一步瞭解如何建立 Container-Optimized OS 執行個體,請參閱建立及設定執行個體。
選取記錄代理程式
以 x86 為基礎的 Container-Optimized OS 105 和 109 映像檔會隨附兩種記錄代理程式實作方式:fluentd (舊版) 和 fluent-bit。Container-Optimized OS 105 預設使用 fluentd,Container-Optimized OS 109 則預設使用 fluent-bit。您可以使用 google-logging-use-fluentbit 中繼資料項目變更預設行為。
如要在 Container-Optimized OS 105 上使用 fluent-bit 記錄代理程式,請將 google-logging-use-fluentbit 值設為 true。
如要在 Container-Optimized OS 109 上使用 fluentd 記錄代理程式,請將 google-logging-use-fluentbit 值設為 false。
在專案中繼資料中啟用記錄代理程式
從里程碑 97 開始,您可以在專案中繼資料中啟用記錄:
gcloud compute project-info add-metadata \
--metadata google-logging-enabled=true
存取記錄檔
控制台
前往「VM instances」(VM 執行個體) 頁面。
按一下要存取記錄的 Container-Optimized OS 執行個體名稱。
按一下「記錄」專區下方的「Cloud Logging」。
系統會開啟指定執行個體的 Logs Explorer。詳情請參閱「使用 Logs Explorer」。
gcloud
如要存取記錄,請使用 gcloud logging read 指令。例如:
gcloud logging read \
"resource.type=gce_instance AND resource.labels.instance_id=instance-id" \
--limit 10 \
--format json \
--freshness 30d
更改下列內容:
- instance-id:VM 執行個體的 ID。
這項指令會嘗試從 VM 執行個體讀取記錄 (instance-id),並將記錄限制為過去 30 天內最多 10 筆,且採用 JSON 格式。
如要進一步瞭解 gcloud 指令,請參閱 gcloud logging read 參考文件。
運作原理
根據預設,記錄代理程式會設定為將特定系統重要服務和使用者應用程式容器的記錄傳送至 Cloud Logging 後端。例如 Docker 容器的記錄、選取的 systemd 服務、稽核記錄、記錄錯誤等。如需完整的預設記錄設定,請參閱 Container-Optimized OS 的特定設定來源 (x86 映像檔和 Arm 映像檔)。
如果是 Container-Optimized OS 105 之前的 x86 映像檔,記錄代理程式是 Google Cloud Observability 的容器化舊版 Logging 代理程式。啟動記錄代理程式的 Docker 指令定義於 Container-Optimized OS 的 stackdriver-logging systemd 服務來源。執行的容器化代理程式版本定義於 Container-Optimized OS 來源 app-admin/stackdriver 目錄。
對於所有版本的 Arm 映像檔,以及 Container-Optimized OS 109 以上版本的 x86 映像檔,記錄代理程式是名為 fluent-bit 的內建 OS 套件。代理程式內建於 OS 中,並會隨著 OS 映像檔更新。
已知限制
與 gcplogs 驅動程式的相容性
從里程碑 89 開始,如果啟用 Container-Optimized OS 隨附的記錄代理程式,並為一或多個容器啟用 Docker gcplogs 記錄驅動程式,隨附的記錄代理程式可能會輸出過多的警告記錄。這可能會產生記錄雜訊,和/或增加 Cloud Logging 相關費用。
解決方法是不要使用 gcplogs 做為 Docker 記錄驅動程式,而是使用 Container-Optimized OS 設定的預設驅動程式。請注意,Container-Optimized OS 隨附的記錄代理程式會將容器記錄匯出至 Cloud Logging,因此不必同時使用這兩種解決方案。
Logging 代理程式設定相容性
記錄代理程式是 x86 架構 Container-Optimized OS 映像檔上的 fluentd 型容器,以及 Arm 架構 Container-Optimized OS 映像檔上的 fluent-bit 二進位檔。這兩個代理程式的設定不相容。如果您只依賴 OS 映像檔內建的預設記錄設定,就不會有問題。不過,如果您有自訂記錄設定,將工作負載遷移至以不同架構為基礎的映像檔,或遷移至新版 Container-Optimized OS 時,可能會發生中斷情形。