Docker 监控
众所周知 可以查看运行的 Docker 镜像的运行状态,例如:
这种方式比较原始,因为你无法通过 http 的方式来获取数据,而且没有界面,数据可视化还需要做大量的工作。
由于 dokcer stats
有这些问题,所以 cadvisor
诞生了。cadvisor
不仅可以搜集一台机器上所有运行的容器信息还提供基础查询界面和 http 接口,方便 Prometheus 进行数据抓取。
正是因为 cadvisor
与 Prometheus 的完美结合,所以它成为了容器监控的第一选择。
Step1: 使用 docker pull
下载最新版本的 cadvisor
$ docker pull google/cadvisor:latest
Step2: 使用 docker images
查看下载的版本
$ docker images
google/cadvisor latest 75f88e3ec333 4 months ago 62.2MB
Step3: 使用 启动
当启动成功后,使用 docker ps
你会看到
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
742a464fa631 google/cadvisor:latest "/usr/bin/cadvisor -…" 1 second ago Up 1 second 0.0.0.0:8080->8080/tcp cadvisor
Step4: 访问 http://localhost:8080
你将看到:
Tips1: 访问 http://localhost:8080/docker
可以查看到所有运行的 dokcer 镜像:
Tips2: 选择任意一个镜像,你将看到其运行状态的详细信息:
Tips3: 访问 http://localhost:8080/metrics
可以查看其暴露给 Prometheus 的所有数据:
Step1: 修改 Prometheus 配置信息,添加 cadvisor 访问地址:
#prometheus.yml
scrape_configs:
- job_name: 'node'
- targets: ['127.0.0.1:9100']
- job_name: 'container'
static_configs:
- targets: ['127.0.0.1:8080'] # 本地 cadvisor 访问地址
Step2: 重新加载配置,访问 http://localhost:9090/targets
你将看到新加的 cadvisor
已经生效。
CPU 使用率查询:
内存使用量:
sum by (name)(container_memory_usage_bytes{image!=""})
网络入口流量
sum by (name) (rate(container_network_receive_bytes_total{image!=""}[1m]))
网络出口流量
磁盘使用量: