跳转至

Docker

Cloud Insight 支持监控 Docker 容器情况,不仅监控容器使用 cpu、network、io、disk 等做通用指标,还因为 Doker 通过 cgroup 来做资源限制,Agent 通过在宿主机本身查看对应容器的 cgroup stats 来监控容器的信息,状态等。

通过配置文件安装和直接一键安装等区别是:直接一键安装会生成一个 Cloud Insight 容器,所有的配置文件会在一个容器内,其它监控到的数据是相同的。


性能指标

Cloud Insight 采集 Docker 以下性能指标:

指标 单位 具体含义
docker.container.size_rootfs bytes 容器中所有文件的总大小
docker.container.size_rw bytes 容器中被正在运行的进程创建或更改的所有文件的总大小
docker.containers.running 这个主机上正在运行的容器数量
docker.containers.stopped 这个主机上已停止的容器数量
docker.cpu.system fractions CPU 中代表此容器的进程执行系统调用(executing system calls)的时间占比
docker.cpu.user fractions CPU 直接控制此容器的进程的时间分数(fraction)
docker.image.size bytes 磁盘上镜像的所有图层(layers)的大小
docker.image.virtual_size bytes 磁盘上镜像的所有图层(layers)的大小
docker.images.available 顶级(top-level)镜像的数量
docker.images.intermediate 中间镜像的数量,它们是构成其他镜像的中间图层
docker.io.read_bytes bytes/second 容器上的进程每秒从磁盘读取的字节数
docker.io.write_bytes bytes/second 容器上的进程每秒向磁盘写入的字节数
docker.mem.cache bytes 正用于缓存磁盘数据的存储器的量 (e.g. 可以精确地与块设备上的块相关联的存储器内容)
docker.mem.in_use fractions 已使用内存占可用内存的比例
docker.mem.limit bytes 容器的内存限制(如果设置)
docker.mem.rss samples/second 除缓存以外的内存使用量,用于堆栈,堆等
docker.mem.swap bytes 容器当前已使用的交换(swap)量
docker.mem.sw_in_use fractions 已使用的 swap + memory 与可使用的 swap + memory 的比例
docker.mem.sw_limit bytes 容器的 swap + memory 限制
docker.net.bytes_rcvd bytes/second 每秒从网络接收的字节数
docker.net.bytes_sent bytes/second 每秒向网络发送的字节数

具体参数含义参考 Docker Runtime metrics


配置 Docker 监控

在 Docker 组中引入 Agent

首先确保 Docker 已正常运行在服务器上,并引入 Agent 至 Docker 组中。

usermod -a -G docker CiAgent

编辑配置文件

编辑配置文件 conf.d/docker_daemon.yaml,使 Cloud Insight Agent 可以与 Docker 通信。

init_config:

instances:
  - url: "unix://var/run/docker.sock"

重启 Agent

重启 Cloud Insight Agent,使配置生效。

您也可以通过查看 Agent Info 信息,来验证配置是否成功。当出现以下信息,则代表安装成功。

Checks
======

[...]

docker_daemon
-------------
  - instance #0 [OK]
  - Collected 8 metrics & 0 events

有关 Agent Info 信息的查看,请访问帮助中心,查看 Cloud Insight Agent 常用操作


默认标签

Cloud Insight 采集 Docker 以下默认主机标签:

标签种类 标签含义
container_name 容器的名称(例如 "boring_euclid")
image_name 镜像(image)的名称(例如 "nginx")
image_tag 镜像(image)的标签(例如 "latest")
docker_image 镜像(image)名的全称(例如 "nginx:latest")

5分钟,开启你的跨云监控之旅 (`⌄´ )


常见问题