Prometheus+Grafana监控系统配合Cadvisor监控Docker容器 #yyds干货盘点#

Posted 江晓龙的技术博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Prometheus+Grafana监控系统配合Cadvisor监控Docker容器 #yyds干货盘点#相关的知识,希望对你有一定的参考价值。

prometheus使用cadvisor监控docker容器

@[toc]

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、磁盘、网卡

最终配合和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.最终效果

以上是关于Prometheus+Grafana监控系统配合Cadvisor监控Docker容器 #yyds干货盘点#的主要内容,如果未能解决你的问题,请参考以下文章

使用nvidia_gpu_expoter配合prometheus+grafana监控GPU性能

Prometheus配合Alertmanager报警系统

Docker下Prometheus和Grafana三部曲之一:极速体验

Prometheus + consul + grafana 监控体系搭建1

Prometheus + consul + grafana 监控体系搭建1

Prometheus + Grafana 监控系统搭