容器监控全景!从 cAdvisor 到 Prometheus + Grafana 构建资源观测平台

容器跑着跑着就"满了"?Pod 为什么频繁 OOM?Node 到底瓶颈在哪?这一讲,我们将带你从基础到实战,构建起完整的容器监控体系,为稳定运维保驾护航!


一、为什么容器监控至关重要?

在传统架构中,资源消耗相对固定,应用部署也较少变动。但在容器化环境中:

  • 容器数量动态弹性伸缩
  • 容器生命周期极短
  • 单个宿主机承载多个容器,资源竞争剧烈
  • 多层抽象结构:容器、Pod、Node、集群

因此,仅靠传统监控工具(如 top、htop、Zabbix)难以胜任,必须构建专门的容器可观测体系。


二、容器监控的关键维度

容器监控需覆盖多个层面,包括:

层级 关键指标
容器/Pod CPU、内存、磁盘、网络使用情况
Node(宿主机) 系统负载、资源总量与剩余量
集群层 节点健康、调度状态、控制器状况
应用层 QPS、响应时间、错误率等

三、容器监控主流方案对比

方案 组成 特点
cAdvisor Docker 原生监控组件 轻量、实时,但功能有限
Prometheus 指标采集 + 时序存储 社区主流,扩展性强
Grafana 可视化展示平台 多数据源、支持告警
kube-state-metrics K8s 对象状态指标 集群维度指标补充
node-exporter 宿主机指标采集器 采集 CPU、磁盘、内存等主机资源

四、容器监控架构图

说明:

  • cAdvisor:实时采集容器级别的 CPU、内存等使用信息;
  • node-exporter:采集宿主机指标;
  • kube-state-metrics:提供集群对象状态指标;
  • 所有指标统一送入 Prometheus;
  • Grafana 展示可视化仪表盘、设置告警规则。

五、部署 Prometheus + Grafana 监控平台

5.1 使用 kube-prometheus 快速部署(推荐)

kube-prometheus 是官方维护的 K8s 全栈监控部署方案,涵盖以下组件:

  • Prometheus
  • Alertmanager
  • Grafana
  • node-exporter
  • kube-state-metrics

部署方式(基于 Kustomize):

bash 复制代码
git clone https://github.com/prometheus-operator/kube-prometheus.git
cd kube-prometheus
kubectl apply -f manifests/setup
kubectl apply -f manifests/

5.2 安装完成后访问路径

  • Grafana Dashboard:http://:30000
  • 默认用户名密码:admin/admin
  • 可导入 ID:1860 的容器监控仪表盘模板

六、如何监控 Docker 容器?cAdvisor 使用指南

6.1 什么是 cAdvisor?

  • 全称:Container Advisor
  • Google 开发,原生支持 Docker,能实时采集:
    • 容器 CPU/内存/网络/Disk I/O 使用
    • 容器生命周期信息

6.2 部署方式

bash 复制代码
docker run \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:rw \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --publish=8080:8080 \
  --detach=true \
  --name=cadvisor \
  google/cadvisor:latest

6.3 效果展示

  • 访问 http://localhost:8080
  • 可查看所有容器实时资源使用情况
  • Prometheus 可通过抓取 /metrics 接口采集数据

七、Grafana 可视化仪表盘推荐

仪表盘名称 Grafana Dashboard ID
Docker 容器监控 179
Node Exporter 1860
Kubernetes 总览 6417
Pod 级别资源使用 315

通过导入对应 Dashboard ID,可以快速搭建出丰富的监控界面。


八、监控告警设置

借助 Prometheus Alertmanager,可以设置监控告警:

示例:Pod OOM 告警规则

yaml 复制代码
- alert: ContainerMemoryUsageHigh
  expr: container_memory_usage_bytes / container_spec_memory_limit_bytes > 0.9
  for: 1m
  labels:
    severity: warning
  annotations:
    summary: "容器内存使用过高(超过90%)"

可将告警通过邮件、钉钉、Slack、飞书等方式发送。


九、容器监控最佳实践

建议 说明
采集频率合理 容器生命周期短,建议抓取周期 ≤ 30s
标签管理规范 给容器打上业务标签,便于查询
告警设置分级 warning / critical 分层处理
日志 + 指标结合 单独指标不足以定位问题,需结合日志/Trace
自动化仪表盘 使用 Helm、Json 模板自动化部署和复用仪表盘

十、总结

本文带你全面了解了容器监控的现状与解决方案,从单节点 cAdvisor,到集群级 Prometheus + Grafana 架构,并实战部署了核心组件与仪表盘设置,为下一步打造可观测平台打下基础。

相关推荐
容器魔方16 分钟前
HDC 2025丨华为云云原生剧透!智能驱动的全新一代AI-Native云原生基础设施
云原生·容器·云计算
林太白19 分钟前
也许看了Electron你会理解Tauri,扩宽你的技术栈
前端·后端·electron
松果集25 分钟前
【Python3】练习一
后端
anganing25 分钟前
Web 浏览器预览 Excel 及打印
前端·后端
肯定慧28 分钟前
B1-基于大模型的智能办公应用软件
后端
TinyKing37 分钟前
一、getByRole 的作用
后端
brzhang1 小时前
我们复盘了100个失败的AI Agent项目,总结出这3个“必踩的坑”
前端·后端·架构
SHIPKING3931 小时前
【Docker安装PostgreSQL】psql:致命错误: 用户 Password 认证失败
docker·postgresql·容器
2401_853275731 小时前
对微服务的了解
微服务·云原生·架构