Monitoring Containerd
安裝 Instana 主機代理程式之後,會自動安裝 Containerd 感應器。
在配置 Containerd 感應器之後,您可以在 Instana 使用者介面中檢視與 Containerd 相關的度量值,如 配置 小節中所述。
支援的資訊
支援的作業系統
Containerd 感應器支援的作業系統與主機代理程式需求一致,您可以在每一個主機代理程式的 支援的作業系統 區段中檢查這些需求,例如 Unix 支援的作業系統。
支援的環境
如果環境執行 Docker 或 Garden 儲存器,則會自動停用 Containerd 感應器,以防止多個感應器不必要地監視相同的儲存器。
支援的儲存器
支援執行 Containerd 儲存器執行時期的所有儲存器,但暫停儲存器除外。
暫停容器是保留 Pod 的網路名稱空間的容器。 Kubernetes 會建立暫停容器以獲得個別 Pod 的 IP 位址,並為加入該 Pod 的所有其他容器設定網路名稱空間。
由於下列原因,不支援暫停儲存器:
- 監視暫停容器不會帶來基礎架構層次的許多資訊,因為它們是作為 Sidecar Helper 容器。
- 當包含暫停儲存器時,它會使環境中受監視儲存器的數目加倍,因此會增加 Instana 監視成本。
配置
Containerd 感應器需要 crictl 公用程式收集與容器相關聯的 Kubernetes 標籤,並尋找容器日誌。 與容器相關聯的 Kubernetes 標籤會顯示在 Instana 使用者介面的 Kubernetes 標籤 標籤中。
若要啟用這些標籤的收集,您必須在已安裝 Instana 主機代理程式的主機伺服器中安裝 crictl 指令行工具。 然後,針對執行主機代理程式的使用者,將 crictl 二進位檔的路徑新增至 $PATH 環境變數。
附註: 如果未安裝 crictl 指令行工具,則 Containerd 感應器的 CPU 及記憶體用量效能度量值收集可以運作,但與容器相關聯的 Kubernetes 標籤無法顯示在 Instana 使用者介面中的 Kubernetes 標籤 標籤中,且在您啟用該特性時不會收集容器日誌。
配置 Containerd 感應器
您可以在 代理程式配置檔 中配置 Containerd 感應器,如下列範例所示:
com.instana.plugin.containerd:
enabled: true
logs:
enabled: true
sendInterval: 60
maxBufferSize: 16777216
unixSockets:
- '/path/to/containerd.sock'
| 參數 | 說明 | 必要/選用 | 值範圍 |
|---|---|---|---|
| com.instana.plugin.containerd.enabled | 用來啟用 Containerd 感應器的旗標。 | 伺服器配接卡的 | false 或 true。預設值: true |
| com.instana.plugin.containerd.logs.enabled |
可用自 :Containerd sensor 1.0.30。 針對 Containerd 感應器啟用日誌收集的旗標。 |
伺服器配接卡的 | true 或 false。 預設值: false |
| com.instana.plugin.containerd.logs.sendInterval |
可用自 :Containerd sensor 1.0.30。 容器日誌在上傳至後端之前,保持快取在日誌感應器中的持續時間上限 (以秒為單位)。 |
伺服器配接卡的 | 1 到 600。 預設值: 60 |
| com.instana.plugin.containerd.logs.maxBufferSize |
可用自 :Containerd sensor 1.0.30。 內部日誌緩衝區大小上限 (以位元組為單位)。 如果內部日誌緩衝區內容超出大小,則日誌感應器會將內容清除至 Instana 後端。 |
伺服器配接卡的 | 1000 到 32000000。 預設值: 16777216 (16 MB) |
| com.instana.plugin.containerd.unixSockets |
可用自 :Containerd sensor 1.0.30。 containerd.sock 檔案的完整路徑清單。 感應器具有自動 Socket 檔案探索,可搜尋 /run/ 及 /var/run/ 目錄中的 containerd.sock 檔案。 如果為 Socket 配置不同的位置,則需要新增完整路徑。 |
伺服器配接卡的 | 完整檔案路徑的清單。 |
啟用度量值收集
具有 1.2.0 之後 ctr 版本的 Containerd 感應器可以使用 ctr task metrics 指令自動收集度量值。 在此情況下,您不需要手動啟用度量值收集。
具有 ctr 1.2.0 及更舊版本的 Containerd 感應器不支援 metrics 指令。 如果您使用 ctr 1.2.0 或更舊版本,感應器將嘗試從 Prometheus 端點查詢度量值。 若要啟用 Prometheus 端點,您需要在 /etc/containerd/config.toml 配置檔中指定 "metrics" 位址 "127.0.0.1:1338" ,然後重新啟動 containerd.service。
[metrics]
address = "127.0.0.1:1338"
檢視度量值
若要檢視度量值,請完成下列步驟:
- 在 Instana 使用者介面的資訊看板中,選取基礎架構。
- 按一下具有 Containerd 儲存器的主機。
您可以查看包含所有已收集度量及受監視處理程序的主機儀表板。
檢視儲存器詳細資料
若要提取儲存器詳細資料,請按一下 取得儲存器資訊。
即會顯示下列資訊:
- 儲存器 ID
- 影像
- 建立時間
- 更新時間
- Containerd 名稱空間
- 標籤
效能度量
| 度量 | 說明 | 精度 |
|---|---|---|
| CPU 使用率 | 度量包括 CPU 使用率總計、核心 CPU 使用率、使用者 CPU 使用率及正規化 CPU 使用率 | 10 秒 |
| CPU 節流控制 | 節流控制時間及計數 | 10 秒 |
| 記憶體用量 | 度量包括記憶體用量總計 (以位元組為單位)、常駐集大小 (以位元組為單位)、快取用量 (以位元組為單位)、記憶體用量總計 (以百分比為單位) 及工作集用量 (以百分比為單位) | 10 秒 |
| 作用中的記憶體 | 匿名及快取作用中記憶體的數量 | 10 秒 |
| 非作用中記憶體 | 匿名及快取非作用中記憶體的數量 | 10 秒 |
| 區塊 IO | 受監視儲存器寫入區塊裝置及從區塊裝置讀取的資料量 (以位元組為單位) | 10 秒 |
衍生效能度量
您可以在 Instana 使用者介面上檢視下列衍生度量值:
- 正規化 CPU 總計
- 記憶體用量 %
- 記憶體工作集用量%
正規化 CPU 使用率總計
CPU Total Normalized 度量值是容器的正規化 CPU 使用率 (以百分比為單位)。 該值的範圍可以從 0% 到 100%。 度量值是使用下列公式來計算: total_normalized_cpu_usage_percentage = cpu_total_usage / cpu_limit
cpu_limit 值取決於所部署儲存器的配置。 如果未在所部署容器的配置中指定 cpu_limit ,則 total_normalized_cpu_usage_percentage 度量值的值不明。
已知限制
CPU Total Normalized 度量僅在使用控制群組 V1 (cgroupv1) 的系統上受支援。
記憶體用量
Memory Usage % 度量值是記憶體用量 (以百分比為單位) ,包括常駐集大小及檔案系統快取用量。 度量值是使用下列公式來計算: metric_usage_percentage = memory_used / memory_limit
memory_limit 度量值視所部署容器的配置而定。 如果未在所部署容器的配置中指定 memory_limit ,則 memory_used 度量值的值不明。
記憶體工作集用量
Memory Working Set Usage % 是排除檔案系統快取的記憶體用量 (以百分比為單位)。 使用下列公式來計算度量值: memory_working_set_usage_percentage = (memory_used - total_inactive_file)/ memory_limit
memory_limit 值取決於儲存器的部署配置。 當儲存器的部署配置中未指定 memory_limit 時,不會提供 memory_working_set_usage_percentage 。
已知限制
Memory Working Set Usage % 度量僅在使用控制群組 V1 (cgroupv1) 的系統上受支援。
檢視容器日誌
Containerd 感應器 1.0.30 以及更新版本支援 Containerd 日誌收集。
當啟用此特性時, Containerd 感應器只會收集寫入檔案的儲存器日誌,因為 Instana 目前只支援預設記載驅動程式,它會將日誌項目寫入檔案。
例如,在 Kubernetes 部署中, Containerd 日誌可能會寫入 /var/log/pods/{namespace}_{podName}_{podUID}/{containerName} 目錄中的檔案。
您可以在 Instana 使用者介面中按一下 分析 > 日誌 來監視收集的日誌,並使用「儲存器 Snapshot ID」過濾器來過濾日誌,這可以同時過濾 Docker 和 Containerd 日誌訊息。