元件記錄
Istio 元件是使用彈性的記錄框架建置的,該框架提供許多功能和控制項,以協助操作這些元件並促進診斷。您可以透過在啟動元件時傳遞命令列選項來控制這些記錄功能。
記錄範圍
元件輸出的記錄訊息會依範圍分類。範圍代表一組相關的記錄訊息,您可以整體控制這些訊息。不同的元件具有不同的範圍,取決於元件提供的功能。所有元件都有 default
範圍,用於未分類的記錄訊息。
例如,在撰寫本文時,istioctl
有 25 個範圍,代表命令內的各種功能區域
ads
、adsc
、all
、analysis
、authn
、authorization
、ca
、cache
、cli
、default
、installer
、klog
、mcp
、model
、patch
、processing
、resource
、source
、spiffe
、tpath
、translator
、util
、validation
、validationController
、wle
Pilot-Agent、Pilot-Discovery 和 Istio Operator 都有各自的作用域,您可以查看它們的參考文件來了解。
每個作用域都有一個獨特的輸出級別,可以是以下其中之一:
- none
- error
- warn
- info
- debug
其中 none
表示該作用域不產生任何輸出,而 debug
則產生最大量的輸出。所有作用域的預設級別為 info
,其目的是為在正常情況下運行 Istio 提供適量的日誌資訊。
要控制輸出級別,您可以使用 --log_output_level
命令列選項。例如:
$ istioctl analyze --log_output_level klog:none,cli:info
除了從命令列控制輸出級別之外,您還可以透過使用正在執行的元件的 ControlZ 介面來控制其輸出級別。
控制輸出
日誌訊息通常會傳送到元件的標準輸出串流。--log_target
選項可讓您將輸出導向到任意數量的不同位置。您可以為該選項提供以逗號分隔的檔案系統路徑列表,以及特殊值 stdout
和 stderr
分別表示標準輸出和標準錯誤串流。
日誌訊息通常以人類易讀的格式輸出。可以使用 --log_as_json
選項強制將輸出轉換為 JSON 格式,這樣可以更容易讓工具處理。
記錄輪替
Istio 控制平面元件可以自動管理日誌輪換,這使得將大型日誌分割成較小的日誌檔案變得簡單。 --log_rotate
選項可讓您指定用於輪換的基本檔案名稱。衍生名稱將用於個別的日誌檔案。
--log_rotate_max_age
選項可讓您指定執行檔案輪換之前經過的最大天數,而 --log_rotate_max_size
選項則可讓您指定執行檔案輪換之前允許的最大大小(以 MB 為單位)。最後,--log_rotate_max_backups
選項可讓您控制要保留的最大輪換檔案數量,較舊的檔案將會自動刪除。
元件偵錯
--log_caller
和 --log_stacktrace_level
選項可讓您控制日誌資訊是否包含程式設計師級別的資訊。這在嘗試追蹤元件中的錯誤時很有用,但在日常操作中通常不會使用。