一、序言
本篇介绍如何使用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:latest
container_name: prometheus
ports:
- 9090:9090
command:
- --config.file=/etc/prometheus/prometheus.yml
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
depends_on:
- cadvisor
cadvisor:
image: gcr.nju.edu.cn/cadvisor/cadvisor:latest
container_name: cadvisor
ports:
- 8080:8080
volumes:
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
depends_on:
- redis
redis:
image: redis:latest
container_name: redis
ports:
- 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: cadvisor
scrape_interval: 5s
static_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 的总内存使用量(以字节为单位)