一、前言
- 在 Kubernetes 系统里,由 kubelet 内置的 cadvisor 组件收集每个容器资源监控信息,但官方基于性能相关的考虑,如果抓取这些每个容器中网络相关的指标,将会耗费大量的 CPU 内存资源,cadvisor 中默认给关掉了网络等相关指标的收集。
-
- https://github.com/google/cadvisor/blob/master/docs/runtime_options.md#metrics
-
- https://github.com/kubernetes/kubernetes/issues/60279
- 因此在 prometheus 默认抓取的 kubelet cadvisor metrics 端点,监控上报的数据中,容器网络相关的指标 container_network_tcp_usage_total 和 container_network_udp_usage_total 等都为0,但实际业务监控中可能需要这些指标的收集,用于监控告警以及排查问题。
二、方案①
- 如果想要从 cadvisor 中获取这些指标,需要修改 kubelet 文件里的配置,即需要修改 kubelet 源码并重新编译,这个并不 native。
- 另一种方案是自己部署 cadvisor daemonset&