使用 Prometheus+cAdvisor 监控 Docker 容器指标
一、序言
本篇介绍如何使用Prometheus+cAdvisor来监控容器,操作指南来自官网手册:https://prometheus.io/docs/guides/cadvisor/
Prometheus是什么已经知道了,先介绍一下cAdvisor:
cAdvisor(Container Advisor )是谷歌开发的监控容器并提供容器监控指标导出的软件,监控指标可以被Prometheus使用。
cAdvisor官网地址:https://github.com/google/cadvisor
我也写了一篇关于cAdvisor的安装:https://blog.csdn.net/qq_50247813/article/details/150075606?spm=1001.2014.3001.5501
二、开始部署
本篇笔记参考官网手册,使用docker-compose部署
1. 编写docker-compose
version: '3.2'
services:prometheus:image: prom/prometheus:latestcontainer_name: prometheusports:- 9090:9090command:- --config.file=/etc/prometheus/prometheus.ymlvolumes:- ./prometheus.yml:/etc/prometheus/prometheus.yml:rodepends_on:- cadvisorcadvisor:image: gcr.nju.edu.cn/cadvisor/cadvisor:latestcontainer_name: cadvisorports:- 8080:8080volumes:- /:/rootfs:ro- /var/run:/var/run:rw- /sys:/sys:ro- /var/lib/docker/:/var/lib/docker:rodepends_on:- redisredis:image: redis:latestcontainer_name: redisports:- 6379:6379
-
在上面的yml文件中需要注意:
volumes:- ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
prometheus容器将当前目录下的prometheus.yml映射到了容器里面,所以需要保证当前目录下有这个文件。
-
由于默认的gcr.io/cadvisor/cadvisor:latest 镜像在国内无法访问所以这里替换成南京源,需要配置docker镜像加速:
"registry-mirrors": ["https://docker.nju.edu.cn"]
2. 配置Prometheus
在监控作业中添加一个cadvisor
,targets目标为cadvisor:8080
scrape_configs:
- job_name: cadvisorscrape_interval: 5sstatic_configs:- targets:- cadvisor:8080
查看当前目录文件:
ls -1
docker-compose.yml
prometheus.yml
3. 运行docker-compose
docker-compose up -d
docker-compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
cadvisor gcr.nju.edu.cn/cadvisor/cadvisor:latest "/usr/bin/cadvisor -…" cadvisor 11 minutes ago Up About a minute (healthy) 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp
prometheus prom/prometheus:latest "/bin/prometheus --c…" prometheus 11 minutes ago Up About a minute 0.0.0.0:9090->9090/tcp, :::9090->9090/tcp
redis redis:latest "docker-entrypoint.s…" redis 11 minutes ago Up About a minute 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp
三、查看监控效果
1. 查看一下cadvisor监控
cadvisor监控在8080端口:
查看一下监控指标:
2. 查看Promethus监控
3. 通过容器监控指标获取监控内容
这些都是监控指标;
- container_memory_usage_bytes{name=“redis”} : 查看 redis cgroup 的总内存使用量(以字节为单位)