在Docker容器化部署场景中,实时监控容器的资源使用情况、性能指标是保障服务稳定运行的关键。本文将详细讲解Google开源容器监控工具cAdvisor的核心作用,以及如何通过Docker方式部署cAdvisor、搭配node-exporter完善主机监控,并配置Prometheus实现数据抓取,全程实操可落地,适合运维、开发人员快速上手。

要监控docker状态,需要使用一个软件cAdvisor,cAdvisor(Container Advisor)是Google开源的容器资源监控和性能分析工具,它是专门为容器而生,可以用于收集正在运行的容器资源使用和性能信息。

cadvisor不仅可以搜集一台机器上所有运行的容器信息,还提供基础查询界面和http接口,方便其他组件如Prometheus进行数据抓取。

cAdvisor可以对节点机器上的资源及容器进行实时监控和性能数据采集,包括CPU使用情况、内存使用情况、网络吞吐量及文件系统使用情况

Cadvisor使用Go语言开发,利用Linux的cgroups获取容器的资源使用信息,在K8S中集成在Kubelet里作为默认启动项,官方标配。

2、docker方式部署cAdvisor

运行单个cAdvisor来监控整个Docker主机,被监控端安装完Docker后,就可以添加cAdvisor容器了,这里假定被监控主机ip为172.16.213.31,执行如下命令部署cAdvisor容器服务:

[root@centosserver ~]# docker run \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:ro \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --volume=/dev/disk/:/dev/disk:ro \
  --publish=8080:8080 \
  --detach=true \
  --name=cadvisor \
  --restart=always \
  google/cadvisor:latest

这样,cAdvisor容器服务就部署完成了。cAdvisor查询界面和http接口,可访问ip:8080打开web界面:

cAdvisor也提供了供prometheus访问的接口,可访问ip:8080/metrics,如下图所示:

为了监控172.16.213.31主机基础服务状态,还需要安装node-exporter服务,对node-exporter的安装,这里也采用容器方式,安装命令如下:

[root@centosserver ~]# docker run -d -p 9100:9100 -v /prohost/proc -v /sys:/host/sys -v /:/rootfs prom/node-exporter --path.procfs /host/proc --path.sysfs /host/sys --collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($|/)"

部署完成后,node-exporter服务默认监听在9100端口。

3、配置prometheus

修改配置文件prometheus.yml,在默认的job段prometheus的static_configs下面添加新的主机IP:

static_configs:
   - targets: ["localhost:9090",'172.16.213.50:9100','172.16.213.186:9100','172.16.213.233:9104','172.16.213.186:9121','172.16.213.31:9100']

其中,172.16.213.31:9100是新增的被监控主机。

接着,在最后一行添加如下内容:

- job_name: 'docker'
  static_configs:
   - targets: ['172.16.213.31:8080']
       labels:
         instance: docker-test

配置完成,重启prometheus即可。

更多推荐