Prometheus+Grafana监控系统配合Cadvisor监控Docker容器

prometheus使用cadvisor监控docker容器

1.cadvisor概述

一般公司会有很多docker主机,那么就需要对docker进行监控了,docker监控可以采用docker stats配合shell命令来取值做监控,但是无法传递给prometheus进行采集,zabbix监控docker又比较麻烦,因此就有了谷歌的cadvisor

cadvisor不仅可以搜集一台机器上的所有运行的容器信息,还提供基础查询界面的http接口,方便prometheus进行数据抓取

cadvisor可以对节点机器上的资源及容器进行实时监控和性能数据采集,包括CPU使用情况、内存使用情况、网络吞吐量及文件系统使用情况,但是cadvisor有个缺陷,只能实时展现当前的监控数据,对于历时数据不做保留,因此需要使cadvisor接入prometheus,由prometheus内置的tsdb数据库进行存储历时数据

cadvisor利用Linux的cgroups获取容器的资源使用情况,在k8s中集成,官方标配

cadvisor需要在每台docker主机都要安装

docker主要监控容器内存、CPU、磁盘、网卡

使用docker stats监控容器性能的命令

[root@192_168_81_220 docker]# docker stats --no-stream nervous_moser
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
e265e173ac98 nervous_moser 0.00% 5.605MiB / 972.6MiB 0.58% 2.42kB / 0B 27.3MB / 22.5kB 2

最终配合和grafana展示监控docker容器效果
可以在图中清楚的看到每个容器的CPU、内存使用率以及每台主机上运行容器的数量
在这里插入图片描述

2.环境准备

IP 主机名 服务
192.168.81.210 prometheus-server prometheus、grafana
192.168.81.220 192_168_81_220 docker、cadvisor
192.168.81.230 192_168_81_230 docker、cadvisor

3.在docker服务器上部署docker

192.168.81.220/92.168.81.230服务器都需要操作

1.获取镜像源
wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
 
sed -i 's#download.docker.com#mirrors.tuna.tsinghua.edu.cn/docker-ce#' /etc/yum.repos.d/docker-ce.repo 

yum makecache fast

2.安装docker
yum -y install docker-ce
systemctl start docker
systemctl enable docker

3.配置镜像加速器
 tee /etc/docker/daemon.json <<-'EOF'
{
   "registry-mirrors": ["https://zggyaen3.mirror.aliyuncs.com"]
}
EOF


4.启动docker
systemctl restart docker

5.简单运行一个容器
docker run -d nginx:latest

4.docker安装cadvisor监控

4.1.安装cadvisor

在docker主机都操作,192.168.81.220/92.168.81.230服务器都需要操作

docker run \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:rw \
  --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 \
  google/cadvisor:latest
  
注释:   --volume=/:/rootfs:ro 		#将/目录挂载到容器的/rootfs,权限为读
	    --volume=/var/run:/var/run:rw 	#将/var/run挂载到容器的/var/run目录,权限为读写
	    其他的volume都是这个意思,ro为读,rw为读写
	    --volume=/var/lib/docker/:/var/lib/docker:ro			#这个是将宿主机的docker目录挂载到容器,因为cadvisor需要监控所有容器,因此需要挂载
	    --publish=8080:8080 		#开放公共端口

最终效果为,两台机器都启动了cadvisor和nginx镜像

在这里插入图片描述

4.2.访问cadvisor查看监控数据

访问http://宿主机的ip:8080j即可

在这里插入图片描述

4.3.查看某一个容器的监控信息

点击首页/docker,跳转进去后,可以看到subcontainers下面容器列表,下面显示的都是容器id,可以用docker ps看到具体的容器

在这里插入图片描述

打开后即可看到具体的某个容器监控指标

在这里插入图片描述

也可以看到图像

在这里插入图片描述

4.4.cadvisor监控指标页面

访问http://宿主机的ip:8080/metrics即可
在这里插入图片描述

5.prometheus添加cadvisor监控

5.1.prometheus安装

二进制安装详细看上一篇文章
docker安装
[root@prometheus-server ~]# docker run -d -p9090:9090  -v /data/prom/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus:latest 

5.1.修改prometheus配置文件

1.修改配置文件增加docker监控cadvisor
[root@prometheus-server ~]# vim /etc/prometheus/prometheus.yml 
  - job_name: "docker"
    static_configs:
    - targets: ['192.168.81.220:8080','192.168.81.230:8080']
2.刷新配置
[root@prometheus-server ~]# curl -X POST http://127.0.0.1:9090/-/reload

docker监控主机已经UP

在这里插入图片描述

查看监控项,关于container开头的都是监控

在这里插入图片描述

6.prometheus+grafana实现docker容器的监控图形展现

6.1.安装grafana

[root@prometheus-server ~]# rpm -ivh grafana-6.3.2-1.x86_64.rpm 
[root@prometheus-server ~]# systemctl start grafana-server
[root@prometheus-server ~]# systemctl enable grafana-server

访问http://服务器地址:3000

在这里插入图片描述

6.1.添加prometheus数据源

点击Add data source

在这里插入图片描述

选择prometheus

在这里插入图片描述

填写prometheus地址

在这里插入图片描述

6.2.导入docker监控图形模板

6.2.1.点击+号—import

在这里插入图片描述

6.2.2.填写监控模板id

在这里填写上监控模板的id号,193号docker监控模板比较不错

在这里插入图片描述

6.2.3.选择prometheus源

填写完id号之后,会自动找到对应的模板

选择对应的prometheus源之后点击import

在这里插入图片描述

6.3.查看图形

选择Docker monitoring

在这里插入图片描述

这个模板美中不足的是看不到具体一台主机上的容器,而是把所有docker主机的容器全部都列在这里了
在这里插入图片描述

7.可以选docker主机的模板导入

终于在grafana找到了一款可以选择主机的docker监控模板

下载地址https://grafana.com/api/dashboards/8321/revisions/3/download

导入后张这个颜值
在这里插入图片描述

8.最终效果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44953658/article/details/111629225
今日推荐