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性能
Docker下Prometheus和Grafana三部曲之一:极速体验
Prometheus + consul + grafana 监控体系搭建1