从来好事天生俭,自古瓜儿苦后甜。这篇文章主要讲述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、内存使用率以及每台主机上运行容器的数量
![Prometheus+Grafana监控系统配合Cadvisor监控Docker容器 #yyds干货盘点#](http://img.readke.com/220608/0242321558-0.jpg)
文章图片
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 |
1.获取镜像源
wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.reposed -i s#download.docker.com#mirrors.tuna.tsinghua.edu.cn/docker-ce# /etc/yum.repos.d/docker-ce.repo yum makecache fast2.安装docker
yum -y install docker-ce
systemctl start docker
systemctl enable docker3.配置镜像加速器
tee /etc/docker/daemon.json <
<
-EOF"registry-mirrors": ["https://zggyaen3.mirror.aliyuncs.com"]EOF4.启动docker
systemctl restart docker5.简单运行一个容器
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镜像
![Prometheus+Grafana监控系统配合Cadvisor监控Docker容器 #yyds干货盘点#](http://img.readke.com/220608/0242321051-1.jpg)
文章图片
4.2.访问cadvisor查看监控数据
访问http://宿主机的ip:8080j即可
![Prometheus+Grafana监控系统配合Cadvisor监控Docker容器 #yyds干货盘点#](http://img.readke.com/220608/02423221N-2.jpg)
文章图片
4.3.查看某一个容器的监控信息
点击首页/docker,跳转进去后,可以看到subcontainers下面容器列表,下面显示的都是容器id,可以用docker ps看到具体的容器
![Prometheus+Grafana监控系统配合Cadvisor监控Docker容器 #yyds干货盘点#](http://img.readke.com/220608/02423262R-3.jpg)
文章图片
打开后即可看到具体的某个容器监控指标
![Prometheus+Grafana监控系统配合Cadvisor监控Docker容器 #yyds干货盘点#](http://img.readke.com/220608/024232L37-4.jpg)
文章图片
也可以看到图像
![Prometheus+Grafana监控系统配合Cadvisor监控Docker容器 #yyds干货盘点#](http://img.readke.com/220608/0242322534-5.jpg)
文章图片
4.4.cadvisor监控指标页面
访问http://宿主机的ip:8080/metrics即可
![Prometheus+Grafana监控系统配合Cadvisor监控Docker容器 #yyds干货盘点#](http://img.readke.com/220608/0242323437-6.jpg)
文章图片
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
![Prometheus+Grafana监控系统配合Cadvisor监控Docker容器 #yyds干货盘点#](http://img.readke.com/220608/024232E18-7.jpg)
文章图片
查看监控项,关于container开头的都是监控
![Prometheus+Grafana监控系统配合Cadvisor监控Docker容器 #yyds干货盘点#](http://img.readke.com/220608/0242322R4-8.jpg)
文章图片
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
![Prometheus+Grafana监控系统配合Cadvisor监控Docker容器 #yyds干货盘点#](http://img.readke.com/220608/0242321Q6-9.jpg)
文章图片
6.1.添加prometheus数据源
点击Add data source
![Prometheus+Grafana监控系统配合Cadvisor监控Docker容器 #yyds干货盘点#](http://img.readke.com/220608/0242325G4-10.jpg)
文章图片
选择prometheus
![Prometheus+Grafana监控系统配合Cadvisor监控Docker容器 #yyds干货盘点#](http://img.readke.com/220608/0242325561-11.jpg)
文章图片
填写prometheus地址
![Prometheus+Grafana监控系统配合Cadvisor监控Docker容器 #yyds干货盘点#](http://img.readke.com/220608/0242323F0-12.jpg)
文章图片
6.2.导入docker监控图形模板
6.2.1.点击+号---import
![Prometheus+Grafana监控系统配合Cadvisor监控Docker容器 #yyds干货盘点#](http://img.readke.com/220608/0242325247-13.jpg)
文章图片
6.2.2.填写监控模板id在这里填写上监控模板的id号,193号docker监控模板比较不错
![Prometheus+Grafana监控系统配合Cadvisor监控Docker容器 #yyds干货盘点#](http://img.readke.com/220608/0242326349-14.jpg)
文章图片
6.2.3.选择prometheus源【Prometheus+Grafana监控系统配合Cadvisor监控Docker容器 #yyds干货盘点#】填写完id号之后,会自动找到对应的模板
选择对应的prometheus源之后点击import
![Prometheus+Grafana监控系统配合Cadvisor监控Docker容器 #yyds干货盘点#](http://img.readke.com/220608/0242324607-15.jpg)
文章图片
6.3.查看图形
选择Docker monitoring
![Prometheus+Grafana监控系统配合Cadvisor监控Docker容器 #yyds干货盘点#](http://img.readke.com/220608/0242321P8-16.jpg)
文章图片
这个模板美中不足的是看不到具体一台主机上的容器,而是把所有docker主机的容器全部都列在这里了
![Prometheus+Grafana监控系统配合Cadvisor监控Docker容器 #yyds干货盘点#](http://img.readke.com/220608/02423223S-17.jpg)
文章图片
7.可以选docker主机的模板导入终于在grafana找到了一款可以选择主机的docker监控模板
下载地址https://grafana.com/api/dashboards/8321/revisions/3/download
导入后张这个颜值
![Prometheus+Grafana监控系统配合Cadvisor监控Docker容器 #yyds干货盘点#](http://img.readke.com/220608/024232I09-18.jpg)
文章图片
8.最终效果
![Prometheus+Grafana监控系统配合Cadvisor监控Docker容器 #yyds干货盘点#](http://img.readke.com/220608/02423240Q-19.jpg)
文章图片
推荐阅读
- #yyds干货盘点# 08 MySQL限制查询
- 详解Tensorboard及使用教程
- #yyds干货盘点#MySQL学习-为啥有时候事务的隔离没有生效
- Android技术分享| Android 自定义View多人视频通话控件
- vivo全球商城全球化演进之路——多语言解决方案
- HarmonyOS-基于canvas绘制复古钟表
- #yyds干货盘点# 基于STM32+ESP8266+华为云设计的智能家居控制系统
- #yyds干货盘点# 超全面Git知识总结!
- XtraBackup实现MySQL数据库全量+增量+Binlog恢复库