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 感應器的旗標。 伺服器配接卡的 falsetrue
預設值: true
com.instana.plugin.containerd.logs.enabled
可用自 :Containerd sensor 1.0.30。
針對 Containerd 感應器啟用日誌收集的旗標。
伺服器配接卡的 truefalse
預設值: 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"

檢視度量值

若要檢視度量值,請完成下列步驟:

  1. 在 Instana 使用者介面的資訊看板中,選取基礎架構。
  2. 按一下具有 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 日誌訊息。