騰訊雲容器服務監控系統可以監控叢集中所有的節點,服務,執行個體,容器的相關資訊,并且以曲線的方式展示給使用者,同時支援多種粒度的統計方式。監控的基礎資料是由 cAdvisor 擷取,然後上報至監控平台進行聚合。本文将講解容器監控架構和名額統計方式。

Container 為目前該叢集節點(VM)上所有的容器,包括但不限于:
騰訊雲容器服務建立的
Kubenertes Api 建立的
docker run 建立的
cAdvisor 做為一個運作中的 daemon,會自動收集所有運作時容器的監控資訊,例如 cpu,mem 等,經過一定的計算和分類通過頁面或者 api 的方式提供調用。kubenertes 已經将 cAdvisor 功能內建到 kubelet 元件中,同時通過節點 IP+端口也可以直接進行 cAdvisor web 通路。
cAdvisor web 通路方式: http://VmIp:4194
每一台叢集節點(VM)上會部署一個專門收集監控資訊的 agent,每個 agent 會在叢集節點建立時預設安裝并運作,agent 會每分鐘調用 cAdvisor api 擷取容器的監控資訊進行彙總,并且按照多種視圖的方式進行聚合計算等等操作,最終彙總成一個包含容器,服務,節點,叢集,命名空間的有層級的原始資料上報至 Tencent Cloud Monitor Service.
Tencent Cloud Monitor Service 擷取 agent 每分鐘上報的結果,通過我們在監控平台上配置的不同視圖,不同次元的統計方式進行二次聚合,最終以标準的騰訊雲 API 的形式提供給使用者調用。具體的調用方式可以檢視 擷取容器服務監控資料
容器服務以多種視圖的方式提供監控視圖,視圖可以看做是一種分類,每一個視圖通過不同的聚合方式,次元,和名額提供獨立的監控資料。下面會列舉出現在容器服務支援的所有視圖和其監控名額,并且解釋其統計方式
監控項
名額名稱
機關
說明
統計方式
叢集 CPU 使用率
dc_cpu_usage
%
叢集内節點的平均 CPU 使用率
1 分鐘 avg,5 分鐘 max,1 小時 max,1 天 max
叢集記憶體使用率
dc_mem_usage
叢集内節點的平均記憶體使用率
服務 CPU 使用情況
service_cpu_used
核
服務内所有容器執行個體 CPU 使用之和
1 分鐘 sum,5 分鐘 max,1 小時 max,1 天 max
服務 CPU 使用率(占叢集)
service_cpu_usage_for_cluster
服務使用 CPU 占叢集比率
服務記憶體使用情況
service_mem_used
MiB
服務内所有容器執行個體記憶體使用之和
服務記憶體使用率(占叢集)
service_mem_usage_for_cluster
服務使用記憶體占叢集比率
服務網絡入流量
service_in_flux
MB
服務内所有執行個體在該時間視窗入流量之和
1 分鐘 sum,5 分鐘 sum,1 小時 sum,1 天 sum
服務網絡出流量
service_out_flux
服務内所有執行個體在該時間視窗出流量之和
服務網絡入帶寬
service_in_bandwidth
Mbps
服務内所有執行個體的入帶寬之和
服務網絡出帶寬
service_out_bandwidth
服務内所有執行個體的出帶寬之和
服務網絡入包量
service_in_packets
個/s
服務内所有執行個體的入包量之和
服務網絡出包量
service_out_packets
服務内所有執行個體的出包量之和
執行個體網絡入帶寬
pod_in_bandwidth
同一執行個體内容器共享網絡,執行個體(pod) 的網絡入帶寬
執行個體網絡出帶寬
pod_out_bandwidth
同一執行個體内容器共享網絡,執行個體(pod) 的網絡出帶寬
執行個體網絡入流量
pod_in_flux
同一執行個體内容器共享網絡,執行個體(pod) 的網絡入流量
執行個體網絡出流量
pod_out_flux
同一執行個體内容器共享網絡,執行個體(pod) 的網絡出流量
執行個體網絡入包量
pod_in_packets
同一執行個體内容器共享網絡,執行個體(pod) 的網絡入包量
執行個體網絡出包量
pod_out_packets
同一執行個體内容器共享網絡,執行個體(pod) 的網絡出包量
容器 CPU 使用情況
container_cpu_used
容器 CPU 使用量
5 分鐘 max,1 小時 max,1 天 max
容器 CPU 使用率(占主機)
container_cpu_usage_for_node
容器 CPU 使用占主機
容器 CPU 使用率(占 Request)
container_cpu_usage_for_request
容器 CPU 使用占 Request
容器 CPU 使用率(占 Limit)
container_cpu_usage_for_limit
容器 CPU 使用占 Limit
容器記憶體使用情況
container_mem_used
容器記憶體使用量
容器記憶體使用率(占主機)
container_mem_usage_for_node
容器記憶體使用占主機
容器記憶體使用率(占 Request)
container_mem_usage_for_request
容器記憶體使用占 Request
容器記憶體使用率(占 Limit)
container_mem_usage_for_limit
容器記憶體使用占 Limit
容器磁盤讀流量
container_disk_read_traffic
KB/s
容器對磁盤讀流量
容器磁盤寫流量
container_disk_write_traffic
容器對磁盤寫流量
容器磁盤讀 IOPS
container_disk_read
count
容器對磁盤讀 IOPS
容器磁盤寫 IOPS
container_disk_write
容器對磁盤寫 IOPS
上面所描述的統計方式,例如:service_cpu_used(服務 cpu 使用量) 1 分鐘 sum,5 分鐘 max,1 小時 max,1 天 max,解釋如下:
1 分鐘 max: 服務下的所有容器每分鐘上報的 cpu 使用量之合
5 分鐘 max: 基于 1 分鐘的統計結果,5 分鐘共 5 個點,取其中最大值
1 小時 max: 基于 5 分鐘的統計結果,1 小時共 12 個點,取其中最大值
1 天 max: 基于 1 分鐘的統計結果,1 小時共 1440 個點,取其中最大值
其他統計方式與這個類似,其中容器視同中的名額沒有 1 分鐘統計方式,因為容器為最小粒度,顧隻需取得上報的值,即為最後的輸出值,不需要做聚合。
騰訊雲容器服務的監控是基于 cAdvisor 來擷取基礎資料,并且通過一系列的計算,彙總最終呈現給使用者。名額覆寫叢集,服務,執行個體,容器四大部分,共 30 個監控名額,基本涵蓋了大部分使用者訴求,同時提供控制台頁面和雲 API 兩種方式輸出。歡迎大家使用!