网上一大堆关于docker监控的工具和案例,这章主要说下如何通过cadvisor+node_exporter+prometheus完成对docker及主机的监控,并且通过grafana来完成监控数据的展示。
简述下今天用到的几个组件,其中node_exporter是用来监控主机信息的,cadvisor是用来监控容器信息的,这俩组件对于prometheus而言都是采集器的作用,prometheus会收集这些采集器的监控数据,存储到内置的数据库中,后续可以通过Prometheus表达式来进行过滤查看等操作(这篇不作为重点讲),最后Grafana 会对接Prometheus,将监控数据通过Web UI的方式展示出来。
环境准备
先说下我本地的环境:
主机名 | IP地址 | 已运行docker容器 |
---|---|---|
slions_pc1 | 192.168.100.10 | slions_nginx1;slions_busybox1 |
slions_pc2 | 192.168.100.11 | slions_nginx2;slions_busybox2 |
准备了2台机器,并且上面已经启动了一些容器。
安装node_exporter
2台机器都执行以下命令(–name处根据自己喜好改):
1 | [root@slions_pc1 ~]# docker run -d \ |
安装好后可以检查下node_exporter默认的监听端口是否存在,如下说明正常
1 | [root@slions_pc1 ~]# ss -lntp|grep 9100 |
可以使用chrome访问下,出现如下则说明成功,如果你使用浏览器刷不出来数据请先确保防火墙是否关闭。
安装cadvisor
2台机器都执行以下命令(–name处根据自己喜好改):
1 | [root@slions_pc1 ~]# docker run \ |
安装好后可以检查下node_exporter默认的监听端口是否存在,如下说明正常
1 | [root@slions_pc1 ~]# ss -lntp|grep 8080 |
同样我们可以使用chrome访问下主机的8080,如图出现了cadvisor的监控数据。
安装prometheus
选择第一台机器作为prometheus服务端,prometheus服务需要通过配置文件来读取监控目标,我们先在本地编写配置文件,后续通过挂载的方式置入服务中:
1 | [root@slions_pc1 ~]# cat prometheus/prometheus.yml |
启动Prometheus服务:
1 | [root@slions_pc1 ~]# docker run -d -p 9090:9090 --volume /root/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml --name slions_prometheus --network host prom/prometheus |
验证服务是否正常启动:
1 | [root@slions_pc1 ~]# ss -lntp|grep 9090 |
chrome访问http://192.168.100.10:9090
可以看到已经出现了prometheus的页面
点击Status
中的Targets
按钮,会发现正是我们配置的那几个监控目标
安装grafana
在第一台机器部署grafana,启动时设置登录密码
1 | [root@slions_pc1 ~]# docker run -itd --name slions_grafana -p 3000:3000 -e "GF_SERVER_ROOT_URL=http://grafana.server.name" -e "GF_SECURITY_ADMIN_PASSWORD=slions" --network host grafana/grafana |
查看服务是否正常:
1 | [root@slions_pc1 ~]# ss -lntp|grep 3000 |
使用浏览器查看,用户名为admin,密码是我启动服务时设置的slions
选择DATA SOURCES
来添加数据源:
选择Prometheus后,将URL填写上我们自己的服务地址就可以保存了:
我们可以直接找一个合适的模板来导入
模板在grafana官网找就好:
比如我找到一个看起来不错的模板,点击Download JSON下载到本地
然后在import页面导入此JSON文件就好了,选择生效于我们刚创建好的slions_Prometheus:
最后让我们看一下监控的效果吧。
参考文档
cadvisor: https://github.com/google/cadvisor
node_exporter: https://github.com/prometheus/node_exporter
prometheus: https://github.com/prometheus/prometheus 、https://prometheus.io/
grafana: https://grafana.com/docs/grafana/latest/installation/docker/