安装cAdvisor
创建一个网络,方便cAdvisor、Promethus互相通信
docker network create monitor
创建容器,因为挂载了根目录和docker,因此cAdvisor可以监控到宿主机和docker服务
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=6543:8080 \
--detach=true \
--net monitor \
--name=cadvisor \
--restart=always \
--privileged \
--device=/dev/kmsg \
google/cadvisor:latest
即可访问http://ip:6543
查看到cAdvisor
安装Promethus
挂载配置文件到宿主机
vim /opt/prometheus/conf/prometheus.yml
,这里直接使用容器名- targets: ["cadvisor:8080"]
,是因为cAdvisor和Promethus在docker的同一个网络下
global:
scrape_interval: 15s
evaluation_interval: 15s
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
rule_files:
- rule/record/*.yml
scrape_configs:
- job_name: "prometheus"
static_configs:
# Promethus节点
- targets: ["localhost:9090"]
- job_name: "cadvisor"
static_configs:
# cAdvisor节点
- targets: ["cadvisor:8080"]
启动容器后,可以访问http://ip:9390
查看到Promethus
docker run -d \
-p 9390:9090 \
--name prometheus \
--net monitor \
--restart=always \
-v /opt/prometheus/data:/data \
-v /opt/prometheus/conf/prometheus.yml:/data/prometheus.yml \
prom/prometheus \
--config.file=/data/prometheus.yml --web.enable-lifecycle --storage.tsdb.retention=90d
当能够正常采集到cAdvisor的样本数据后,在prometheus控制台可以通过以下表达式计算容器的CPU使用率:
sum(irate(container_cpu_usage_seconds_total{image!=""}[1m])) without (cpu)
仪表盘
# 安装Grafana
docker run -d --name=grafana -p 3000:3000 -v grafana:/var/lib/grafana grafana/grafana
Grafana配置好数据源,使用仪表盘代码11277
,效果如下
评论区