监控docker需要借助一个专业的工具:cAdvisor,这个是由Google提供的,下面开始演示如何使用:
使用非常简单,首先在被监控的docker主机上运行cAdvisor容器实例就可以了:
[root@nginx ~]# docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --publish=8080:8080 --detach=true --name=cadvisor google/cadvisor:latest
[root@nginx ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
db39f4994026 google/cadvisor:latest "/usr/bin/cadvisor -…" 29 minutes ago Up 29 minutes 0.0.0.0:8080->8080/tcp cadvisor
[root@nginx ~]#
实例已经运行,监听的是本机的8080端口,下面通过访问本机的8080端口就可以看到监控的数据了
下面通过prometheus来采集它的数据,并接入到grafana来展示,修改prometheus配置:
在prometheus.yml文件中新加入一个监控对象
- job_name: 'docker'
static_configs:
- targets: ['192.168.6.99:8080']
热加载一下prometheus就可以了,然后去grafana的官方网站找一个docker的面板
我使用的是这个,编号是11600,直接使用这个编号导入就可以了,导入后画面是这样的:
基本上能看得过去,测试了好几个,这个算是比较靠谱的了,愿意花功夫的朋友可以对它再升级改造一下。
下面表格中列举了一些CAdvisor中获取到的典型监控指标:
指标名称 类型 含义
container_cpu_load_average_10s gauge 过去10秒容器CPU的平均负载
container_cpu_usage_seconds_total counter 容器在每个CPU内核上的累积占用时间 (单位:秒)
container_cpu_system_seconds_total counter System CPU累积占用时间(单位:秒)
container_cpu_user_seconds_total counter User CPU累积占用时间(单位:秒)
container_fs_usage_bytes gauge 容器中文件系统的使用量(单位:字节)
container_fs_limit_bytes gauge 容器可以使用的文件系统总量(单位:字节)
container_fs_reads_bytes_total counter 容器累积读取数据的总量(单位:字节)
container_fs_writes_bytes_total counter 容器累积写入数据的总量(单位:字节)
container_memory_max_usage_bytes gauge 容器的最大内存使用量(单位:字节)
container_memory_usage_bytes gauge 容器当前的内存使用量(单位:字节
container_spec_memory_limit_bytes gauge 容器的内存使用量限制
machine_memory_bytes gauge 当前主机的内存总量
container_network_receive_bytes_total counter 容器网络累积接收数据总量(单位:字节)
container_network_transmit_bytes_total counter 容器网络累积传输数据总量(单位:字节)