本地执行cadvisor收集数据

https://github.com/google/cadvisor #官方网站

wget https://github.com/google/cadvisor/releases/download/v0.47.2/cadvisor-v0.47.2-linux-amd64

#下载最新版linux二进制文件

cadvisor-v0.47.2-linux-amd64

nohup ./cadvisor-v0.47.2-linux-amd64 & #后台运行,默认端口8080,不要冲突

访问ip+端口可以进入cadvisor页面

可以看到所有容器的数据

在prometheus内加入参数,获得cadvisor收集的数据

  - job_name: "docker"
    static_configs:
     - targets: ["192.168.48.139:8080"]

通过docker运行cadvisor镜像收集数据

VERSION=v0.36.0 # use the latest release version from https://github.com/google/cadvisor/releases
[root@localhost ~]# sudo 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=8080:8080 \
>   --detach=true \
>   --name=cadvisor \
>   --privileged \
>   --device=/dev/kmsg \
>   google/cadvisor:latest

使用此命令会直接拉去并且创建一个cadvisor容器,使用8080端口进行监控主机,详细解释

  • --volume=/:/rootfs:ro: 将宿主机的根目录挂载到容器内的 /rootfs 目录,以供容器读取(只读模式)。

  • --volume=/var/run:/var/run:ro: 将宿主机的 /var/run 目录挂载到容器内的 /var/run 目录,以供容器读取(只读模式)。

  • --volume=/sys:/sys:ro: 将宿主机的 /sys 目录挂载到容器内的 /sys 目录,以供容器读取(只读模式)。

  • --volume=/var/lib/docker/:/var/lib/docker:ro: 将宿主机的 /var/lib/docker 目录挂载到容器内的 /var/lib/docker 目录,以供容器读取(只读模式)。

  • --volume=/dev/disk/:/dev/disk:ro: 将宿主机的 /dev/disk 目录挂载到容器内的 /dev/disk 目录,以供容器读取(只读模式)。

  • --publish=8080:8080: 将容器的8080端口映射到宿主机的8080端口,以便通过宿主机访问cadvisor的Web界面。

  • --detach=true: 将容器以后台模式运行。

  • --name=cadvisor: 指定容器的名称为cadvisor。

  • --privileged: 赋予容器特权,以便允许对主机的内核进行一些操作。

  • --device=/dev/kmsg: 将宿主机的 /dev/kmsg 设备挂载到容器内,以供容器读取。

将8080端口添加到prometheus配置文件内,重启prometheus

 - job_name: "docker"
    static_configs:
     - targets: ["192.168.48.139:8080"]