docker swarm集群的监控方案很多,cAdvisor+InfluxDB+Grafana方案功能强大灵活。最重要的是这个方案开源、免费、易用,是不花钱版监控方案。参考文档:https://botleg.com/stories/monitoring-docker-swarm-with-cadvisor-influxdb-and-grafana/
组件说明
cAdvisor:数据收集模块,需要部署在集群中的每一个节点上,当然前提条件是节点接受task。在本次实验中,共有三个节点,因为其中一个节点做过drain,不接受任何task调度,所以最后结果是部署在两个节点上。
InfluxDB:数据存储模块。
Grafana:数据展示模块
环境准备
docker版本:18.04.0 CE。
创建docker compose文件
在manager结点上创建文件,并输入如下内容:
部署容器栈
在manager节点上执行如下命令:
docker stack services monitor
如下图所示:
当红框中的数字前后匹配时,代表容器栈完成部署,再执行后序步骤。
创建名称为cadvisor数据库存储数据
执行如下命令,确认monitor_cadvisor服务运行的node:
docker service ps monitor_influx
结果如下图红框所示:
设置Grafana
因为Grafana被部署在了worker1节点上,在浏览器中访问http://192.168.30.40:3000,使用默认的用户名密码:adminadmin,如下图:
点击"Add data source"添加数据源。如下图所示,按图中红框填写,其它项忽略:
主机监控dashboard:
redis-export:
rabbitmq-export:
2、export部署
// 下载:
mysql-export
mysqld_exporter需要连接到Mysql,所以需要Mysql的权限,我们先为它创建用户并赋予所需的权限:
创建.my.cnf文件并运行mysqld_exporter:
$ docker pull prom/mysqld-exporter
mysqld_exporter需要连接到mysql,需要mysql的权限,需要先为他创建用户并赋予所需的权限:
zookeeper